diff options
author | Robert Hensing <robert@roberthensing.nl> | 2022-01-02 14:11:21 +0100 |
---|---|---|
committer | Robert Hensing <robert@roberthensing.nl> | 2022-01-07 01:21:07 +0100 |
commit | fbd038eca24703d8c5cc3ce28adda3e71c5fabf4 (patch) | |
tree | 16c5da2fc1d616d85c8414c81809283ccb06cb30 /nixos/lib/default.nix | |
parent | 498f8e26628d0c3efecdc0a36b1101fd3fca907a (diff) |
nixos/lib: init (experimental)
Diffstat (limited to 'nixos/lib/default.nix')
-rw-r--r-- | nixos/lib/default.nix | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/nixos/lib/default.nix b/nixos/lib/default.nix new file mode 100644 index 0000000000000..6479b71449070 --- /dev/null +++ b/nixos/lib/default.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; +} |