# 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 , 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 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" ''; }