2022-01-07 00:09:46 +00:00
|
|
|
|
|
|
|
# DO NOT IMPORT. Use nixpkgsFlake.lib.nixos, or import (nixpkgs + "/nixos/lib")
|
|
|
|
{ lib }: # read -^
|
|
|
|
|
2022-01-04 20:54:35 +00:00
|
|
|
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 ? {},
|
2022-01-07 00:34:30 +00:00
|
|
|
}:
|
|
|
|
# NOTE: Regular NixOS currently does use this function! Don't break it!
|
|
|
|
# Ideally we don't diverge, unless we learn that we should.
|
|
|
|
# In other words, only the public interface of nixos.evalModules
|
|
|
|
# is experimental.
|
|
|
|
lib.evalModules {
|
2022-01-04 20:54:35 +00:00
|
|
|
inherit prefix modules;
|
2023-04-17 17:48:53 +00:00
|
|
|
class = "nixos";
|
2022-01-04 20:54:35 +00:00
|
|
|
specialArgs = {
|
|
|
|
modulesPath = builtins.toString ../modules;
|
2023-04-17 17:48:53 +00:00
|
|
|
} // specialArgs;
|
2022-01-04 20:54:35 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
in
|
|
|
|
{
|
2022-01-07 00:09:46 +00:00
|
|
|
inherit evalModules;
|
2022-01-04 20:54:35 +00:00
|
|
|
}
|