nvf/modules/plugins/theme/supported-themes/gruvbox.nix
Charlie Root a37625c3b0
confusion
2025-01-18 22:45:57 +01:00

66 lines
1.5 KiB
Nix

{
config,
lib,
...
}: let
inherit (lib.attrsets) genAttrs mergeAttrsList;
inherit (lib.options) mkOption mkEnableOption;
inherit (lib.types) bool str;
inherit (lib.nvim.types) mkPluginSetupOption;
cfg = config.vim.theme;
mkEnableOption' = name: mkEnableOption name // {default = true;};
in {
gruvbox = {
setupOpts =
mkPluginSetupOption "gruvbox" {
transparent_mode = mkOption {
type = bool;
default = cfg.transparent;
internal = true;
};
italic =
{
operators = mkEnableOption "operators";
}
// genAttrs [
"strings"
"emphasis"
"comments"
"folds"
] (name: mkEnableOption' name);
contrast = mkOption {
type = str;
default = "";
};
# TODO: fix these
# palette_overrides = mkLuaInline "{}";
# overrides = mkLuaInline "{}";
}
// mergeAttrsList [
(genAttrs [
"terminal_colors"
"undercurls"
"underline"
"bold"
"strikethrough"
"inverse"
] (name: mkEnableOption' name))
(genAttrs [
"invert_selection"
"invert_signs"
"invert_tabline"
"invert_intend_guides"
"dim_inactive"
] (name: mkEnableOption name))
];
setup = ''
-- Gruvbox theme
vim.o.background = "${cfg.style}"
vim.cmd("colorscheme gruvbox")
'';
styles = ["dark" "light"];
};
}