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
|
!.gitignore
|
||||||
!flake.nix
|
!flake.nix
|
||||||
!flake.lock
|
!flake.lock
|
||||||
|
!docs/**/*.nix
|
||||||
!lib/**.nix
|
!lib/**.nix
|
||||||
!modules/**/*.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;
|
forAllSystems = nixos.lib.genAttrs nixos.lib.systems.flakeExposed;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
docs = forAllSystems (system: nixos.legacyPackages.${system}.callPackage ./docs { inherit self; });
|
||||||
|
|
||||||
formatter = forAllSystems (system: nixos.legacyPackages.${system}.nixfmt-tree);
|
formatter = forAllSystems (system: nixos.legacyPackages.${system}.nixfmt-tree);
|
||||||
|
|
||||||
hmModules = import ./modules/home-manager self.lib.hylonix;
|
hmModules = import ./modules/home-manager self.lib.hylonix;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue