File: generate-store-info.nix

package info (click to toggle)
nix 2.26.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 12,524 kB
  • sloc: cpp: 87,540; sh: 8,864; perl: 649; yacc: 466; xml: 410; javascript: 378; lex: 329; ansic: 215; python: 128; sql: 56; makefile: 33; exp: 5; ruby: 1
file content (80 lines) | stat: -rw-r--r-- 1,762 bytes parent folder | download
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
let
  inherit (builtins)
    attrNames
    listToAttrs
    concatStringsSep
    readFile
    replaceStrings
    ;
  inherit (import <nix/utils.nix>)
    optionalString
    filterAttrs
    trim
    squash
    toLower
    unique
    indent
    ;
  showSettings = import <nix/generate-settings.nix>;
in

{
  # data structure describing all stores and their parameters
  storeInfo,
  # whether to add inline HTML tags
  # `lowdown` does not eat those for one of the output modes
  inlineHTML,
}:

let

  showStore =
    { name, slug }:
    {
      settings,
      doc,
      experimentalFeature,
    }:
    let
      result = squash ''
        # ${name}

        ${experimentalFeatureNote}

        ${doc}

        ## Settings

        ${showSettings {
          prefix = "store-${slug}";
          inherit inlineHTML;
        } settings}
      '';

      experimentalFeatureNote = optionalString (experimentalFeature != null) ''
        > **Warning**
        >
        > This store is part of an
        > [experimental feature](@docroot@/development/experimental-features.md).
        >
        > To use this store, make sure the
        > [`${experimentalFeature}` experimental feature](@docroot@/development/experimental-features.md#xp-feature-${experimentalFeature})
        > is enabled.
        > For example, include the following in [`nix.conf`](@docroot@/command-ref/conf-file.md):
        >
        > ```
        > extra-experimental-features = ${experimentalFeature}
        > ```
      '';
    in
    result;

  storesList = map (name: rec {
    inherit name;
    slug = replaceStrings [ " " ] [ "-" ] (toLower name);
    filename = "${slug}.md";
    page = showStore { inherit name slug; } storeInfo.${name};
  }) (attrNames storeInfo);

in
storesList