forked from lix-project/lix
4781e7fa70
This makes for more useful manual table of contents, that displays the information at a glance. The `nix help-stores` command is kept as-is, even though it will show up in the manual with the same information as these pages due to the way it is written as a "`--help`-style" command. Deciding what to do with that command is left for a later PR. This change also lists all store types at the top of the respective overview page. Co-authored-by: John Ericson <John.Ericson@Obsidian.Systems
58 lines
1.6 KiB
Nix
58 lines
1.6 KiB
Nix
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}
|
|
|
|
${doc}
|
|
|
|
${experimentalFeatureNote}
|
|
|
|
## Settings
|
|
|
|
${showSettings { prefix = "store-${slug}"; inherit inlineHTML; } settings}
|
|
'';
|
|
|
|
experimentalFeatureNote = optionalString (experimentalFeature != null) ''
|
|
> **Warning**
|
|
>
|
|
> This store is part of an
|
|
> [experimental feature](@docroot@/contributing/experimental-features.md).
|
|
>
|
|
> To use this store, make sure the
|
|
> [`${experimentalFeature}` experimental feature](@docroot@/contributing/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
|