summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2022-01-04 21:54:35 +0100
committerRobert Hensing <robert@roberthensing.nl>2022-01-10 12:26:59 +0100
commite31e096b667f671aea424681f2b4a65e385efe50 (patch)
tree25f1ee0182d5d79bf07566aa0c039e2867046135 /nixos
parentbe3967e351b6e1b010e95ec16217ed2db33da0c5 (diff)
downloadnixpkgs-e31e096b667f671aea424681f2b4a65e385efe50.tar
nixpkgs-e31e096b667f671aea424681f2b4a65e385efe50.tar.gz
nixpkgs-e31e096b667f671aea424681f2b4a65e385efe50.tar.bz2
nixpkgs-e31e096b667f671aea424681f2b4a65e385efe50.tar.lz
nixpkgs-e31e096b667f671aea424681f2b4a65e385efe50.tar.xz
nixpkgs-e31e096b667f671aea424681f2b4a65e385efe50.tar.zst
nixpkgs-e31e096b667f671aea424681f2b4a65e385efe50.zip
nixos/lib: Move evalModules into its own file
Diffstat (limited to 'nixos')
-rw-r--r--nixos/lib/default.nix52
-rw-r--r--nixos/lib/eval-config-minimal.nix47
2 files changed, 56 insertions, 43 deletions
diff --git a/nixos/lib/default.nix b/nixos/lib/default.nix
index 6479b714490..41ae2d863e0 100644
--- a/nixos/lib/default.nix
+++ b/nixos/lib/default.nix
@@ -1,47 +1,13 @@
+{ lib ? import ../../lib, ... }:
 let
-  # The warning is in a top-level let binding so it is only printed once.
-  experimentalWarning = warn "lib.nixos.evalModules is experimental and subject to change. See nixos/lib/default.nix" null;
-  inherit (nonExtendedLib) warn;
-  nonExtendedLib = import ../../lib;
-in
-{ lib ? nonExtendedLib, ... }:
-let
-
-  /*
-    Invoke NixOS. Unlike traditional NixOS, this does not include all modules.
-    Any such modules have to be explicitly added via the `modules` parameter,
-    or imported using `imports` in a module.
-
-    A minimal module list improves NixOS evaluation performance and allows
-    modules to be independently usable, supporting new use cases.
-
-    Parameters:
-
-      modules:        A list of modules that constitute the configuration.
-
-      specialArgs:    An attribute set of module arguments. Unlike
-                      `config._module.args`, these are available for use in
-                      `imports`.
-                      `config._module.args` should be preferred when possible.
-
-    Return:
-
-      An attribute set containing `config.system.build.toplevel` among other
-      attributes. See `lib.evalModules` in the Nixpkgs library.
-
-   */
-  evalModules = {
-    prefix ? [],
-    modules ? [],
-    specialArgs ? {},
-  }: lib.evalModules {
-    inherit prefix modules;
-    specialArgs = {
-      modulesPath = builtins.toString ../modules;
-    } // specialArgs;
-  };
-
+  eval-config-minimal = import ./eval-config-minimal.nix { inherit lib; };
 in
+/*
+  This attribute set appears as lib.nixos in the flake, or can be imported
+  using a binding like `nixosLib = import (nixpkgs + "/nixos/lib") { }`.
+*/
 {
-  evalModules = builtins.seq experimentalWarning evalModules;
+  inherit (eval-config-minimal)
+    evalModules
+    ;
 }
diff --git a/nixos/lib/eval-config-minimal.nix b/nixos/lib/eval-config-minimal.nix
new file mode 100644
index 00000000000..6479b714490
--- /dev/null
+++ b/nixos/lib/eval-config-minimal.nix
@@ -0,0 +1,47 @@
+let
+  # The warning is in a top-level let binding so it is only printed once.
+  experimentalWarning = warn "lib.nixos.evalModules is experimental and subject to change. See nixos/lib/default.nix" null;
+  inherit (nonExtendedLib) warn;
+  nonExtendedLib = import ../../lib;
+in
+{ lib ? nonExtendedLib, ... }:
+let
+
+  /*
+    Invoke NixOS. Unlike traditional NixOS, this does not include all modules.
+    Any such modules have to be explicitly added via the `modules` parameter,
+    or imported using `imports` in a module.
+
+    A minimal module list improves NixOS evaluation performance and allows
+    modules to be independently usable, supporting new use cases.
+
+    Parameters:
+
+      modules:        A list of modules that constitute the configuration.
+
+      specialArgs:    An attribute set of module arguments. Unlike
+                      `config._module.args`, these are available for use in
+                      `imports`.
+                      `config._module.args` should be preferred when possible.
+
+    Return:
+
+      An attribute set containing `config.system.build.toplevel` among other
+      attributes. See `lib.evalModules` in the Nixpkgs library.
+
+   */
+  evalModules = {
+    prefix ? [],
+    modules ? [],
+    specialArgs ? {},
+  }: lib.evalModules {
+    inherit prefix modules;
+    specialArgs = {
+      modulesPath = builtins.toString ../modules;
+    } // specialArgs;
+  };
+
+in
+{
+  evalModules = builtins.seq experimentalWarning evalModules;
+}