diff options
author | Arian van Putten <aeroboy94@gmail.com> | 2018-09-23 21:34:36 +0200 |
---|---|---|
committer | Jan Malakhovski <oxij@oxij.org> | 2019-03-05 09:41:40 +0000 |
commit | 2e75a7b516581bedcf236a0f21730185a9d1f11b (patch) | |
tree | 1f9f8ca828dbde4df964aca0121ae40c134cf094 /nixos/modules | |
parent | 9b3e5a3aab728e7cea2da12b6db300136604be3a (diff) | |
download | nixlib-2e75a7b516581bedcf236a0f21730185a9d1f11b.tar nixlib-2e75a7b516581bedcf236a0f21730185a9d1f11b.tar.gz nixlib-2e75a7b516581bedcf236a0f21730185a9d1f11b.tar.bz2 nixlib-2e75a7b516581bedcf236a0f21730185a9d1f11b.tar.lz nixlib-2e75a7b516581bedcf236a0f21730185a9d1f11b.tar.xz nixlib-2e75a7b516581bedcf236a0f21730185a9d1f11b.tar.zst nixlib-2e75a7b516581bedcf236a0f21730185a9d1f11b.zip |
nixos: doc: optionally include all modules in manual generation
Before this change `man 5 configuration.nix` would only show options of modules in the `baseModules` set, which consists only of the list of modules in `nixos/modules/module-list.nix` With this change applied and `documentation.nixos.includeAllModules` option enabled all modules included in `configuration.nix` file will be used instead. This makes configurations with custom modules self-documenting. It also means that importing non-`baseModules` modules like `gce.nix` or `azure.nix` will make their documentation available in `man 5 configuration.nix`. `documentation.nixos.includeAllModules` is currently set to `false` by default as enabling it usually uncovers bugs and prevents evaluation. It should be set to `true` in a release or two. This was originally implemented in #47177, edited for more configurability, documented and rebased onto master by @oxij.
Diffstat (limited to 'nixos/modules')
-rw-r--r-- | nixos/modules/misc/documentation.nix | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/nixos/modules/misc/documentation.nix b/nixos/modules/misc/documentation.nix index 9b2e1235b748..834ac0de9121 100644 --- a/nixos/modules/misc/documentation.nix +++ b/nixos/modules/misc/documentation.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, baseModules, ... }: +{ config, lib, pkgs, baseModules, extraModules, modules, ... }: with lib; @@ -6,6 +6,8 @@ let cfg = config.documentation; + manualModules = baseModules ++ optionals cfg.nixos.includeAllModules (extraModules ++ modules); + /* For the purpose of generating docs, evaluate options with each derivation in `pkgs` (recursively) replaced by a fake with path "\${pkgs.attribute.path}". It isn't perfect, but it seems to cover a vast majority of use cases. @@ -18,7 +20,7 @@ let options = let scrubbedEval = evalModules { - modules = [ { nixpkgs.localSystem = config.nixpkgs.localSystem; } ] ++ baseModules; + modules = [ { nixpkgs.localSystem = config.nixpkgs.localSystem; } ] ++ manualModules; args = (config._module.args) // { modules = [ ]; }; specialArgs = { pkgs = scrubDerivations "pkgs" pkgs; }; }; @@ -146,6 +148,17 @@ in ''; }; + nixos.includeAllModules = mkOption { + type = types.bool; + default = false; + description = '' + Whether the generated NixOS's documentation should include documentation for all + the options from all the NixOS modules included in the current + <literal>configuration.nix</literal>. Disabling this will make the manual + generator to ignore options defined outside of <literal>baseModules</literal>. + ''; + }; + }; }; |