anchor.diff:        '';
       };
   
  -    # TODO make real
  -    ghcjs8_0Packages = nixpkgs.callPackage (nixpkgs.path + "/pkgs/development/haskell-modules") {
  -      ghc = ghc8_2.ghcjs;
  -      buildHaskellPackages = ghc8_2.ghcjs.bootPkgs;
  -      compilerConfig = nixpkgs.callPackage (nixpkgs.path + "/pkgs/development/haskell-modules/configuration-ghc-8.2.x.nix") { inherit haskellLib; };
  -      packageSetConfig = nixpkgs.callPackage (nixpkgs.path + "/pkgs/development/haskell-modules/configuration-ghcjs.nix") { inherit haskellLib; };
  -      inherit haskellLib;
  -    };
  -    ghcjs8_2Packages = nixpkgs.callPackage (nixpkgs.path + "/pkgs/development/haskell-modules") {
  -      ghc = ghc8_2.ghcjs;
  -      buildHaskellPackages = ghc8_2.ghcjs.bootPkgs;
  -      compilerConfig = nixpkgs.callPackage (nixpkgs.path + "/pkgs/development/haskell-modules/configuration-ghc-8.2.x.nix") { inherit haskellLib; };
  -      packageSetConfig = nixpkgs.callPackage (nixpkgs.path + "/pkgs/development/haskell-modules/configuration-ghcjs.nix") { inherit haskellLib; };
  -      inherit haskellLib;
  -    };
  -    ghcjs8_4Packages = nixpkgs.callPackage (nixpkgs.path + "/pkgs/development/haskell-modules") {
  -      ghc = ghc8_4.ghcjs;
  -      buildHaskellPackages = ghc8_4.ghcjs.bootPkgs;
  -      compilerConfig = nixpkgs.callPackage (nixpkgs.path + "/pkgs/development/haskell-modules/configuration-ghc-8.4.x.nix") { inherit haskellLib; };
  -      packageSetConfig = nixpkgs.callPackage (nixpkgs.path + "/pkgs/development/haskell-modules/configuration-ghcjs.nix") { inherit haskellLib; };
  -      inherit haskellLib;
  -    };
  -
     ghcjs = ghcjs8_4;
  -  ghcjs8_4 = (makeRecursivelyOverridable ghcjs8_4Packages).override {
  -    overrides = nixpkgs.haskell.overlays.combined;
  -  };
  -  ghcjs8_2 = (makeRecursivelyOverridable ghcjs8_2Packages).override {
  -    overrides = nixpkgs.haskell.overlays.combined;
  -  };
  -  ghcjs8_0 = (makeRecursivelyOverridable ghcjs8_0Packages).override {
  +  ghcjs8_4 = (makeRecursivelyOverridable (nixpkgs.haskell.packages.ghcjs84.override (old: {
  +    ghc = useTextJSStringAsBootPkg (ghcjsApplyFastWeak (old.ghc.override {
  +      ghcjsSrc = fetchgit {
  +        url = "https://github.com/obsidiansystems/ghcjs.git";
  +        rev = "584eaa138c32c5debb3aae571c4153d537ff58f1";
  +        sha256 = "1ib0vsv2wrwf5iivnq6jw2l9g5izs0fjpp80jrd71qyywx4xcm66";
  +        fetchSubmodules = true;
  +      };
  +    }));
  +  }))).override {
  +    overrides = nixpkgs.haskell.overlays.combined;
  +  };
  +  ghcjs8_2 = (makeRecursivelyOverridable (nixpkgs.haskell.packages.ghcjs82.override (old: {
  +    ghc = ghcjsApplyFastWeak old.ghc;
  +  }))).override {
  +    overrides = nixpkgs.haskell.overlays.combined;
  +  };
  +  ghcjs8_0 = (makeRecursivelyOverridable nixpkgs.haskell.packages.ghcjs80).override {
       overrides = nixpkgs.haskell.overlays.combined;
     };
   
  
positive.code:     overrides = nixpkgs.haskell.overlays.combined;
    };
    ghc8_4 = (makeRecursivelyOverridable nixpkgs.haskell.packages.ghc843).override {
      overrides = lib.foldr lib.composeExtensions (_: _: {}) (let
        haskellOverlays = nixpkgs.haskell.overlays;
      in [
        nixpkgs.haskell.overlays.combined
        (ghcjsPkgs (useTextJSStringAsBootPkg (nixpkgs.haskell.compiler.ghcjs84.override {
          ghcjsSrc = fetchgit {
            url = "https://github.com/obsidiansystems/ghcjs.git";
            rev = "584eaa138c32c5debb3aae571c4153d537ff58f1";
            sha256 = "1ib0vsv2wrwf5iivnq6jw2l9g5izs0fjpp80jrd71qyywx4xcm66";
            fetchSubmodules = true;
          };
        })))
      ]);
    };
    ghc8_2 = (makeRecursivelyOverridable nixpkgs.haskell.packages.ghc822).override {
      overrides = lib.foldr lib.composeExtensions (_: _: {}) (let
        haskellOverlays = nixpkgs.haskell.overlays;
      in [
        nixpkgs.haskell.overlays.combined
        (ghcjsPkgs nixpkgs.haskell.compiler.ghcjs82)
      ]);
    };
    ghc8_0 = (makeRecursivelyOverridable nixpkgs.haskell.packages.ghc802).override {
      overrides = nixpkgs.haskell.overlays.combined;
  
negative.code:       sha256 = null;
      });
  
      ghcjsApplyFastWeak = ghcjs: ghcjs.overrideAttrs (drv: {
        patches = (drv.patches or [])
          ++ lib.optional useFastWeak ./fast-weak.patch;
        phases = [ "unpackPhase" "patchPhase" "buildPhase" ];
      });
      useTextJSStringAsBootPkg = ghcjs: if !useTextJSString then ghcjs else ghcjs.overrideAttrs (_: {
        postUnpack = ''
          set -x
  