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