a8d4cf149c
Move the manpage-to-URL mapping to `doc/manpage-urls.json` so that we can reuse that file elsewhere, and generate the `link-manpages.lua` filter from that file. Also modify the Pandoc filter so that it doesn't wrap manpages that are already inside a link. Keeping a Lua filter is essential for speed: a Python filter would increase the runtime `md-to-db.sh` from ~20s to ~30s (but Python is not to blame; marshalling Pandoc types to and from JSON is a costly operation). Parsing in Lua seems tedious, so I went with the Nix way.
41 lines
1.0 KiB
Nix
41 lines
1.0 KiB
Nix
{ pkgs ? (import ./.. { }), nixpkgs ? { }}:
|
|
let
|
|
lib = pkgs.lib;
|
|
doc-support = import ./doc-support { inherit pkgs nixpkgs; };
|
|
in pkgs.stdenv.mkDerivation {
|
|
name = "nixpkgs-manual";
|
|
|
|
nativeBuildInputs = with pkgs; [
|
|
pandoc
|
|
graphviz
|
|
libxml2
|
|
libxslt
|
|
zip
|
|
jing
|
|
xmlformat
|
|
];
|
|
|
|
src = lib.cleanSource ./.;
|
|
|
|
postPatch = ''
|
|
ln -s ${doc-support} ./doc-support/result
|
|
'';
|
|
|
|
installPhase = ''
|
|
dest="$out/share/doc/nixpkgs"
|
|
mkdir -p "$(dirname "$dest")"
|
|
mv out/html "$dest"
|
|
mv "$dest/index.html" "$dest/manual.html"
|
|
|
|
mv out/epub/manual.epub "$dest/nixpkgs-manual.epub"
|
|
|
|
mkdir -p $out/nix-support/
|
|
echo "doc manual $dest manual.html" >> $out/nix-support/hydra-build-products
|
|
echo "doc manual $dest nixpkgs-manual.epub" >> $out/nix-support/hydra-build-products
|
|
'';
|
|
|
|
# Environment variables
|
|
PANDOC_LUA_FILTERS_DIR = "${pkgs.pandoc-lua-filters}/share/pandoc/filters";
|
|
PANDOC_LINK_MANPAGES_FILTER = import build-aux/pandoc-filters/link-manpages.nix { inherit pkgs; };
|
|
}
|