
Add a `treefmt.optionsDoc` passthru, which is included on the treefmt section of the nixpkgs manual. This generates reference docs for options declared in `treefmt.evalConfig`.
32 lines
867 B
Nix
32 lines
867 B
Nix
# To build this derivation, run `nix-build -A treefmt.optionsDoc`
|
|
{
|
|
lib,
|
|
treefmt,
|
|
nixosOptionsDoc,
|
|
}:
|
|
|
|
let
|
|
configuration = treefmt.evalConfig [ ];
|
|
|
|
root = toString configuration._module.specialArgs.modulesPath;
|
|
revision = lib.trivial.revisionWithDefault "master";
|
|
removeRoot = file: lib.removePrefix "/" (lib.removePrefix root file);
|
|
|
|
transformDeclaration =
|
|
file:
|
|
let
|
|
fileStr = toString file;
|
|
subpath = "pkgs/by-name/tr/treefmt/modules/" + removeRoot fileStr;
|
|
in
|
|
assert lib.hasPrefix root fileStr;
|
|
{
|
|
url = "https://github.com/NixOS/nixpkgs/blob/${revision}/${subpath}";
|
|
name = subpath;
|
|
};
|
|
in
|
|
nixosOptionsDoc {
|
|
documentType = "none";
|
|
options = builtins.removeAttrs configuration.options [ "_module" ];
|
|
transformOptions = opt: opt // { declarations = map transformDeclaration opt.declarations; };
|
|
}
|