nix-community.nixvim/plugins/colorschemes/gruvbox.nix

148 lines
4.4 KiB
Nix
Raw Normal View History

{
lib,
helpers,
config,
pkgs,
...
}:
with lib; let
cfg = config.colorschemes.gruvbox;
colors = types.enum ["bg" "red" "green" "yellow" "blue" "purple" "aqua" "gray" "fg" "bg0_h" "bg0" "bg1" "bg2" "bg3" "bg4" "gray" "orange" "bg0_s" "fg0" "fg1" "fg2" "fg3" "fg4"];
in {
2020-12-30 01:05:51 +00:00
options = {
colorschemes.gruvbox = {
2023-01-22 03:32:08 +00:00
enable = mkEnableOption "gruvbox";
2021-01-17 22:15:54 +00:00
package = helpers.mkPackageOption "gruvbox" pkgs.vimPlugins.gruvbox-nvim;
general: add package options (#127) * barbar: package option * Base16: package option * gruvbox: package option * nord: package option * one: package option * onedark: package option * tokyonight: package option * nvim-cmp: package option * coq: package option * lspkind: package option * helpers: added package option to mkPlugin * fugitive: package option * gitgutter: package option * gitsigns: package option * neogit: package option * ledger: package option * nix: package option * plantuml-syntax: package option * treesitter-context: package option + formatting * treesitter-refactor: package option + formatting * treesitter: package option * zig: package option * null-ls: package option * null-ls/servers: package option * lsp-lines: package option * lspsaga: package option * trouble: package option * luasnip: added description for package option * airline: package option * lightline: package option * lualine: package option * telescope: package option * telescope/frecency: package option * telescope/fzf-native: package option * telescope/media-files: package option * comment-nvim: package option * vim-commentary: package option * dashboard: package option * easyescape: package option * emmet: package option * endwise: package option * floaterm: package option * goyo: package option * intellitab: package option * mark-radar: package option * notify: package option * nvim-autopairs: package option * nvim-tree: package option * project-nvim: package option * specs: package option * startify: package option * surround: package option * undotree: package option
2023-01-19 10:45:15 +00:00
2023-01-22 03:32:08 +00:00
italics = mkEnableOption "italics";
bold = mkEnableOption "bold text";
2023-01-22 03:32:08 +00:00
underline = mkEnableOption "underlined text";
undercurl = mkEnableOption "undercurled text";
2021-01-17 22:15:54 +00:00
contrastDark = mkOption {
type = types.nullOr (types.enum ["soft" "medium" "hard"]);
2021-01-17 22:15:54 +00:00
default = null;
description = "Contrast for the dark mode";
};
contrastLight = mkOption {
type = types.nullOr (types.enum ["soft" "medium" "hard"]);
2021-01-17 22:15:54 +00:00
default = null;
description = "Contrast for the light mode";
};
highlightSearchCursor = mkOption {
type = types.nullOr colors;
default = null;
description = "The cursor background while search is highlighted";
};
numberColumn = mkOption {
type = types.nullOr colors;
default = null;
description = "The number column background";
};
signColumn = mkOption {
type = types.nullOr colors;
default = null;
description = "The sign column background";
};
colorColumn = mkOption {
type = types.nullOr colors;
default = null;
description = "The color column background";
};
vertSplitColor = mkOption {
type = types.nullOr colors;
default = null;
description = "The vertical split background color";
};
italicizeComments = mkOption {
type = types.bool;
default = true;
description = "Italicize comments";
};
italicizeStrings = mkOption {
type = types.bool;
default = false;
description = "Italicize strings";
};
invertSelection = mkOption {
type = types.bool;
default = true;
description = "Invert the select text";
};
invertSigns = mkOption {
type = types.bool;
default = false;
description = "Invert GitGutter and Syntastic signs";
};
invertIndentGuides = mkOption {
type = types.bool;
default = false;
description = "Invert indent guides";
};
invertTabline = mkOption {
type = types.bool;
default = false;
description = "Invert tabline highlights";
};
improvedStrings = mkOption {
type = types.bool;
default = false;
description = "Improved strings";
};
improvedWarnings = mkOption {
type = types.bool;
default = false;
description = "Improved warnings";
};
2023-01-22 03:32:08 +00:00
transparentBg = mkEnableOption "transparent background";
2021-01-17 22:15:54 +00:00
2023-01-22 03:32:08 +00:00
trueColor = mkEnableOption "true color support";
2020-12-30 01:05:51 +00:00
};
};
config = mkIf cfg.enable {
colorscheme = "gruvbox";
extraPlugins = [cfg.package];
globals = {
gruvbox_bold = mkIf (!cfg.bold) 0;
2023-05-22 15:45:47 +05:30
gruvbox_italic = mkIf cfg.italics 1;
gruvbox_underline = mkIf cfg.underline 1;
gruvbox_undercurl = mkIf cfg.undercurl 1;
gruvbox_transparent_bg = mkIf cfg.transparentBg 0;
gruvbox_contrast_dark = mkIf (cfg.contrastDark != null) cfg.contrastDark;
gruvbox_contrast_light = mkIf (cfg.contrastLight != null) cfg.contrastLight;
gruvbox_hls_cursor = mkIf (cfg.highlightSearchCursor != null) cfg.highlightSearchCursor;
gruvbox_number_column = mkIf (cfg.numberColumn != null) cfg.numberColumn;
gruvbox_sign_column = mkIf (cfg.signColumn != null) cfg.signColumn;
gruvbox_color_column = mkIf (cfg.colorColumn != null) cfg.colorColumn;
gruvbox_vert_split = mkIf (cfg.vertSplitColor != null) cfg.vertSplitColor;
gruvbox_italicize_comments = mkIf (!cfg.italicizeComments) 0;
2023-05-22 15:45:47 +05:30
gruvbox_italicize_strings = mkIf cfg.italicizeStrings 1;
gruvbox_invert_selection = mkIf (!cfg.invertSelection) 0;
2023-05-22 15:45:47 +05:30
gruvbox_invert_signs = mkIf cfg.invertSigns 1;
gruvbox_invert_indent_guides = mkIf cfg.invertIndentGuides 1;
gruvbox_invert_tabline = mkIf cfg.invertTabline 1;
gruvbox_improved_strings = mkIf cfg.improvedStrings 1;
gruvbox_improved_warnings = mkIf cfg.improvedWarnings 1;
2020-12-30 01:05:51 +00:00
};
};
}