aboutsummaryrefslogtreecommitdiff
path: root/doc/manual/generate-options.nix
blob: 84d90beb67032ae65808ece1433f83fd76f2c088 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
with builtins;
with import ./utils.nix;

options:

concatStrings (map
  (name:
    let option = options.${name}; in
    "  - `${name}`  \n\n"
    + concatStrings (map (s: "    ${s}\n") (splitLines option.description)) + "\n\n"
    + (if option.documentDefault
       then "    **Default:** " + (
       if option.value == "" || option.value == []
       then "*empty*"
       else if isBool option.value
       then (if option.value then "`true`" else "`false`")
       else
         # n.b. a StringMap value type is specified as a string, but
         # this shows the value type.  The empty stringmap is "null" in
         # JSON, but that converts to "{ }" here.
         (if isAttrs option.value then "`\"\"`"
          else "`" + toString option.value + "`")) + "\n\n"
       else "    **Default:** *machine-specific*\n")
    + (if option.aliases != []
       then "    **Deprecated alias:** " + (concatStringsSep ", " (map (s: "`${s}`") option.aliases)) + "\n\n"
       else "")
    )
  (attrNames options))