diff options
author | Robert Hensing <robert@roberthensing.nl> | 2022-01-04 21:54:35 +0100 |
---|---|---|
committer | Robert Hensing <robert@roberthensing.nl> | 2022-01-10 12:26:59 +0100 |
commit | e31e096b667f671aea424681f2b4a65e385efe50 (patch) | |
tree | 25f1ee0182d5d79bf07566aa0c039e2867046135 | |
parent | be3967e351b6e1b010e95ec16217ed2db33da0c5 (diff) | |
download | nixpkgs-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
-rw-r--r-- | nixos/lib/default.nix | 52 | ||||
-rw-r--r-- | nixos/lib/eval-config-minimal.nix | 47 |
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; +} |