From e31e096b667f671aea424681f2b4a65e385efe50 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Tue, 4 Jan 2022 21:54:35 +0100 Subject: [PATCH] nixos/lib: Move evalModules into its own file --- nixos/lib/default.nix | 52 ++++++------------------------- nixos/lib/eval-config-minimal.nix | 47 ++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 43 deletions(-) create mode 100644 nixos/lib/eval-config-minimal.nix diff --git a/nixos/lib/default.nix b/nixos/lib/default.nix index 6479b7144907..41ae2d863e05 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 000000000000..6479b7144907 --- /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; +}