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