Self-host your own digital island
1{ pkgs, system, nixos-mailserver, ... }: 2 3with pkgs; 4let 5 optionsDoc = let 6 eval = import (pkgs.path + "/nixos/lib/eval-config.nix") { 7 inherit system; 8 modules = [ ../modules/default.nix nixos-mailserver ]; 9 }; 10 in pkgs.nixosOptionsDoc { 11 options = eval.options; 12 # TODO make sure all options have descriptions 13 warningsAreErrors = false; 14 }; 15 16 # Generate the `man eliean.nix` package 17 eilean-configuration-manual = runCommand "eilean-reference-manpage" { 18 nativeBuildInputs = 19 [ buildPackages.installShellFiles buildPackages.nixos-render-docs ]; 20 allowedReferences = [ "out" ]; 21 } '' 22 # Generate manpages. 23 mkdir -p $out/share/man/man5 24 # filter to only eilean options 25 cat ${optionsDoc.optionsJSON}/share/doc/nixos/options.json \ 26 | ${pkgs.jq}/bin/jq 'with_entries(select(.key | test("^eilean")))' \ 27 > eilean-options.json 28 nixos-render-docs -j $NIX_BUILD_CORES options manpage \ 29 --revision dev \ 30 --header ${./eilean-configuration-nix-header.5} \ 31 --footer ${./eilean-configuration-nix-footer.5} \ 32 eilean-options.json \ 33 $out/share/man/man5/eilean-configuration.nix.5 34 ''; 35in eilean-configuration-manual