# Generates the documentation for library functions via nixdoc. { pkgs, inputs, lib, ... }: let inherit (pkgs) stdenv nixdoc; locations-json = pkgs.callPackage ./locations-json.nix { inherit lib; }; 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 ${locations-json} -f "$baseName.nix" > "$out/$name.md" else nixdoc -c "$name" -d "lib.$name: $description" -l ${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} '' ) lib.amg.libsets} ''; }