Files
home-manager/docs/home-manager-manual.nix
Austin Horstman 6aaf73d18d docs: build manual with mdbook
Switch the HTML manual renderer to mdBook while preserving existing docs package outputs and legacy redirect paths.
2026-06-19 10:00:25 -05:00

116 lines
2.9 KiB
Nix

{
stdenv,
lib,
callPackage,
mdbook,
python3,
revision,
home-manager-options,
}:
let
outputPath = "share/doc/home-manager";
mdbookOptions = callPackage ./mdbook/options.nix {
manpageUrls = ./manual/manpage-urls.json;
inherit revision;
optionDocs = {
home-manager = {
title = "Home Manager Configuration Options";
path = "home-manager";
prefix = "opt-";
json = "${home-manager-options.home-manager.json}";
};
nixos = {
title = "NixOS Configuration Options";
path = "nixos";
prefix = "nixos-opt-";
json = "${home-manager-options.nixos.json}";
};
nix-darwin = {
title = "nix-darwin Configuration Options";
path = "nix-darwin";
prefix = "nix-darwin-opt-";
json = "${home-manager-options.nix-darwin.json}";
};
};
};
in
stdenv.mkDerivation {
name = "home-manager-manual";
nativeBuildInputs = [
mdbook
python3
];
src = ./.;
buildPhase = ''
runHook preBuild
mkdir -p source
python3 ${./mdbook/convert-markup.py} "$src/manual" source
python3 ${./mdbook/convert-markup.py} \
--base-depth 1 \
"$src/release-notes" \
source/release-notes
cp -r ${mdbookOptions}/options source/options
python3 ${./mdbook/substitute-summary.py} \
source/SUMMARY.md \
${mdbookOptions}/summary/home-manager.md \
${mdbookOptions}/summary/nixos.md \
${mdbookOptions}/summary/nix-darwin.md
mdbook build source --dest-dir book
mkdir -p out
cp -r book/* out/
makeRedirect() {
local target=$1
local destination=$2
printf '%s\n' \
'<!doctype html>' \
'<html lang="en">' \
' <head>' \
' <meta charset="utf-8">' \
" <meta http-equiv=\"refresh\" content=\"0; url=$destination\">" \
" <link rel=\"canonical\" href=\"$destination\">" \
' <title>Redirecting...</title>' \
' </head>' \
' <body>' \
" <p>Redirecting to <a href=\"$destination\">$destination</a>.</p>" \
' </body>' \
'</html>' \
> "out/$target"
}
makeRedirect index.xhtml index.html
makeRedirect options.html options/home-manager/index.html
makeRedirect options.xhtml options/home-manager/index.html
makeRedirect nixos-options.xhtml options/nixos/index.html
makeRedirect nix-darwin-options.xhtml options/nix-darwin/index.html
makeRedirect release-notes.xhtml release-notes/release-notes.html
runHook postBuild
'';
installPhase = ''
dest="$out/${outputPath}"
mkdir -p "$(dirname "$dest")"
mv out "$dest"
mkdir -p $out/nix-support/
echo "doc manual $dest index.html" >> $out/nix-support/hydra-build-products
'';
passthru = {
inherit home-manager-options mdbookOptions;
};
meta = {
maintainers = [ lib.maintainers.considerate ];
};
}