diff options
Diffstat (limited to 'nixpkgs/doc/doc-support/lib-function-docs.nix')
-rw-r--r-- | nixpkgs/doc/doc-support/lib-function-docs.nix | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/nixpkgs/doc/doc-support/lib-function-docs.nix b/nixpkgs/doc/doc-support/lib-function-docs.nix new file mode 100644 index 000000000000..8592fafbbd15 --- /dev/null +++ b/nixpkgs/doc/doc-support/lib-function-docs.nix @@ -0,0 +1,41 @@ +# Generates the documentation for library functions via nixdoc. + +{ pkgs, nixpkgs, libsets }: + +with pkgs; + +let + locationsJSON = import ./lib-function-locations.nix { inherit pkgs nixpkgs libsets; }; +in +stdenv.mkDerivation { + name = "nixpkgs-lib-docs"; + src = ../../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 ${locationsJSON} -f "$baseName.nix" > "$out/$name.md" + else + nixdoc -c "$name" -d "lib.$name: $description" -l ${locationsJSON} -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 + EOF + + ${lib.concatMapStrings ({ name, baseName ? name, description }: '' + docgen ${name} ${baseName} ${lib.escapeShellArg description} + '') libsets} + + echo '```' >> "$out/index.md" + ''; +} |