54 lines
1.4 KiB
Nix
54 lines
1.4 KiB
Nix
{
|
|
libPath,
|
|
pkgsLibPath,
|
|
nixosPath,
|
|
modules,
|
|
stateVersion,
|
|
release,
|
|
}:
|
|
|
|
let
|
|
lib = import libPath;
|
|
modulesPath = "${nixosPath}/modules";
|
|
# dummy pkgs set that contains no packages, only `pkgs.lib` from the full set.
|
|
# not having `pkgs.lib` causes all users of `pkgs.formats` to fail.
|
|
pkgs = import pkgsLibPath {
|
|
inherit lib;
|
|
pkgs = null;
|
|
};
|
|
utils = import "${nixosPath}/lib/utils.nix" {
|
|
inherit config lib;
|
|
pkgs = null;
|
|
};
|
|
# this is used both as a module and as specialArgs.
|
|
# as a module it sets the _module special values, as specialArgs it makes `config`
|
|
# unusable. this causes documentation attributes depending on `config` to fail.
|
|
config = {
|
|
_module.check = false;
|
|
_module.args = { };
|
|
system.stateVersion = stateVersion;
|
|
};
|
|
eval = lib.evalModules {
|
|
modules = (map (m: "${modulesPath}/${m}") modules) ++ [
|
|
config
|
|
];
|
|
specialArgs = {
|
|
inherit config pkgs utils;
|
|
class = "nixos";
|
|
};
|
|
};
|
|
docs = import "${nixosPath}/doc/manual" {
|
|
pkgs = pkgs // {
|
|
inherit lib;
|
|
# duplicate of the declaration in all-packages.nix
|
|
buildPackages.nixosOptionsDoc =
|
|
attrs: (import "${nixosPath}/lib/make-options-doc") ({ inherit pkgs lib; } // attrs);
|
|
};
|
|
config = config.config;
|
|
options = eval.options;
|
|
version = release;
|
|
revision = "release-${release}";
|
|
prefix = modulesPath;
|
|
};
|
|
in
|
|
docs.optionsNix
|