hylonix/docs/default.nix

61 lines
1.6 KiB
Nix
Raw Permalink Normal View History

{
pkgs,
lib,
self,
...
}:
let
man = pkgs.callPackage ./man { inherit self; };
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;
man = man.build "modules" subcomponent docs.optionsJSON;
};
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;
};
};
}