anchor.diff:  { supportedSystems
  -, packageSet ? (import ./all-packages.nix)
  +, allPackages
   , allowTexliveBuilds ? false
   , scrubJobs ? true
   }:
   
   with import ../../lib;
   
  +let
  +  allPackages' = args: allPackages args // {
  +    config = {
  +      allowUnfree = false;
  +      inHydra = true;
  +      inherit allowTexliveBuilds;
  +    };
  +    stdenv = null;
  +  };
  +
  +  pkgs_x86_64-linux = allPackages' {
  +    targetSystem = "x86_64-linux";
  +    hostSystem = "x86_64-linux";
  +  };
  +  pkgs_i686-linux = allPackages' {
  +    targetSystem = "i686-linux";
  +    hostSystem = "x86_64-linux";
  +  };
  +in
   rec {
  -
  -  # Ensure that we don't build packages marked as unfree.
  -  allPackages = args: packageSet (args // {
  -    config.allowUnfree = false;
  -    config.allowTexliveBuilds = allowTexliveBuilds;
  -    config.inHydra = true;
  -  });
  -
  -  pkgs = pkgsFor "x86_64-linux";
  -
  -  hydraJob' = if scrubJobs then hydraJob else id;
  -
     /* !!! Hack: poor man's memoisation function.  Necessary to prevent
        Nixpkgs from being evaluated again and again for every
        job/platform pair. */
  -  pkgsFor = system:
  -    if system == "x86_64-linux" then pkgs_x86_64_linux
  -    else if system == "i686-linux" then pkgs_i686_linux
  -    else if system == "x86_64-freebsd" then pkgs_x86_64_freebsd
  -    else if system == "i686-freebsd" then pkgs_i686_freebsd
  -    else abort "unsupported system type: ${system}";
  +  pkgsFor = { targetSystem, hostSystem }:
  +    if targetSystem == "x86_64-linux" && hostSystem == "x86_64-linux" then
  +      pkgs_x86_64-linux
  +    else if targetSystem == "i686-linux" && hostSystem == "i686-linux" then
  +      pkgs_i686-linux
  +    else
  +      abort "unsupported system type: ${targetSystem} built by ${hostSystem}";
   
  -  pkgs_x86_64_linux = allPackages { system = "x86_64-linux"; };
  -  pkgs_i686_linux = allPackages { system = "i686-linux"; };
  -  pkgs_x86_64_freebsd = allPackages { system = "x86_64-freebsd"; };
  -  pkgs_i686_freebsd = allPackages { system = "i686-freebsd"; };
  -
  -
  -  /* The working or failing mails for cross builds will be sent only to
  -     the following maintainers, as most package maintainers will not be
  -     interested in the result of cross building a package. */
  -  crossMaintainers = [ ];
  -
  +  hydraJob' = if scrubJobs then hydraJob else id;
   
     /* Build a package on the given set of platforms.  The function `f'
        is called for each supported platform with Nixpkgs for that
  
positive.code:   testOn = systems: f: genAttrs
      (filter (x: elem x supportedSystems) systems) (system: hydraJob' (f (pkgsFor system)));
  
  
    /* Similar to the testOn function, but with an additional
       'crossSystem' parameter for allPackages, defining the target
       platform for cross builds. */
    testOnCross = crossSystem: systems: f: {system ? builtins.currentSystem}:
      if elem system systems
      then f (allPackages { inherit system crossSystem; })
      else {};
  
  
    /* Given a nested set where the leaf nodes are lists of platforms,
       map each leaf node to `testOn [platforms...] (pkgs:
       pkgs.<attrPath>)'. */
    mapTestOn = mapAttrsRecursive
      (path: systems: testOn systems (pkgs: getAttrFromPath path pkgs));
  
  
    /* Similar to the testOn function, but with an additional 'crossSystem'
     * parameter for allPackages, defining the target platform for cross builds,
     * and triggering the build of the host derivation (cross built - crossDrv). */
    mapTestOnCross = crossSystem: mapAttrsRecursive
      (path: systems: testOnCross crossSystem systems
        (pkgs: addMetaAttrs { maintainers = crossMaintainers; } (getAttrFromPath path pkgs)));
  
  
    /* Recursively map a (nested) set of derivations to an isomorphic
       set of meta.platforms values. */
  
negative.code:         []);
      in if res.success then res.value else []
      );
  }
  