anchor.diff:        };
       };
       haskellLib = nixpkgs.haskell.lib;
  -    filterGit = builtins.filterSource (path: type: !(builtins.any (x: x == baseNameOf path) [".git"]));
  +    filterGit = builtins.filterSource (path: type: !(builtins.any (x: x == baseNameOf path) [".git" "tags" "TAGS" "dist"]));
  +    # Retrieve source that is controlled by the hack-* scripts; it may be either a stub or a checked-out git repo
  +    hackGet = p:
  +      if builtins.pathExists (p + "/git.json") then (
  +        let gitArgs = builtins.fromJSON (builtins.readFile (p + "/git.json"));
  +        in if builtins.elem "@" (nixpkgs.lib.stringToCharacters gitArgs.url)
  +        then fetchgitPrivate gitArgs
  +        else fetchgit gitArgs)
  +      else if builtins.pathExists (p + "/github.json") then fetchFromGitHub (builtins.fromJSON (builtins.readFile (p + "/github.json")))
  +      else {
  +        name = baseNameOf p;
  +        outPath = filterGit p;
  +      };
       # All imports of sources need to go here, so that they can be explicitly cached
       sources = {
  -      ghcjs-boot = if builtins.pathExists ./ghcjs-boot/git.json then fetchgit (builtins.fromJSON (builtins.readFile ./ghcjs-boot/git.json)) else {
  -        name = "ghcjs-boot";
  -        outPath = filterGit ./ghcjs-boot;
  -      };
  -      shims = if builtins.pathExists ./shims/github.json then fetchFromGitHub (builtins.fromJSON (builtins.readFile ./shims/github.json)) else filterGit ./shims;
  -      ghcjs = if builtins.pathExists ./ghcjs/github.json then fetchFromGitHub (builtins.fromJSON (builtins.readFile ./ghcjs/github.json)) else filterGit ./ghcjs;
  +      ghcjs-boot = hackGet ./ghcjs-boot;
  +      shims = hackGet ./shims;
  +      ghcjs = hackGet ./ghcjs;
       };
       inherit (nixpkgs.stdenv.lib) optional optionals;
       optionalExtension = cond: overlay: if cond then overlay else _: _: {};
  
positive.code:     };
    };
  
    inherit ghcjs ghcjsCompiler;
    platforms = [
      "ghcjs"
      "ghc"
  
negative.code:     };
    };
  in let this = rec {
    inherit nixpkgs
            nixpkgsCross
            overrideCabal
            hackGet
            extendHaskellPackages
            foreignLibSmuggleHeaders
            stage2Script
            ghc
            ghcHEAD
            ghc8_2_1
            ghc8_0_1
            ghc7
            ghc7_8
            ghcIosSimulator64
            ghcIosArm64
            ghcIosArmv7
            ghcAndroidArm64
            ghcAndroidArmv7a
            ghcjs
            android
            ios
            androidWithHaskellPackages;
    androidReflexTodomvc = android.buildApp {
      package = p: p.reflex-todomvc;
      executableName = "reflex-todomvc";
  