mirror of
https://github.com/nix-community/nixvim.git
synced 2025-07-10 17:24:32 +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/onedark.nix
|
||||||
./colorschemes/poimandres.nix
|
./colorschemes/poimandres.nix
|
||||||
./colorschemes/tokyonight.nix
|
./colorschemes/tokyonight.nix
|
||||||
|
./colorschemes/catppuccin.nix
|
||||||
|
|
||||||
./completion/coq.nix
|
./completion/coq.nix
|
||||||
./completion/coq-thirdparty.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