anchor.diff:          []);
       in if res.success then res.value else []
       );
  -
  -
  -  /* Common platform groups on which to test packages. */
  -  inherit (platforms) unix linux allBut all;
  -
   }
  
positive.code: { supportedSystems
  , packageSet ? (import ./all-packages.nix)
  , allowTexliveBuilds ? false
  , scrubJobs ? true
  }:
  
  with import ../../lib;
  
  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}";
  
    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 = [ ];
  
  
    /* Build a package on the given set of platforms.  The function `f'
       is called for each supported platform with Nixpkgs for that
  
negative.code:   testOn = systems: f: genAttrs
      (filter (x: elem x supportedSystems) systems) (system: hydraJob' (f (pkgsFor system)));
  
    /* 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));
  
    /* Recursively map a (nested) set of derivations to an isomorphic
       set of meta.platforms values. */
  