forked from auxolotl/docs
52 lines
1.2 KiB
Nix
52 lines
1.2 KiB
Nix
|
# Generates the documentation for library functions via nixdoc.
|
||
|
{
|
||
|
pkgs,
|
||
|
spkgs,
|
||
|
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
|
||
|
nixdoc -c "$name" -d "lib.$name: $description" -l ${spkgs.doc-locations-json} -f "$baseName.nix" > "$out/$name.md"
|
||
|
else
|
||
|
nixdoc -c "$name" -d "lib.$name: $description" -l ${spkgs.doc-locations-json} -f "$baseName/default.nix" > "$out/$name.md"
|
||
|
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"
|
||
|
'';
|
||
|
}
|