forked from mirrors/nixpkgs
79703eef08
This allows modules that declare their class to be checked. While that's not most user modules, frameworks can take advantage of this by setting declaring the module class for their users. That way, the mistake of importing a module into the wrong hierarchy can be reported more clearly in some cases.
55 lines
1.4 KiB
Nix
55 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
|