diff --git a/lib/neovim-plugin.nix b/lib/neovim-plugin.nix index 58d04cb2ae..262365db9d 100644 --- a/lib/neovim-plugin.nix +++ b/lib/neovim-plugin.nix @@ -32,13 +32,15 @@ with lib; rec { mkNeovimPlugin = config: { name, - colorscheme ? false, maintainers, url ? defaultPackage.meta.homepage, imports ? [], # deprecations deprecateExtraOptions ? false, optionsRenamedToSettings ? [], + # colorscheme + isColorscheme ? false, + colorscheme ? name, # options originalName ? name, defaultPackage, @@ -53,7 +55,7 @@ with lib; rec { callSetup ? true, }: let namespace = - if colorscheme + if isColorscheme then "colorschemes" else "plugins"; in { @@ -114,7 +116,7 @@ with lib; rec { config = let cfg = config.${namespace}.${name}; extraConfigNamespace = - if colorscheme + if isColorscheme then "extraConfigLuaPre" else "extraConfigLua"; in @@ -128,10 +130,8 @@ with lib; rec { require('${luaName}').setup(${toLuaObject cfg.settings}) ''; } - (optionalAttrs colorscheme { - # We use `mkDefault` here to let individual plugins override this option. - # For instance, setting it to `null` a specific way of setting the coloscheme. - colorscheme = lib.mkDefault name; + (optionalAttrs (isColorscheme && (colorscheme != null)) { + inherit colorscheme; }) (extraConfig cfg) ] diff --git a/lib/vim-plugin.nix b/lib/vim-plugin.nix index c552eaaa2d..04d6230520 100644 --- a/lib/vim-plugin.nix +++ b/lib/vim-plugin.nix @@ -6,7 +6,6 @@ with lib; { mkVimPlugin = config: { name, - colorscheme ? false, url ? if defaultPackage != null then defaultPackage.meta.homepage @@ -16,6 +15,9 @@ with lib; { # deprecations deprecateExtraConfig ? false, optionsRenamedToSettings ? [], + # colorscheme + isColorscheme ? false, + colorscheme ? name, # options originalName ? name, defaultPackage ? null, @@ -30,7 +32,7 @@ with lib; { extraPackages ? [], }: let namespace = - if colorscheme + if isColorscheme then "colorschemes" else "plugins"; @@ -127,10 +129,8 @@ with lib; { # does this evaluate package? it would not be desired to evaluate package if we use another package. extraPlugins = extraPlugins ++ optional (defaultPackage != null) cfg.package; } - (optionalAttrs colorscheme { - # We use `mkDefault` here to let individual plugins override this option. - # For instance, setting it to `null` a specific way of setting the coloscheme. - colorscheme = lib.mkDefault name; + (optionalAttrs (isColorscheme && (colorscheme != null)) { + inherit colorscheme; }) (extraConfig cfg) ] diff --git a/plugins/colorschemes/ayu.nix b/plugins/colorschemes/ayu.nix index 1806af1c28..6e08e77333 100644 --- a/plugins/colorschemes/ayu.nix +++ b/plugins/colorschemes/ayu.nix @@ -8,9 +8,11 @@ with lib; helpers.neovim-plugin.mkNeovimPlugin config { name = "ayu"; - colorscheme = true; + isColorscheme = true; originalName = "neovim-ayu"; defaultPackage = pkgs.vimPlugins.neovim-ayu; + # The colorscheme option is set by the `setup` function. + colorscheme = null; callSetup = false; maintainers = [maintainers.GaetanLepage]; @@ -42,9 +44,6 @@ with lib; }; extraConfig = cfg: { - # The colorscheme option is set by the `setup` function. - colorscheme = null; - extraConfigLuaPre = '' local ayu = require("ayu") ayu.setup(${helpers.toLuaObject cfg.settings}) diff --git a/plugins/colorschemes/gruvbox.nix b/plugins/colorschemes/gruvbox.nix index 1cfdc5f749..bfbaa7bcf3 100644 --- a/plugins/colorschemes/gruvbox.nix +++ b/plugins/colorschemes/gruvbox.nix @@ -7,7 +7,7 @@ }: helpers.neovim-plugin.mkNeovimPlugin config { name = "gruvbox"; - colorscheme = true; + isColorscheme = true; originalName = "gruvbox.nvim"; defaultPackage = pkgs.vimPlugins.gruvbox-nvim; diff --git a/plugins/colorschemes/nord.nix b/plugins/colorschemes/nord.nix index 84d49936b4..f2963c4515 100644 --- a/plugins/colorschemes/nord.nix +++ b/plugins/colorschemes/nord.nix @@ -7,7 +7,7 @@ }: helpers.vim-plugin.mkVimPlugin config { name = "nord"; - colorscheme = true; + isColorscheme = true; originalName = "nord.nvim"; defaultPackage = pkgs.vimPlugins.nord-nvim; globalPrefix = "nord_";