mirror of
https://github.com/nix-community/nixvim.git
synced 2025-07-10 09:14:31 +02:00
plugins/catppuccin: add colorscheme + test
This commit is contained in:
parent
1d478841f8
commit
a10b6f02cd
3 changed files with 403 additions and 0 deletions
352
plugins/colorschemes/catppuccin.nix
Normal file
352
plugins/colorschemes/catppuccin.nix
Normal file
|
@ -0,0 +1,352 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
} @ args:
|
||||
with lib; let
|
||||
cfg = config.colorschemes.catppuccin;
|
||||
helpers = import ../helpers.nix args;
|
||||
in {
|
||||
options = {
|
||||
colorschemes.catppuccin = {
|
||||
enable = mkEnableOption "catppuccin";
|
||||
|
||||
package =
|
||||
helpers.mkPackageOption "catppuccin" pkgs.vimPlugins.catppuccin-nvim;
|
||||
|
||||
flavour = helpers.defaultNullOpts.mkEnumFirstDefault [
|
||||
"latte"
|
||||
"mocha"
|
||||
"frappe"
|
||||
"macchiato"
|
||||
] "Theme flavour";
|
||||
|
||||
background = let
|
||||
mkBackgroundStyle = name:
|
||||
helpers.defaultNullOpts.mkEnumFirstDefault [
|
||||
"latte"
|
||||
"mocha"
|
||||
"frappe"
|
||||
"macchiato"
|
||||
] "Background for ${name}";
|
||||
in {
|
||||
light = mkBackgroundStyle "light";
|
||||
dark = mkBackgroundStyle "dark";
|
||||
};
|
||||
|
||||
terminalColors =
|
||||
helpers.defaultNullOpts.mkBool false
|
||||
"Configure the colors used when opening a :terminal in Neovim";
|
||||
|
||||
transparentBackground =
|
||||
helpers.defaultNullOpts.mkBool false "Enable Transparent background";
|
||||
|
||||
showBufferEnd =
|
||||
helpers.defaultNullOpts.mkBool false
|
||||
"show the '~' characters after the end of buffers";
|
||||
|
||||
dimInactive = {
|
||||
enabled =
|
||||
helpers.defaultNullOpts.mkBool false
|
||||
"if true, dims the background color of inactive window or buffer or split";
|
||||
|
||||
shade =
|
||||
helpers.defaultNullOpts.mkStr "dark"
|
||||
"sets the shade to apply to the inactive split or window or buffer";
|
||||
|
||||
percentage =
|
||||
helpers.defaultNullOpts.mkNullable (types.numbers.between 0.0 1.0)
|
||||
"0.15"
|
||||
"percentage of the shade to apply to the inactive window, split or buffer";
|
||||
};
|
||||
|
||||
disableItalic = helpers.defaultNullOpts.mkBool false "Force no italic";
|
||||
|
||||
disableBold = helpers.defaultNullOpts.mkBool false "Force no bold";
|
||||
|
||||
styles = {
|
||||
comments =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
||||
''[ "italic" ]'' "Define comments highlight properties";
|
||||
|
||||
conditionals =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
||||
''[ 'italic" ]'' "Define conditionals highlight properties";
|
||||
|
||||
loops =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
||||
"Define loops highlight properties";
|
||||
|
||||
functions =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
||||
"Define functions highlight properties";
|
||||
|
||||
keywords =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
||||
"Define keywords highlight properties";
|
||||
|
||||
strings =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
||||
"Define strings highlight properties";
|
||||
|
||||
variables =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
||||
"Define variables highlight properties";
|
||||
|
||||
numbers =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
||||
"Define numbers highlight properties";
|
||||
|
||||
booleans =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
||||
"Define booleans highlight properties";
|
||||
|
||||
properties =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
||||
"Define properties highlight properties";
|
||||
|
||||
types =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
||||
"Define types highlight properties";
|
||||
|
||||
operators =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
||||
"Define operators highlight properties";
|
||||
};
|
||||
|
||||
colorOverrides = helpers.defaultNullOpts.mkNullable (types.attrsOf types.str) "{}" ''
|
||||
Define color overrides
|
||||
Example:
|
||||
color_overrides = {
|
||||
all = {
|
||||
text = "#ffffff",
|
||||
},
|
||||
latte = {
|
||||
base = "#ff0000",
|
||||
mantle = "#242424",
|
||||
crust = "#474747",
|
||||
},
|
||||
frappe = {},
|
||||
macchiato = {},
|
||||
mocha = {},
|
||||
}
|
||||
'';
|
||||
|
||||
customHighlights =
|
||||
helpers.defaultNullOpts.mkNullable
|
||||
(with types; either str (attrsOf attrs)) "" ''
|
||||
Override specific highlight groups to use other groups or a hex color
|
||||
Example:
|
||||
function(colors)
|
||||
return {
|
||||
Comment = { fg = colors.flamingo },
|
||||
["@constant.builtin"] = { fg = colors.peach, style = {} },
|
||||
["@comment"] = { fg = colors.surface2, style = { "italic" } },
|
||||
}
|
||||
end
|
||||
'';
|
||||
|
||||
integrations = {
|
||||
aerial = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
barbar = helpers.defaultNullOpts.mkBool config.plugins.barbar.enable "";
|
||||
|
||||
beacon = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
cmp = helpers.defaultNullOpts.mkBool config.plugins.nvim-cmp.enable "";
|
||||
|
||||
coc_nvim = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
dashboard =
|
||||
helpers.defaultNullOpts.mkBool config.plugins.dashboard.enable "";
|
||||
|
||||
fern = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
fidget = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
gitgutter =
|
||||
helpers.defaultNullOpts.mkBool config.plugins.gitgutter.enable "";
|
||||
|
||||
gitsigns =
|
||||
helpers.defaultNullOpts.mkBool config.plugins.gitsigns.enable "";
|
||||
|
||||
harpoon =
|
||||
helpers.defaultNullOpts.mkBool config.plugins.harpoon.enable "";
|
||||
|
||||
headlines = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
hop = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
illuminate = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
leap = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
lightspeed = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
lsp_saga =
|
||||
helpers.defaultNullOpts.mkBool config.plugins.lspsaga.enable "";
|
||||
|
||||
lsp_trouble =
|
||||
helpers.defaultNullOpts.mkBool config.plugins.trouble.enable "";
|
||||
|
||||
markdown = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
mason = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
mini = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
neogit = helpers.defaultNullOpts.mkBool config.plugins.neogit.enable "";
|
||||
|
||||
neotest = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
neotree =
|
||||
helpers.defaultNullOpts.mkBool config.plugins.neo-tree.enable "";
|
||||
|
||||
noice = helpers.defaultNullOpts.mkBool config.plugins.noice.enable "";
|
||||
|
||||
notify = helpers.defaultNullOpts.mkBool config.plugins.notify.enable "";
|
||||
|
||||
nvimtree =
|
||||
helpers.defaultNullOpts.mkBool config.plugins.nvim-tree.enable "";
|
||||
|
||||
octo = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
overseer = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
pounce = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
sandwich = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
semantic_tokens = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
symbols_outline = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
telekasten = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
telescope =
|
||||
helpers.defaultNullOpts.mkBool config.plugins.telescope.enable "";
|
||||
|
||||
treesitter =
|
||||
helpers.defaultNullOpts.mkBool config.plugins.treesitter.enable "";
|
||||
|
||||
treesitter_context =
|
||||
helpers.defaultNullOpts.mkBool config.plugins.treesitter.enable "";
|
||||
|
||||
ts_rainbow =
|
||||
helpers.defaultNullOpts.mkBool
|
||||
config.plugins.treesitter-rainbow.enable "";
|
||||
|
||||
ts_rainbow2 = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
vim_sneak = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
vimwiki = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
which_key =
|
||||
helpers.defaultNullOpts.mkBool config.plugins.which-key.enable "";
|
||||
|
||||
barbecue = {
|
||||
dim_dirname = helpers.defaultNullOpts.mkBool true "";
|
||||
|
||||
bold_basename = helpers.defaultNullOpts.mkBool true "";
|
||||
|
||||
dim_context = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
alt_background = helpers.defaultNullOpts.mkBool false "";
|
||||
};
|
||||
|
||||
dap = {
|
||||
enabled = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
enable_ui = helpers.defaultNullOpts.mkBool false "";
|
||||
};
|
||||
indent_blankline = {
|
||||
enabled =
|
||||
helpers.defaultNullOpts.mkBool
|
||||
config.plugins.indent-blankline.enable "";
|
||||
|
||||
colored_indent_levels = helpers.defaultNullOpts.mkBool false "";
|
||||
};
|
||||
|
||||
native_lsp = {
|
||||
enabled = helpers.defaultNullOpts.mkBool config.plugins.lsp.enable "";
|
||||
|
||||
virtual_text = {
|
||||
errors =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
||||
''[ "italic" ]'' "";
|
||||
|
||||
hints =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
||||
''[ "italic" ]'' "";
|
||||
|
||||
warnings =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
||||
''[ "italic" ]'' "";
|
||||
|
||||
information =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
||||
''[ "italic" ]'' "";
|
||||
};
|
||||
|
||||
underlines = {
|
||||
errors =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
||||
''[ "underline" ]'' "";
|
||||
|
||||
hints =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
||||
''[ "underline" ]'' "";
|
||||
|
||||
warnings =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
||||
''[ "underline" ]'' "";
|
||||
|
||||
information =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
||||
''[ "underline" ]'' "";
|
||||
};
|
||||
};
|
||||
|
||||
navic = {
|
||||
enabled = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
custom_bg = helpers.defaultNullOpts.mkStr "NONE" "";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
colorscheme = "catppuccin";
|
||||
extraPlugins = [cfg.package];
|
||||
options = {termguicolors = true;};
|
||||
extraConfigLuaPre = let
|
||||
setupOptions = with cfg; {
|
||||
inherit (cfg) flavour background styles integrations;
|
||||
transparent_background = transparentBackground;
|
||||
show_end_of_buffer = showBufferEnd;
|
||||
term_colors = terminalColors;
|
||||
dim_inactive = dimInactive;
|
||||
no_italic = disableItalic;
|
||||
no_bold = disableBold;
|
||||
color_overrides = colorOverrides;
|
||||
custom_highlights =
|
||||
helpers.ifNonNull' cfg.customHighlights
|
||||
(
|
||||
if isString customHighlights
|
||||
then helpers.mkRaw customHighlights
|
||||
else
|
||||
helpers.mkRaw ''
|
||||
function(colors)
|
||||
return
|
||||
${helpers.toLuaObject customHighlights}
|
||||
end
|
||||
''
|
||||
);
|
||||
};
|
||||
in ''
|
||||
require("catppuccin").setup(${helpers.toLuaObject setupOptions})
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -10,6 +10,7 @@
|
|||
./colorschemes/onedark.nix
|
||||
./colorschemes/poimandres.nix
|
||||
./colorschemes/tokyonight.nix
|
||||
./colorschemes/catppuccin.nix
|
||||
|
||||
./completion/coq.nix
|
||||
./completion/coq-thirdparty.nix
|
||||
|
|
50
tests/test-sources/plugins/colorschemes/catppuccin.nix
Normal file
50
tests/test-sources/plugins/colorschemes/catppuccin.nix
Normal file
|
@ -0,0 +1,50 @@
|
|||
{
|
||||
# Empty configuration
|
||||
empty = {colorschemes.catppuccin.enable = true;};
|
||||
|
||||
# All the upstream default options of poimandres
|
||||
defaults = {
|
||||
colorschemes.catppuccin = {
|
||||
enable = true;
|
||||
flavour = "mocha";
|
||||
background = {
|
||||
light = "latte";
|
||||
dark = "mocha";
|
||||
};
|
||||
transparentBackground = false;
|
||||
terminalColors = true;
|
||||
showBufferEnd = false;
|
||||
dimInactive = {
|
||||
enabled = true;
|
||||
shade = "dark";
|
||||
percentage = 0.15;
|
||||
};
|
||||
disableItalic = true;
|
||||
disableBold = true;
|
||||
styles = {
|
||||
comments = ["italic"];
|
||||
conditionals = ["italic"];
|
||||
loops = [];
|
||||
functions = [];
|
||||
keywords = [];
|
||||
strings = [];
|
||||
variables = [];
|
||||
numbers = [];
|
||||
booleans = [];
|
||||
properties = [];
|
||||
types = [];
|
||||
operators = [];
|
||||
};
|
||||
colorOverrides = {};
|
||||
customHighlights = {};
|
||||
integrations = {
|
||||
cmp = true;
|
||||
gitsigns = true;
|
||||
nvimtree = true;
|
||||
telescope = true;
|
||||
notify = false;
|
||||
mini = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue