nixos/preload: init
[NixPkgs.git] / nixos / lib / eval-config-minimal.nix
blob036389121973d445859348bf7003705401aa7477
2 # DO NOT IMPORT. Use nixpkgsFlake.lib.nixos, or import (nixpkgs + "/nixos/lib")
3 { lib }: # read -^
5 let
7   /*
8     Invoke NixOS. Unlike traditional NixOS, this does not include all modules.
9     Any such modules have to be explicitly added via the `modules` parameter,
10     or imported using `imports` in a module.
12     A minimal module list improves NixOS evaluation performance and allows
13     modules to be independently usable, supporting new use cases.
15     Parameters:
17       modules:        A list of modules that constitute the configuration.
19       specialArgs:    An attribute set of module arguments. Unlike
20                       `config._module.args`, these are available for use in
21                       `imports`.
22                       `config._module.args` should be preferred when possible.
24     Return:
26       An attribute set containing `config.system.build.toplevel` among other
27       attributes. See `lib.evalModules` in the Nixpkgs library.
29    */
30   evalModules = {
31     prefix ? [],
32     modules ? [],
33     specialArgs ? {},
34   }:
35   # NOTE: Regular NixOS currently does use this function! Don't break it!
36   #       Ideally we don't diverge, unless we learn that we should.
37   #       In other words, only the public interface of nixos.evalModules
38   #       is experimental.
39   lib.evalModules {
40     inherit prefix modules;
41     class = "nixos";
42     specialArgs = {
43       modulesPath = builtins.toString ../modules;
44     } // specialArgs;
45   };
49   inherit evalModules;