Added documentation about modules.
NixOS and Home Manager both automatically generate documentation using 'nixosOptionsDoc', and now so does hylonix. I can't find any standard reference for where this documentation should go, so I have created a doc attribute in the flake.
This commit is contained in:
parent
2a5ced3905
commit
9232d12f25
3 changed files with 59 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -3,5 +3,6 @@
|
|||
!.gitignore
|
||||
!flake.nix
|
||||
!flake.lock
|
||||
!docs/**/*.nix
|
||||
!lib/**.nix
|
||||
!modules/**/*.nix
|
||||
|
|
|
|||
56
docs/default.nix
Normal file
56
docs/default.nix
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
self,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
baseModule = _: {
|
||||
# Hide documentation relating to _module.args, which isn't a part
|
||||
# of this flake
|
||||
options._module.args = lib.mkOption { internal = true; };
|
||||
# Turn off the checks on the config. We only want the options, so
|
||||
# don't eval the config.
|
||||
config._module.check = false;
|
||||
};
|
||||
|
||||
makeModuleDocs =
|
||||
subcomponent: modules:
|
||||
let
|
||||
eval = lib.evalModules {
|
||||
modules = [ baseModule ] ++ modules;
|
||||
class = "hylonix";
|
||||
specialArgs = { inherit pkgs lib; };
|
||||
};
|
||||
docs = pkgs.buildPackages.nixosOptionsDoc {
|
||||
inherit (eval) options;
|
||||
warningsAreErrors = false;
|
||||
};
|
||||
in
|
||||
{
|
||||
# These formats are generated by nixosOptionsDoc,
|
||||
# so may as well expose them.
|
||||
asciiDoc = docs.optionsAsciiDoc;
|
||||
commonMark = docs.optionsCommonMark;
|
||||
json = docs.optionsJSON;
|
||||
nix = docs.optionsNix;
|
||||
};
|
||||
in
|
||||
{
|
||||
modules = {
|
||||
all = makeModuleDocs "modules" (
|
||||
builtins.attrValues self.hmModules ++ builtins.attrValues self.nixosModules
|
||||
);
|
||||
|
||||
hm = {
|
||||
all = makeModuleDocs "hmModules" (builtins.attrValues self.hmModules);
|
||||
module = builtins.mapAttrs (k: v: makeModuleDocs "hmModules-${k}" [ v ]) self.hmModules;
|
||||
};
|
||||
|
||||
nixos = {
|
||||
all = makeModuleDocs "nixosModules" (builtins.attrValues self.nixosModules);
|
||||
module = builtins.mapAttrs (k: v: makeModuleDocs "nixosModules-${k}" [ v ]) self.nixosModules;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -11,6 +11,8 @@
|
|||
forAllSystems = nixos.lib.genAttrs nixos.lib.systems.flakeExposed;
|
||||
in
|
||||
{
|
||||
docs = forAllSystems (system: nixos.legacyPackages.${system}.callPackage ./docs { inherit self; });
|
||||
|
||||
formatter = forAllSystems (system: nixos.legacyPackages.${system}.nixfmt-tree);
|
||||
|
||||
hmModules = import ./modules/home-manager self.lib.hylonix;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue