rose-pine-nix/docs/options-doc.nix

57 lines
1.3 KiB
Nix

{ lib, nixosOptionsDoc }:
{
version,
modules ? [ moduleRoot ],
moduleRoot,
}:
let
baseDeclarationUrl = "https://github.com/catppuccin/nix/blob/main";
declarationIsOurs = declaration: lib.hasPrefix (toString moduleRoot) (toString declaration);
declarationSubpath = declaration: lib.removePrefix (toString ../. + "/") (toString declaration);
toGithubDeclaration =
declaration:
let
subpath = declarationSubpath declaration;
in
{
url = "${baseDeclarationUrl}/${subpath}";
name = "<catppuccin/${subpath}>";
};
evaluated = lib.evalModules {
modules = modules ++ [
{
options.system.nixos.release = lib.mkOption {
type = lib.types.str;
default = lib.trivial.release;
readOnly = true;
};
config = {
_module.check = false;
};
}
];
};
optionsDoc = nixosOptionsDoc {
options = builtins.removeAttrs evaluated.options [
"_module"
"system"
];
transformOptions =
opt:
opt
// {
declarations = map (
declaration: if declarationIsOurs declaration then toGithubDeclaration declaration else declaration
) opt.declarations;
};
documentType = "none";
revision = version;
};
in
optionsDoc.optionsCommonMark