1
2# DO NOT IMPORT. Use nixpkgsFlake.lib.nixos, or import (nixpkgs + "/nixos/lib")
3{ lib }: # read -^
4
5let
6
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.
11
12 A minimal module list improves NixOS evaluation performance and allows
13 modules to be independently usable, supporting new use cases.
14
15 Parameters:
16
17 modules: A list of modules that constitute the configuration.
18
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.
23
24 Return:
25
26 An attribute set containing `config.system.build.toplevel` among other
27 attributes. See `lib.evalModules` in the Nixpkgs library.
28
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 specialArgs = {
42 modulesPath = builtins.toString ../modules;
43 } // specialArgs;
44 };
45
46in
47{
48 inherit evalModules;
49}