60 lines
1.6 KiB
Nix
60 lines
1.6 KiB
Nix
{
|
|
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;
|
|
};
|
|
};
|
|
}
|