anchor.diff:  #    ghcjsPackages = nixpkgs.haskell.packages.ghcjs.override {
   #      ghc = builtins.trace "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ghcjsCompiler;
   #    };
  -  ghcjs = (extendHaskellPackages ghcjsPackages).override {
  -    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +  ghcjs = (makeRecursivelyOverridable ghcjsPackages).override {
  +    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +      extendHaskellPackages
         (optionalExtension enableExposeAllUnfoldings haskellOverlays.exposeAllUnfoldings)
         haskellOverlays.ghcjs
         (optionalExtension useTextJSString haskellOverlays.textJSString)
       ];
     };
  -  ghcHEAD = (extendHaskellPackages nixpkgs.pkgs.haskell.packages.ghcHEAD).override {
  -    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +  ghcHEAD = (makeRecursivelyOverridable nixpkgs.pkgs.haskell.packages.ghcHEAD).override {
  +    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +      extendHaskellPackages
         (optionalExtension enableExposeAllUnfoldings haskellOverlays.exposeAllUnfoldings)
         haskellOverlays.ghc-head
       ];
     };
  -  ghc8_2_1 = (extendHaskellPackages nixpkgs.pkgs.haskell.packages.ghc821).override {
  -    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +  ghc8_2_1 = (makeRecursivelyOverridable nixpkgs.pkgs.haskell.packages.ghc821).override {
  +    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +      extendHaskellPackages
         (optionalExtension enableExposeAllUnfoldings haskellOverlays.exposeAllUnfoldings)
         haskellOverlays.ghc-8_2_1
       ];
     };
  -  ghc = (extendHaskellPackages nixpkgs.pkgs.haskell.packages.ghc802).override {
  -    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +  ghc = (makeRecursivelyOverridable nixpkgs.pkgs.haskell.packages.ghc802).override {
  +    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +      extendHaskellPackages
         (optionalExtension enableExposeAllUnfoldings haskellOverlays.exposeAllUnfoldings)
         haskellOverlays.ghc-8
       ];
     };
  -  ghc7 = (extendHaskellPackages nixpkgs.pkgs.haskell.packages.ghc7103).override {
  -    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +  ghc7 = (makeRecursivelyOverridable nixpkgs.pkgs.haskell.packages.ghc7103).override {
  +    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +      extendHaskellPackages
         (optionalExtension enableExposeAllUnfoldings haskellOverlays.exposeAllUnfoldings)
         haskellOverlays.ghc-7
       ];
     };
  -  ghc7_8 = (extendHaskellPackages nixpkgs.pkgs.haskell.packages.ghc784).override {
  -    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +  ghc7_8 = (makeRecursivelyOverridable nixpkgs.pkgs.haskell.packages.ghc784).override {
  +    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +      extendHaskellPackages
         (optionalExtension enableExposeAllUnfoldings haskellOverlays.exposeAllUnfoldings)
         haskellOverlays.ghc-7_8
       ];
     };
  -  ghcAndroidArm64 = (extendHaskellPackages nixpkgsCross.android.arm64Impure.pkgs.haskell.packages.ghc821).override {
  -    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +  ghcAndroidArm64 = (makeRecursivelyOverridable nixpkgsCross.android.arm64Impure.pkgs.haskell.packages.ghc821).override {
  +    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +      extendHaskellPackages
         (optionalExtension enableExposeAllUnfoldings haskellOverlays.exposeAllUnfoldings)
         haskellOverlays.ghc-8_2_1
         haskellOverlays.disableTemplateHaskell
         haskellOverlays.android
       ];
     };
  -  ghcAndroidArmv7a = (extendHaskellPackages nixpkgsCross.android.armv7aImpure.pkgs.haskell.packages.ghc821).override {
  -    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +  ghcAndroidArmv7a = (makeRecursivelyOverridable nixpkgsCross.android.armv7aImpure.pkgs.haskell.packages.ghc821).override {
  +    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +      extendHaskellPackages
         (optionalExtension enableExposeAllUnfoldings haskellOverlays.exposeAllUnfoldings)
         haskellOverlays.ghc-8_2_1
         haskellOverlays.disableTemplateHaskell
         haskellOverlays.android
       ];
     };
  -  ghcIosSimulator64 = (extendHaskellPackages nixpkgsCross.ios.simulator64.pkgs.haskell.packages.ghc821).override {
  -    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +  ghcIosSimulator64 = (makeRecursivelyOverridable nixpkgsCross.ios.simulator64.pkgs.haskell.packages.ghc821).override {
  +    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +      extendHaskellPackages
         (optionalExtension enableExposeAllUnfoldings haskellOverlays.exposeAllUnfoldings)
         haskellOverlays.ghc-8_2_1
       ];
     };
  -  ghcIosArm64 = (extendHaskellPackages nixpkgsCross.ios.arm64.pkgs.haskell.packages.ghc821).override {
  -    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +  ghcIosArm64 = (makeRecursivelyOverridable nixpkgsCross.ios.arm64.pkgs.haskell.packages.ghc821).override {
  +    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +      extendHaskellPackages
         (optionalExtension enableExposeAllUnfoldings haskellOverlays.exposeAllUnfoldings)
         haskellOverlays.ghc-8_2_1
         haskellOverlays.disableTemplateHaskell
         haskellOverlays.ios
       ];
     };
  -  ghcIosArmv7 = (extendHaskellPackages nixpkgsCross.ios.armv7.pkgs.haskell.packages.ghc821).override {
  -    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +  ghcIosArmv7 = (makeRecursivelyOverridable nixpkgsCross.ios.armv7.pkgs.haskell.packages.ghc821).override {
  +    overrides = nixpkgs.lib.foldr nixpkgs.lib.composeExtensions (_: _: {}) [
  +      extendHaskellPackages
         (optionalExtension enableExposeAllUnfoldings haskellOverlays.exposeAllUnfoldings)
         haskellOverlays.ghc-8_2_1
         haskellOverlays.disableTemplateHaskell
  
positive.code:     addFastWeakFlag = if useFastWeak
        then drv: enableCabalFlag drv "fast-weak"
        else drv: drv;
      extendHaskellPackages = haskellPackages: makeRecursivelyOverridable haskellPackages {
        overrides = self: super:
          let reflexDom = import (hackGet ./reflex-dom) self nixpkgs;
              jsaddlePkgs = import (hackGet ./jsaddle) self;
              gargoylePkgs = self.callPackage (hackGet ./gargoyle) self;
  
negative.code:       revision = null;
        editedCabalFile = null;
      });
      combineOverrides = old: new: old // new // optionalAttrs (old ? overrides && new ? overrides) {
        overrides = nixpkgs.lib.composeExtensions old.overrides new.overrides;
      };
      makeRecursivelyOverridable = x: x // {
        override = new: makeRecursivelyOverridable (x.override (old: (combineOverrides old new)));
      };
      foreignLibSmuggleHeaders = pkg: overrideCabal pkg (drv: {
        postInstall = ''
  