Merge pull request #56020 from oxij/pull/47177-nixos-doc-include-all-modules-edited
nixos: doc: include all modules in manual generation
This commit is contained in:
commit
1f409d0879
@ -141,7 +141,7 @@ rec {
|
|||||||
docOption = rec {
|
docOption = rec {
|
||||||
loc = opt.loc;
|
loc = opt.loc;
|
||||||
name = showOption opt.loc;
|
name = showOption opt.loc;
|
||||||
description = opt.description or (throw "Option `${name}' has no description.");
|
description = opt.description or (lib.warn "Option `${name}' has no description." "This option has no description.");
|
||||||
declarations = filter (x: x != unknownModule) opt.declarations;
|
declarations = filter (x: x != unknownModule) opt.declarations;
|
||||||
internal = opt.internal or false;
|
internal = opt.internal or false;
|
||||||
visible = opt.visible or true;
|
visible = opt.visible or true;
|
||||||
|
@ -327,6 +327,7 @@ in rec {
|
|||||||
# Generate manpages.
|
# Generate manpages.
|
||||||
mkdir -p $out/share/man
|
mkdir -p $out/share/man
|
||||||
xsltproc --nonet \
|
xsltproc --nonet \
|
||||||
|
--maxdepth 6000 \
|
||||||
--param man.output.in.separate.dir 1 \
|
--param man.output.in.separate.dir 1 \
|
||||||
--param man.output.base.dir "'$out/share/man/'" \
|
--param man.output.base.dir "'$out/share/man/'" \
|
||||||
--param man.endnotes.are.numbered 0 \
|
--param man.endnotes.are.numbered 0 \
|
||||||
|
@ -51,7 +51,17 @@
|
|||||||
|
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para />
|
<para>
|
||||||
|
The <option>documentation</option> module gained an option named
|
||||||
|
<option>documentation.nixos.includeAllModules</option> which makes the generated
|
||||||
|
<citerefentry><refentrytitle>configuration.nix</refentrytitle>
|
||||||
|
<manvolnum>5</manvolnum></citerefentry> manual page include all options from all NixOS modules
|
||||||
|
included in a given <literal>configuration.nix</literal> configuration file. Currently, it is
|
||||||
|
set to <literal>false</literal> by default as enabling it frequently prevents evaluation. But
|
||||||
|
the plan is to eventually have it set to <literal>true</literal> by default. Please set it to
|
||||||
|
<literal>true</literal> now in your <literal>configuration.nix</literal> and fix all the bugs
|
||||||
|
it uncovers.
|
||||||
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
|
@ -51,7 +51,7 @@ in rec {
|
|||||||
# system configuration.
|
# system configuration.
|
||||||
inherit (lib.evalModules {
|
inherit (lib.evalModules {
|
||||||
inherit prefix check;
|
inherit prefix check;
|
||||||
modules = modules ++ extraModules ++ baseModules ++ [ pkgsModule ];
|
modules = baseModules ++ extraModules ++ [ pkgsModule ] ++ modules;
|
||||||
args = extraArgs;
|
args = extraArgs;
|
||||||
specialArgs =
|
specialArgs =
|
||||||
{ modulesPath = builtins.toString ../modules; } // specialArgs;
|
{ modulesPath = builtins.toString ../modules; } // specialArgs;
|
||||||
@ -60,7 +60,7 @@ in rec {
|
|||||||
# These are the extra arguments passed to every module. In
|
# These are the extra arguments passed to every module. In
|
||||||
# particular, Nixpkgs is passed through the "pkgs" argument.
|
# particular, Nixpkgs is passed through the "pkgs" argument.
|
||||||
extraArgs = extraArgs_ // {
|
extraArgs = extraArgs_ // {
|
||||||
inherit modules baseModules;
|
inherit baseModules extraModules modules;
|
||||||
};
|
};
|
||||||
|
|
||||||
inherit (config._module.args) pkgs;
|
inherit (config._module.args) pkgs;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ config, lib, pkgs, baseModules, ... }:
|
{ config, lib, pkgs, baseModules, extraModules, modules, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
@ -6,6 +6,8 @@ let
|
|||||||
|
|
||||||
cfg = config.documentation;
|
cfg = config.documentation;
|
||||||
|
|
||||||
|
manualModules = baseModules ++ optionals cfg.nixos.includeAllModules (extraModules ++ modules);
|
||||||
|
|
||||||
/* For the purpose of generating docs, evaluate options with each derivation
|
/* For the purpose of generating docs, evaluate options with each derivation
|
||||||
in `pkgs` (recursively) replaced by a fake with path "\${pkgs.attribute.path}".
|
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.
|
It isn't perfect, but it seems to cover a vast majority of use cases.
|
||||||
@ -18,7 +20,7 @@ let
|
|||||||
options =
|
options =
|
||||||
let
|
let
|
||||||
scrubbedEval = evalModules {
|
scrubbedEval = evalModules {
|
||||||
modules = [ { nixpkgs.localSystem = config.nixpkgs.localSystem; } ] ++ baseModules;
|
modules = [ { nixpkgs.localSystem = config.nixpkgs.localSystem; } ] ++ manualModules;
|
||||||
args = (config._module.args) // { modules = [ ]; };
|
args = (config._module.args) // { modules = [ ]; };
|
||||||
specialArgs = { pkgs = scrubDerivations "pkgs" pkgs; };
|
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>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user