1
0
Fork 0
mirror of https://github.com/nix-community/nixvim.git synced 2025-11-08 19:46:06 +01:00
nixvim/docs/modules/menu.nix
Matt Sturgeon 4f03ca05d9 docs/lib: generalise menu impl using module system
Move the mdbook menu rendering code into the module system and
generalise it to apply to multiple "categories" (mdbook parts) and
"types" of category (prefix, suffix, etc).
2025-09-30 16:21:23 +00:00

43 lines
805 B
Nix

{
lib,
config,
options,
...
}:
let
categoryType = lib.types.submoduleWith {
modules = [ ./category.nix ];
};
categories = builtins.removeAttrs config (builtins.attrNames options);
in
{
freeformType = lib.types.attrsOf categoryType;
options._menu = {
text = lib.mkOption {
type = lib.types.str;
description = "The rendered menu.";
readOnly = true;
};
};
config._menu = {
text = lib.pipe categories [
builtins.attrValues
(map (x: x._category))
(lib.sortOn (x: x.order))
(builtins.groupBy (x: x.type))
(
{
prefix ? [ ],
normal ? [ ],
suffix ? [ ],
}:
prefix ++ normal ++ suffix
)
(map (x: x.text))
(builtins.concatStringsSep "\n\n")
];
};
}