docs/packages/lib-doc/default.nix
2024-06-30 17:43:38 -04:00

40 lines
985 B
Nix

# Generates the documentation for library functions via nixdoc.
{ pkgs, 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 ${pkgs.doc-locations-json} -f "$baseName.nix" > "$out/$name.md"
else
nixdoc -c "$name" -d "lib.$name: $description" -l ${pkgs.doc-locations-json} -f "$baseName/default.nix" > "$out/$name.md"
fi
}
mkdir -p "$out"
${lib.concatMapStrings (
{
name,
baseName ? name,
description,
}:
''
docgen ${name} ${baseName} ${lib.escapeShellArg description}
''
) pkgs.libsets}
'';
}