about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/call-machine.nix107
-rw-r--r--release.nix5
2 files changed, 61 insertions, 51 deletions
diff --git a/lib/call-machine.nix b/lib/call-machine.nix
index ba38b40c..8c50ce16 100644
--- a/lib/call-machine.nix
+++ b/lib/call-machine.nix
@@ -1,66 +1,73 @@
 path: cfg:
 
 let
-  nixpkgs = import ../nixpkgs-path.nix;
+  withPkgsPath = nixpkgs: rec {
+    eval = import "${nixpkgs}/nixos/lib/eval-config.nix" {
+      modules = [ path cfg ] ++ import ../modules/module-list.nix;
+    };
 
-  eval = import "${nixpkgs}/nixos/lib/eval-config.nix" {
-    modules = [ path cfg ] ++ import ../modules/module-list.nix;
-  };
+    build = eval.config.system.build.toplevel;
 
-  iso = mkIso "installer/cd-dvd/iso-image.nix" (
-    { lib, ... }: let
-      name = eval.config.networking.hostName;
-      upperName = lib.toUpper name;
-    in rec {
-      isoImage.isoName = "${name}.iso";
-      isoImage.volumeID = builtins.substring 0 11 "${upperName}_LIVE";
-      isoImage.makeEfiBootable = true;
-      isoImage.makeUsbBootable = true;
-      isoImage.appendToMenuLabel = " \"${name}\" Live System";
-    }
-  );
+    iso = mkIso "installer/cd-dvd/iso-image.nix" (
+      { lib, ... }: let
+        name = eval.config.networking.hostName;
+        upperName = lib.toUpper name;
+      in rec {
+        isoImage.isoName = "${name}.iso";
+        isoImage.volumeID = builtins.substring 0 11 "${upperName}_LIVE";
+        isoImage.makeEfiBootable = true;
+        isoImage.makeUsbBootable = true;
+        isoImage.appendToMenuLabel = " \"${name}\" Live System";
+      }
+    );
 
-  installerIso = mkIso "installer/cd-dvd/installation-cd-minimal.nix" {
-    environment.sessionVariables = {
-      NIX_PATH = [ "vuizvui=${../.}" ];
+    installerIso = mkIso "installer/cd-dvd/installation-cd-minimal.nix" {
+      environment.sessionVariables = {
+        NIX_PATH = [ "vuizvui=${../.}" ];
+      };
     };
-  };
 
-  mkIso = isoModule: extraConfig: let
-    wrapIso = { config, pkgs, lib, ... }@attrs: let
-      isoEval = import "${nixpkgs}/nixos/modules/${isoModule}" attrs;
-      isoEvalcfg = isoEval.config or {};
-      bootcfg = isoEvalcfg.boot or {};
-      fscfg = isoEvalcfg.fileSystems or {};
-    in {
-      options = isoEval.options or {};
-      imports = (isoEval.imports or []) ++ [ extraConfig ];
-      config = isoEvalcfg // {
-        boot = bootcfg // lib.optionalAttrs (bootcfg ? loader) {
-          loader = lib.mkForce bootcfg.loader;
-        };
-        fileSystems = lib.mapAttrs (lib.const lib.mkForce) fscfg // {
-          "/boot" = lib.mkForce (fscfg."/boot" or {
-            device = "none";
-            fsType = "none";
-            options = [ "noauto" ];
-          });
+    mkIso = isoModule: extraConfig: let
+      wrapIso = { config, pkgs, lib, ... }@attrs: let
+        isoEval = import "${nixpkgs}/nixos/modules/${isoModule}" attrs;
+        isoEvalcfg = isoEval.config or {};
+        bootcfg = isoEvalcfg.boot or {};
+        fscfg = isoEvalcfg.fileSystems or {};
+      in {
+        options = isoEval.options or {};
+        imports = (isoEval.imports or []) ++ [ extraConfig ];
+        config = isoEvalcfg // {
+          boot = bootcfg // lib.optionalAttrs (bootcfg ? loader) {
+            loader = lib.mkForce bootcfg.loader;
+          };
+          fileSystems = lib.mapAttrs (lib.const lib.mkForce) fscfg // {
+            "/boot" = lib.mkForce (fscfg."/boot" or {
+              device = "none";
+              fsType = "none";
+              options = [ "noauto" ];
+            });
+          };
         };
       };
+    in import "${nixpkgs}/nixos/lib/eval-config.nix" {
+      modules = [ config wrapIso ];
+    };
+
+    config = {
+      imports = [ path cfg ] ++ import ../modules/module-list.nix;
     };
-  in import "${nixpkgs}/nixos/lib/eval-config.nix" {
-    modules = [ config wrapIso ];
-  };
 
-  config = {
-    imports = [ path cfg ] ++ import ../modules/module-list.nix;
+    vm = (import "${nixpkgs}/nixos" {
+      configuration = config;
+    }).vm;
   };
 
-  vm = (import "${nixpkgs}/nixos" {
-    configuration = config;
-  }).vm;
+in rec {
+  inherit (withPkgsPath (import ../nixpkgs-path.nix))
+    build config eval iso installerIso vm;
 
-in {
-  build = eval.config.system.build.toplevel;
-  inherit config eval iso installerIso vm;
+  # This is internal only and for use with restricted evaluation mode in Hydra
+  # to get the path to nixpkgs from the jobset input args instead of
+  # ../nixpkgs-path.nix.
+  inherit withPkgsPath;
 }
diff --git a/release.nix b/release.nix
index 2b74f2e5..46e1edf2 100644
--- a/release.nix
+++ b/release.nix
@@ -38,7 +38,10 @@ let
   root = import vuizvui { inherit system; };
 
   mpath = if vuizvuiSrc == null then ./machines else "${vuizvui}/machines";
-  allMachines = import mpath;
+
+  allMachines = with pkgsUpstream.lib; let
+    wrapPkgs = machine: machine.withPkgsPath nixpkgs;
+  in mapAttrsRecursiveCond (m: !(m ? eval)) (const wrapPkgs) (import mpath);
 
   allTests = with import ./lib; getVuizvuiTests ({
     inherit system nixpkgs;