diff --git a/ci/eval/outpaths.nix b/ci/eval/outpaths.nix index 4efe8d1dc061..b4988e844e8e 100644 --- a/ci/eval/outpaths.nix +++ b/ci/eval/outpaths.nix @@ -14,7 +14,8 @@ }: let lib = import (path + "/lib"); - hydraJobs = + + nixpkgsJobs = import (path + "/pkgs/top-level/release.nix") # Compromise: accuracy vs. resources needed for evaluation. { @@ -59,9 +60,15 @@ let __allowFileset = false; }; }; + + nixosJobs = import (path + "/nixos/release.nix") { + inherit attrNamesOnly; + supportedSystems = if systems == null then [ builtins.currentSystem ] else systems; + }; + recurseIntoAttrs = attrs: attrs // { recurseForDerivations = true; }; - # hydraJobs leaves recurseForDerivations as empty attrmaps; + # release-lib leaves recurseForDerivations as empty attrmaps; # that would break nix-env and we also need to recurse everywhere. tweak = lib.mapAttrs ( name: val: @@ -87,4 +94,9 @@ let ]; in -tweak (builtins.removeAttrs hydraJobs blacklist) +tweak ( + (builtins.removeAttrs nixpkgsJobs blacklist) + // { + nixosTests.simple = nixosJobs.tests.simple; + } +) diff --git a/nixos/release.nix b/nixos/release.nix index 207d76704b5e..c4a9be293743 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -12,6 +12,16 @@ with import ../lib; "aarch64-linux" ], configuration ? { }, + + # This flag, if set to true, causes the resulting tree of attributes + # to *not* have a ".${system}" suffixed upon every job name like Hydra + # expects. So far, this is only implemented for `tests`. + # + # This flag exists mainly for use by ci/eval/attrpaths.nix; see + # that file for full details. The exact behavior of this flag + # may change; it should be considered an internal implementation + # detail of ci/eval. + attrNamesOnly ? false, }: with import ../pkgs/top-level/release-lib.nix { inherit supportedSystems; }; @@ -31,9 +41,14 @@ let import ./tests/all-tests.nix { inherit system; pkgs = import ./.. { inherit system; }; - callTest = config: { - ${system} = hydraJob config.test; - }; + callTest = + config: + if attrNamesOnly then + hydraJob config.test + else + { + ${system} = hydraJob config.test; + }; } // { # for typechecking of the scripts and evaluation of @@ -41,13 +56,20 @@ let allDrivers = import ./tests/all-tests.nix { inherit system; pkgs = import ./.. { inherit system; }; - callTest = config: { - ${system} = hydraJob config.driver; - }; + callTest = + config: + if attrNamesOnly then + hydraJob config.test + else + { + ${system} = hydraJob config.driver; + }; }; }; - allTests = foldAttrs recursiveUpdate { } (map allTestsForSystem supportedSystems); + allTests = foldAttrs recursiveUpdate { } ( + map allTestsForSystem (if attrNamesOnly then [ (head supportedSystems) ] else supportedSystems) + ); pkgs = import ./.. { system = "x86_64-linux"; };