2022-12-11 15:56:09 +01:00
|
|
|
# Generates the documentation for library functions via nixdoc.
|
2018-12-30 01:10:19 +01:00
|
|
|
|
2023-06-24 22:14:37 +02:00
|
|
|
{ pkgs, nixpkgs, libsets }:
|
2018-12-30 01:10:19 +01:00
|
|
|
|
2023-06-24 22:14:37 +02:00
|
|
|
with pkgs;
|
|
|
|
|
|
|
|
stdenv.mkDerivation {
|
2018-12-30 01:10:19 +01:00
|
|
|
name = "nixpkgs-lib-docs";
|
2024-07-18 23:33:29 +02:00
|
|
|
src = pkgs.lib.fileset.toSource {
|
|
|
|
root = ../..;
|
|
|
|
fileset = ../../lib;
|
|
|
|
};
|
2018-12-30 01:10:19 +01:00
|
|
|
|
2024-07-18 23:33:29 +02:00
|
|
|
buildInputs = [ nixdoc nix ];
|
2018-12-30 01:10:19 +01:00
|
|
|
installPhase = ''
|
2024-07-18 23:33:29 +02:00
|
|
|
export NIX_STATE_DIR=$(mktemp -d)
|
|
|
|
nix-instantiate --eval --strict --json ${./lib-function-locations.nix} \
|
|
|
|
--arg nixpkgsPath "./." \
|
|
|
|
--argstr revision ${nixpkgs.rev or "master"} \
|
|
|
|
--argstr libsetsJSON ${pkgs.lib.escapeShellArg (builtins.toJSON libsets)} \
|
|
|
|
> locations.json
|
|
|
|
|
2018-12-30 01:10:19 +01:00
|
|
|
function docgen {
|
2023-07-08 18:43:36 +02:00
|
|
|
name=$1
|
|
|
|
baseName=$2
|
|
|
|
description=$3
|
|
|
|
# TODO: wrap lib.$name in <literal>, make nixdoc not escape it
|
2024-07-18 23:33:29 +02:00
|
|
|
if [[ -e "lib/$baseName.nix" ]]; then
|
|
|
|
nixdoc -c "$name" -d "lib.$name: $description" -l locations.json -f "lib/$baseName.nix" > "$out/$name.md"
|
2022-12-23 20:57:49 +01:00
|
|
|
else
|
2024-07-18 23:33:29 +02:00
|
|
|
nixdoc -c "$name" -d "lib.$name: $description" -l locations.json -f "lib/$baseName/default.nix" > "$out/$name.md"
|
2022-12-23 20:57:49 +01:00
|
|
|
fi
|
2023-07-08 18:43:36 +02:00
|
|
|
echo "$out/$name.md" >> "$out/index.md"
|
2018-12-30 01:10:19 +01:00
|
|
|
}
|
|
|
|
|
2022-12-11 15:56:09 +01:00
|
|
|
mkdir -p "$out"
|
|
|
|
|
2023-03-25 21:38:26 +01:00
|
|
|
cat > "$out/index.md" << 'EOF'
|
2024-01-15 21:07:52 +01:00
|
|
|
```{=include=} sections auto-id-prefix=auto-generated
|
2022-12-11 15:56:09 +01:00
|
|
|
EOF
|
|
|
|
|
2023-07-08 18:43:36 +02:00
|
|
|
${lib.concatMapStrings ({ name, baseName ? name, description }: ''
|
|
|
|
docgen ${name} ${baseName} ${lib.escapeShellArg description}
|
2022-12-12 12:21:59 +01:00
|
|
|
'') libsets}
|
2018-12-30 01:10:19 +01:00
|
|
|
|
2023-03-25 21:38:26 +01:00
|
|
|
echo '```' >> "$out/index.md"
|
2018-12-30 01:10:19 +01:00
|
|
|
'';
|
|
|
|
}
|