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