let
  inherit (builtins) attrValues mapAttrs;
  inherit (import ./utils.nix) concatStrings optionalString;
  showSettings = import ./generate-settings.nix;
in

inlineHTML: storesInfo:

let

  showStore = name: { settings, doc, experimentalFeature }:
    let

    result = ''
      ## ${name}

      ${doc}

      ${experimentalFeatureNote}

      ### Settings

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

      # markdown doesn't like spaces in URLs
      slug = builtins.replaceStrings [ " " ] [ "-" ] name;

    experimentalFeatureNote = optionalString (experimentalFeature != null) ''
      > **Warning**
      > This store is part of an
      > [experimental feature](@docroot@/contributing/experimental-features.md).

      To use this store, you need to make sure the corresponding experimental feature,
      [`${experimentalFeature}`](@docroot@/contributing/experimental-features.md#xp-feature-${experimentalFeature}),
      is enabled.
      For example, include the following in [`nix.conf`](#):

      ```
      extra-experimental-features = ${experimentalFeature}
      ```
    '';
  in result;

in concatStrings (attrValues (mapAttrs showStore storesInfo))