docs/packages/lib-doc/default.nix

51 lines
1.1 KiB
Nix
Raw Normal View History

2024-06-30 05:43:43 +00:00
# Generates the documentation for library functions via nixdoc.
{
pkgs,
libsets,
inputs,
}:
let
inherit (pkgs) stdenv lib nixdoc;
in
stdenv.mkDerivation {
name = "nixpkgs-lib-docs";
src = "${inputs.nixpkgs.outPath}/lib";
buildInputs = [ nixdoc ];
installPhase = ''
function docgen {
name=$1
baseName=$2
description=$3
# TODO: wrap lib.$name in <literal>, make nixdoc not escape it
if [[ -e "../lib/$baseName.nix" ]]; then
2024-06-30 21:36:12 +00:00
nixdoc -c "$name" -d "lib.$name: $description" -l ${pkgs.doc-locations-json} -f "$baseName.nix" > "$out/$name.md"
2024-06-30 05:43:43 +00:00
else
2024-06-30 21:36:12 +00:00
nixdoc -c "$name" -d "lib.$name: $description" -l ${pkgs.doc-locations-json} -f "$baseName/default.nix" > "$out/$name.md"
2024-06-30 05:43:43 +00:00
fi
echo "$out/$name.md" >> "$out/index.md"
}
mkdir -p "$out"
cat > "$out/index.md" << 'EOF'
```{=include=} sections auto-id-prefix=auto-generated
EOF
${lib.concatMapStrings (
{
name,
baseName ? name,
description,
}:
''
docgen ${name} ${baseName} ${lib.escapeShellArg description}
''
) libsets}
echo '```' >> "$out/index.md"
'';
}