Merge pull request #33749 from dezgeg/release-refactor-1

nixos/release.nix: Refactoring for better multi-system support

Changed files
+16 -25
nixos
pkgs
+11 -21
nixos/release.nix
···
, supportedSystems ? [ "x86_64-linux" "aarch64-linux" ]
}:
+
with import ../pkgs/top-level/release-lib.nix { inherit supportedSystems; };
with import ../lib;
let
···
version = fileContents ../.version;
versionSuffix =
(if stableBranch then "." else "pre") + "${toString nixpkgs.revCount}.${nixpkgs.shortRev}";
-
-
forAllSystems = genAttrs supportedSystems;
importTest = fn: args: system: import fn ({
inherit system;
···
# Build the initial ramdisk so Hydra can keep track of its size over time.
initialRamdisk = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.initialRamdisk);
-
netboot = {
-
x86_64-linux = makeNetboot {
-
system = "x86_64-linux";
-
modules = [
-
./modules/installer/netboot/netboot-minimal.nix
-
versionModule
-
];
-
};
-
} // (optionalAttrs (elem "aarch64-linux" supportedSystems) {
-
aarch64-linux = makeNetboot {
-
system = "aarch64-linux";
-
modules = [
-
./modules/installer/netboot/netboot-minimal.nix
-
versionModule
-
];
-
};});
+
netboot = forTheseSystems [ "x86_64-linux" "aarch64-linux" ] (system: makeNetboot {
+
inherit system;
+
modules = [
+
./modules/installer/netboot/netboot-minimal.nix
+
versionModule
+
];
+
});
iso_minimal = forAllSystems (system: makeIso {
module = ./modules/installer/cd-dvd/installation-cd-minimal.nix;
···
inherit system;
});
-
iso_graphical = genAttrs [ "x86_64-linux" ] (system: makeIso {
+
iso_graphical = forTheseSystems [ "x86_64-linux" ] (system: makeIso {
module = ./modules/installer/cd-dvd/installation-cd-graphical-kde.nix;
type = "graphical";
inherit system;
···
# A variant with a more recent (but possibly less stable) kernel
# that might support more hardware.
-
iso_minimal_new_kernel = genAttrs [ "x86_64-linux" ] (system: makeIso {
+
iso_minimal_new_kernel = forTheseSystems [ "x86_64-linux" ] (system: makeIso {
module = ./modules/installer/cd-dvd/installation-cd-minimal-new-kernel.nix;
type = "minimal-new-kernel";
inherit system;
···
# A bootable VirtualBox virtual appliance as an OVA file (i.e. packaged OVF).
-
ova = genAttrs [ "x86_64-linux" ] (system:
+
ova = forTheseSystems [ "x86_64-linux" ] (system:
with import nixpkgs { inherit system; };
+1 -1
pkgs/top-level/release-cross.nix
···
f (["buildPackages"] ++ path) { inherit system crossSystem; }
);
-
testEqual = path: systems: forAllSupportedSystems systems (testEqualOne path);
+
testEqual = path: systems: forTheseSystems systems (testEqualOne path);
mapTestEqual = lib.mapAttrsRecursive testEqual;
+4 -3
pkgs/top-level/release-lib.nix
···
interested in the result of cross building a package. */
crossMaintainers = [ maintainers.viric ];
-
forAllSupportedSystems = systems: f:
+
forAllSystems = genAttrs supportedSystems;
+
forTheseSystems = systems: f:
genAttrs (filter (x: elem x supportedSystems) systems) f;
/* Build a package on the given set of platforms. The function `f'
···
platform as an argument . We return an attribute set containing
a derivation for each supported platform, i.e. ‘{ x86_64-linux =
f pkgs_x86_64_linux; i686-linux = f pkgs_i686_linux; ... }’. */
-
testOn = systems: f: forAllSupportedSystems systems
+
testOn = systems: f: forTheseSystems 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: forAllSupportedSystems systems
+
testOnCross = crossSystem: systems: f: forTheseSystems systems
(system: hydraJob' (f (allPackages { inherit system crossSystem; })));