# Generates the documentation for library functions via nixdoc. { pkgs, nixpkgs, libsets }: with pkgs; let locationsXml = import ./lib-function-locations.nix { inherit pkgs nixpkgs libsets; }; in stdenv.mkDerivation { name = "nixpkgs-lib-docs"; src = ../../lib; buildInputs = [ nixdoc ]; installPhase = '' function docgen { # TODO: wrap lib.$1 in , make nixdoc not escape it if [[ -e "../lib/$1.nix" ]]; then nixdoc -c "$1" -d "lib.$1: $2" -f "$1.nix" > "$out/$1.xml" else nixdoc -c "$1" -d "lib.$1: $2" -f "$1/default.nix" > "$out/$1.xml" fi echo "" >> "$out/index.xml" } mkdir -p "$out" cat > "$out/index.xml" << 'EOF' EOF ${lib.concatMapStrings ({ name, description }: '' docgen ${name} ${lib.escapeShellArg description} '') libsets} echo "" >> "$out/index.xml" ln -s ${locationsXml} $out/locations.xml ''; }