anchor.diff:        ghcjs = hackGet ./ghcjs;
       };
   
  -    inherit (nixpkgs.stdenv.lib) optional optionals optionalAttrs;
  -
       optionalExtension = cond: overlay: if cond then overlay else _: _: {};
   
  -in with lib; with haskellLib;
  -
  -let overrideCabal = pkg: f: if pkg == null then null else haskellLib.overrideCabal pkg f;
  +    overrideCabal = pkg: f: if pkg == null then null else haskellLib.overrideCabal pkg f;
   
       replaceSrc = pkg: src: version: overrideCabal pkg (drv: {
         inherit src version;
  
positive.code:           "testSystemDepends"
            "testToolDepends"
          ];
          concatCombinableAttrs = haskellConfigs: filterAttrs (n: v: v != []) (listToAttrs (map (name: { inherit name; value = concatLists (map (haskellConfig: haskellConfig.${name} or []) haskellConfigs); }) combinableAttrs));
          getHaskellConfig = p: (overrideCabal p (args: {
            passthru = (args.passthru or {}) // {
              out = args;
  
negative.code:         notInTargetPackageSet = p: all (pname: (p.pname or "") != pname) packageNames;
          baseTools = generalDevToolsAttrs env;
          overriddenTools = attrValues (baseTools // shellToolOverrides env baseTools);
          depAttrs = lib.mapAttrs (_: v: filter notInTargetPackageSet v) (concatCombinableAttrs (concatLists [
            (map getHaskellConfig (lib.attrVals packageNames env))
            [{
              buildTools = overriddenTools ++ tools env;
            }]
  