summary refs log tree commit diff
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2021-12-02 18:07:39 +0000
committerRobert Hensing <robert@roberthensing.nl>2021-12-02 18:23:43 +0000
commit59c4a35aabbb69233a252638a63ae8f3dff3401c (patch)
tree897000cf43fe19f80da8c7fef9aba6380ceb0504
parentb37f099ae7fa01e263530754b8e23bcc8730f221 (diff)
downloadnixpkgs-59c4a35aabbb69233a252638a63ae8f3dff3401c.tar
nixpkgs-59c4a35aabbb69233a252638a63ae8f3dff3401c.tar.gz
nixpkgs-59c4a35aabbb69233a252638a63ae8f3dff3401c.tar.bz2
nixpkgs-59c4a35aabbb69233a252638a63ae8f3dff3401c.tar.lz
nixpkgs-59c4a35aabbb69233a252638a63ae8f3dff3401c.tar.xz
nixpkgs-59c4a35aabbb69233a252638a63ae8f3dff3401c.tar.zst
nixpkgs-59c4a35aabbb69233a252638a63ae8f3dff3401c.zip
nixos/eval-config: Avoid evalModules args and check parameters
-rw-r--r--nixos/lib/eval-config.nix38
1 files changed, 27 insertions, 11 deletions
diff --git a/nixos/lib/eval-config.nix b/nixos/lib/eval-config.nix
index 74b52daa3c8..0297ca4bd9d 100644
--- a/nixos/lib/eval-config.nix
+++ b/nixos/lib/eval-config.nix
@@ -8,6 +8,7 @@
 # as subcomponents (e.g. the container feature, or nixops if network
 # expressions are ever made modular at the top level) can just use
 # types.submodule instead of using eval-config.nix
+evalConfigArgs@
 { # !!! system can be set modularly, would be nice to remove
   system ? builtins.currentSystem
 , # !!! is this argument needed any more? The pkgs argument can
@@ -28,7 +29,7 @@
                  in if e == "" then [] else [(import e)]
 }:
 
-let extraArgs_ = extraArgs; pkgs_ = pkgs;
+let pkgs_ = pkgs;
 in
 
 let
@@ -51,25 +52,40 @@ let
     };
   };
 
-  noUserModules = lib.evalModules {
-    inherit prefix check;
-    modules = baseModules ++ extraModules ++ [ pkgsModule ];
-    args = extraArgs;
+  legacyModules =
+    lib.optional (evalConfigArgs?args) {
+      config = {
+        _module.args = extraArgs;
+      };
+    }
+    ++ lib.optional (evalConfigArgs?check) {
+      config = {
+        _module.check = lib.mkDefault check;
+      };
+    };
+  allUserModules = modules ++ legacyModules;
+
+  noUserModules = lib.evalModules ({
+    inherit prefix;
+    modules = baseModules ++ extraModules ++ [ pkgsModule modulesModule ];
     specialArgs =
       { modulesPath = builtins.toString ../modules; } // specialArgs;
-  };
+  });
 
-  # These are the extra arguments passed to every module.  In
-  # particular, Nixpkgs is passed through the "pkgs" argument.
-  extraArgs = extraArgs_ // {
-    inherit noUserModules baseModules extraModules modules;
+  # Extra arguments that are useful for constructing a similar configuration.
+  modulesModule = {
+    config = {
+      _module.args = {
+        inherit noUserModules baseModules extraModules modules;
+      };
+    };
   };
 
 in rec {
 
   # Merge the option definitions in all modules, forming the full
   # system configuration.
-  inherit (noUserModules.extendModules { inherit modules; })
+  inherit (noUserModules.extendModules { modules = allUserModules; })
     config options _module type;
 
   inherit extraArgs;