From 8f9fb202555030cc78adcb07e4e6c9eb2e150dcd Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Sun, 31 Aug 2025 14:07:13 +0100 Subject: [PATCH 01/11] vimPlugins.corePlugins: move to dedicated overlay file --- .../editors/vim/plugins/corePlugins.nix | 31 +++++++++++++++++++ .../editors/vim/plugins/default.nix | 3 ++ .../editors/vim/plugins/overrides.nix | 31 ------------------- 3 files changed, 34 insertions(+), 31 deletions(-) create mode 100644 pkgs/applications/editors/vim/plugins/corePlugins.nix diff --git a/pkgs/applications/editors/vim/plugins/corePlugins.nix b/pkgs/applications/editors/vim/plugins/corePlugins.nix new file mode 100644 index 000000000000..dde152b0837e --- /dev/null +++ b/pkgs/applications/editors/vim/plugins/corePlugins.nix @@ -0,0 +1,31 @@ +{ + symlinkJoin, +}: +final: prev: { + + corePlugins = symlinkJoin { + name = "core-vim-plugins"; + paths = with final; [ + # plugin managers + lazy-nvim + mini-deps + packer-nvim + vim-plug + + # core dependencies + plenary-nvim + + # popular plugins + mini-nvim + nvim-cmp + nvim-lspconfig + nvim-treesitter + vim-airline + vim-fugitive + vim-surround + ]; + + meta.description = "Collection of popular vim plugins (for internal testing purposes)"; + }; + +} diff --git a/pkgs/applications/editors/vim/plugins/default.nix b/pkgs/applications/editors/vim/plugins/default.nix index 0bf9f74f2ede..4937bb38f670 100644 --- a/pkgs/applications/editors/vim/plugins/default.nix +++ b/pkgs/applications/editors/vim/plugins/default.nix @@ -48,6 +48,8 @@ let inherit (neovimUtils) buildNeovimPlugin; }; + corePlugins = callPackage ./corePlugins.nix { }; + # TL;DR # * Add your plugin to ./vim-plugin-names # * run ./update.py @@ -66,6 +68,7 @@ lib.pipe initialPackages [ (extends luaPackagePlugins) (extends nodePackagePlugins) (extends nonGeneratedPlugins) + (extends corePlugins) (extends overrides) (extends aliases) lib.makeExtensible diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix index 6baecc1ec162..6259dadbc518 100644 --- a/pkgs/applications/editors/vim/plugins/overrides.nix +++ b/pkgs/applications/editors/vim/plugins/overrides.nix @@ -9,7 +9,6 @@ fetchurl, neovimUtils, replaceVars, - symlinkJoin, # Language dependencies fetchYarnDeps, mkYarnModules, @@ -137,36 +136,6 @@ let buildNeoVimPlugin = throw "New plugin definitions should be done outside `overrides.nix`"; in { - corePlugins = symlinkJoin { - name = "core-vim-plugins"; - paths = with self; [ - # plugin managers - lazy-nvim - mini-deps - packer-nvim - vim-plug - - # core dependencies - plenary-nvim - - # popular plugins - mini-nvim - nvim-cmp - nvim-lspconfig - nvim-treesitter - vim-airline - vim-fugitive - vim-surround - ]; - - meta = { - description = "Collection of popular vim plugins (for internal testing purposes)"; - }; - }; - - ####################### - # Regular overrides - advanced-git-search-nvim = super.advanced-git-search-nvim.overrideAttrs { checkInputs = with self; [ snacks-nvim From 4cc61351e6180ce9d51eb43d8403e94e7c21ebc7 Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Sun, 31 Aug 2025 12:57:40 +0100 Subject: [PATCH 02/11] vimPlugins.fzf-lua: move to luaPackagePlugins --- pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix | 1 + pkgs/applications/editors/vim/plugins/overrides.nix | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix b/pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix index 8a94cc10b390..7b227f8f5020 100644 --- a/pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix +++ b/pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix @@ -9,6 +9,7 @@ let luarocksPackageNames = [ "fidget-nvim" + "fzf-lua" "gitsigns-nvim" "grug-far-nvim" "image-nvim" diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix index 6259dadbc518..467aaadfd747 100644 --- a/pkgs/applications/editors/vim/plugins/overrides.nix +++ b/pkgs/applications/editors/vim/plugins/overrides.nix @@ -1275,8 +1275,7 @@ in dependencies = [ self.plenary-nvim ]; }; - fzf-lua = neovimUtils.buildNeovimPlugin { - luaAttr = luaPackages.fzf-lua; + fzf-lua = super.fzf-lua.overrideAttrs { runtimeDeps = [ fzf ]; nvimSkipModules = [ "fzf-lua.shell_helper" From 5d9808307e2d3c3414d19260285e6bd46c3251e7 Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Sun, 31 Aug 2025 13:00:16 +0100 Subject: [PATCH 03/11] vimPlugins.haskell-tools-nvim: move to luaPackagePlugins --- pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix | 1 + pkgs/applications/editors/vim/plugins/overrides.nix | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix b/pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix index 7b227f8f5020..88733be922c3 100644 --- a/pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix +++ b/pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix @@ -12,6 +12,7 @@ let "fzf-lua" "gitsigns-nvim" "grug-far-nvim" + "haskell-tools-nvim" "image-nvim" "lsp-progress-nvim" "lualine-nvim" diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix index 467aaadfd747..e7b04ff049e9 100644 --- a/pkgs/applications/editors/vim/plugins/overrides.nix +++ b/pkgs/applications/editors/vim/plugins/overrides.nix @@ -1401,10 +1401,9 @@ in dependencies = [ self.luasnip ]; }; - haskell-tools-nvim = neovimUtils.buildNeovimPlugin { + haskell-tools-nvim = super.haskell-tools-nvim.overrideAttrs { # Optional integrations checkInputs = [ self.telescope-nvim ]; - luaAttr = luaPackages.haskell-tools-nvim; }; helm-ls-nvim = super.helm-ls-nvim.overrideAttrs { From 6db25aa96ba7f347b35b530c98049432cb55bde8 Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Sun, 31 Aug 2025 13:14:04 +0100 Subject: [PATCH 04/11] vimPlugins.rocks-nvim: move to luaPackagePlugins --- .../editors/vim/plugins/luaPackagePlugins.nix | 1 + .../editors/vim/plugins/overrides.nix | 22 ++++++++----------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix b/pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix index 88733be922c3..f67aecbe65f3 100644 --- a/pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix +++ b/pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix @@ -36,6 +36,7 @@ let "plenary-nvim" "rest-nvim" "rocks-config-nvim" + "rocks-nvim" "rtp-nvim" "telescope-manix" "telescope-nvim" diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix index e7b04ff049e9..d9ce5af88475 100644 --- a/pkgs/applications/editors/vim/plugins/overrides.nix +++ b/pkgs/applications/editors/vim/plugins/overrides.nix @@ -3058,20 +3058,16 @@ in dependencies = [ self.plenary-nvim ]; }; - rocks-nvim = - (neovimUtils.buildNeovimPlugin { - luaAttr = luaPackages.rocks-nvim; - }).overrideAttrs - (oa: { - passthru = oa.passthru // { - initLua = '' - vim.g.rocks_nvim = { - luarocks_binary = "${neovim-unwrapped.lua.pkgs.luarocks_bootstrap}/bin/luarocks" - } - ''; - }; + rocks-nvim = super.rocks-nvim.overrideAttrs (oa: { + passthru = oa.passthru // { + initLua = '' + vim.g.rocks_nvim = { + luarocks_binary = "${neovim-unwrapped.lua.pkgs.luarocks_bootstrap}/bin/luarocks" + } + ''; + }; - }); + }); rustaceanvim = neovimUtils.buildNeovimPlugin { checkInputs = [ From d8780ce824dbb4ba08dcf80c49ae50ae15efd72d Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Sun, 31 Aug 2025 13:15:17 +0100 Subject: [PATCH 05/11] vimPlugins.rustaceanvim: move to luaPackagePlugins --- pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix | 1 + pkgs/applications/editors/vim/plugins/overrides.nix | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix b/pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix index f67aecbe65f3..851feed0f3e4 100644 --- a/pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix +++ b/pkgs/applications/editors/vim/plugins/luaPackagePlugins.nix @@ -37,6 +37,7 @@ let "rest-nvim" "rocks-config-nvim" "rocks-nvim" + "rustaceanvim" "rtp-nvim" "telescope-manix" "telescope-nvim" diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix index d9ce5af88475..98d793e52a10 100644 --- a/pkgs/applications/editors/vim/plugins/overrides.nix +++ b/pkgs/applications/editors/vim/plugins/overrides.nix @@ -3069,12 +3069,11 @@ in }); - rustaceanvim = neovimUtils.buildNeovimPlugin { + rustaceanvim = super.rustaceanvim.overrideAttrs { checkInputs = [ # Optional integration self.neotest ]; - luaAttr = luaPackages.rustaceanvim; }; rust-tools-nvim = super.rust-tools-nvim.overrideAttrs { From b0c6bd058e20cb516ae9d78a3b586b58891293e7 Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Sun, 31 Aug 2025 13:05:35 +0100 Subject: [PATCH 06/11] vimPlugins.notmuch-vim: move to non-generated --- .../editors/vim/plugins/non-generated/notmuch-vim/default.nix | 1 + pkgs/applications/editors/vim/plugins/overrides.nix | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) create mode 100644 pkgs/applications/editors/vim/plugins/non-generated/notmuch-vim/default.nix diff --git a/pkgs/applications/editors/vim/plugins/non-generated/notmuch-vim/default.nix b/pkgs/applications/editors/vim/plugins/non-generated/notmuch-vim/default.nix new file mode 100644 index 000000000000..c9b44d89fa47 --- /dev/null +++ b/pkgs/applications/editors/vim/plugins/non-generated/notmuch-vim/default.nix @@ -0,0 +1 @@ +{ notmuch }: notmuch.vim diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix index 98d793e52a10..839cfc178160 100644 --- a/pkgs/applications/editors/vim/plugins/overrides.nix +++ b/pkgs/applications/editors/vim/plugins/overrides.nix @@ -34,7 +34,6 @@ neovim-unwrapped, nim1, nodejs, - notmuch, openscad, openssh, parinfer-rust, @@ -2306,8 +2305,6 @@ in NotebookNavigator-nvim = super.NotebookNavigator-nvim.overrideAttrs { }; - notmuch-vim = notmuch.vim; - nterm-nvim = super.nterm-nvim.overrideAttrs { dependencies = [ self.aniseed ]; }; From 6a5afe36620cdc04e1ed3293371299b7de88e087 Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Sun, 31 Aug 2025 13:08:56 +0100 Subject: [PATCH 07/11] vimPlugins.nvim-treesitter-parsers: move to non-generated --- .../non-generated/nvim-treesitter-parsers/default.nix | 5 +++++ pkgs/applications/editors/vim/plugins/overrides.nix | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 pkgs/applications/editors/vim/plugins/non-generated/nvim-treesitter-parsers/default.nix diff --git a/pkgs/applications/editors/vim/plugins/non-generated/nvim-treesitter-parsers/default.nix b/pkgs/applications/editors/vim/plugins/non-generated/nvim-treesitter-parsers/default.nix new file mode 100644 index 000000000000..a1e9b0bc587d --- /dev/null +++ b/pkgs/applications/editors/vim/plugins/non-generated/nvim-treesitter-parsers/default.nix @@ -0,0 +1,5 @@ +{ + lib, + vimPlugins, +}: +lib.recurseIntoAttrs vimPlugins.nvim-treesitter.grammarPlugins diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix index 839cfc178160..582935c2d842 100644 --- a/pkgs/applications/editors/vim/plugins/overrides.nix +++ b/pkgs/applications/editors/vim/plugins/overrides.nix @@ -2663,8 +2663,6 @@ in dependencies = [ self.nvim-treesitter ]; }; - nvim-treesitter-parsers = lib.recurseIntoAttrs self.nvim-treesitter.grammarPlugins; - nvim-treesitter-pyfold = super.nvim-treesitter-pyfold.overrideAttrs { dependencies = [ self.nvim-treesitter ]; }; From 6889f7b42b0a18ef4dda6701881b2bf6969aa07b Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Sun, 31 Aug 2025 13:11:35 +0100 Subject: [PATCH 08/11] vimPlugins.parinfer-rust: move to non-generated --- .../vim/plugins/non-generated/parinfer-rust/default.nix | 1 + pkgs/applications/editors/vim/plugins/overrides.nix | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) create mode 100644 pkgs/applications/editors/vim/plugins/non-generated/parinfer-rust/default.nix diff --git a/pkgs/applications/editors/vim/plugins/non-generated/parinfer-rust/default.nix b/pkgs/applications/editors/vim/plugins/non-generated/parinfer-rust/default.nix new file mode 100644 index 000000000000..bb36ee777641 --- /dev/null +++ b/pkgs/applications/editors/vim/plugins/non-generated/parinfer-rust/default.nix @@ -0,0 +1 @@ +{ parinfer-rust }: parinfer-rust diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix index 582935c2d842..44fa507b39c6 100644 --- a/pkgs/applications/editors/vim/plugins/overrides.nix +++ b/pkgs/applications/editors/vim/plugins/overrides.nix @@ -36,7 +36,6 @@ nodejs, openscad, openssh, - parinfer-rust, ranger, ripgrep, sqlite, @@ -2867,8 +2866,6 @@ in dependencies = [ self.nui-nvim ]; }; - inherit parinfer-rust; - parpar-nvim = super.parpar-nvim.overrideAttrs { dependencies = with self; [ nvim-parinfer From 289e63cdd13e41bd3c7e9c7fbb682721b998f5cb Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Sun, 31 Aug 2025 13:17:26 +0100 Subject: [PATCH 09/11] vimPlugins.ssr-nvim: rename from ssr --- pkgs/applications/editors/vim/plugins/aliases.nix | 1 + pkgs/applications/editors/vim/plugins/overrides.nix | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/editors/vim/plugins/aliases.nix b/pkgs/applications/editors/vim/plugins/aliases.nix index 660fb8db03c1..936fc38925dc 100644 --- a/pkgs/applications/editors/vim/plugins/aliases.nix +++ b/pkgs/applications/editors/vim/plugins/aliases.nix @@ -125,6 +125,7 @@ mapAliases ( surround = vim-surround; sleuth = vim-sleuth; solidity = vim-solidity; + ssr = ssr-nvim; # Added 2025-08-31 stylish-haskell = vim-stylish-haskell; stylishHaskell = vim-stylish-haskell; # backwards compat, added 2014-10-18 suda-vim = vim-suda; # backwards compat, added 2024-05-16 diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix index 44fa507b39c6..a96cb4b87901 100644 --- a/pkgs/applications/editors/vim/plugins/overrides.nix +++ b/pkgs/applications/editors/vim/plugins/overrides.nix @@ -3206,7 +3206,7 @@ in } ); - ssr = super.ssr-nvim.overrideAttrs { + ssr-nvim = super.ssr-nvim.overrideAttrs { dependencies = [ self.nvim-treesitter ]; }; From 88ed4cf874967d61bb959179792c9a4fde39132a Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Sun, 31 Aug 2025 12:39:35 +0100 Subject: [PATCH 10/11] vimPlugins: assert overides.nix has no new attrs Follow up to c90c292cef0253385a98c6157a853d3854dbdb27 Previously we explicitly shadowed `buildVimPlugin` and `buildNeoVimPlugin` to ensure they are not used to build new plugins. This new approach is more robust by checking all attrnames defined in the overlay are already present in `super`. --- .../editors/vim/plugins/overrides.nix | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix index a96cb4b87901..f7097040520b 100644 --- a/pkgs/applications/editors/vim/plugins/overrides.nix +++ b/pkgs/applications/editors/vim/plugins/overrides.nix @@ -128,12 +128,22 @@ self: super: let luaPackages = neovim-unwrapped.lua.pkgs; - # Ensure the vim plugin builders are not used in this file. - # If they are used, these stubs will throw. - buildVimPlugin = throw "New plugin definitions should be done outside `overrides.nix`"; - buildNeoVimPlugin = throw "New plugin definitions should be done outside `overrides.nix`"; + # Ensures new attributes are not added in this file. + assertNoAdditions = + overrides: + let + prevNames = lib.attrNames super; + definedNames = lib.attrNames overrides; + addedNames = lib.subtractLists prevNames definedNames; + in + lib.throwIfNot (addedNames == [ ]) + "vimPlugins: the following attributes should not be defined in overrides.nix:${ + lib.concatMapStrings (name: "\n- ${name}") addedNames + }" + overrides; in -{ + +assertNoAdditions { advanced-git-search-nvim = super.advanced-git-search-nvim.overrideAttrs { checkInputs = with self; [ snacks-nvim From 5baa7407987a15d2b61270acf53bb3cd137eaf73 Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Sun, 31 Aug 2025 13:18:54 +0100 Subject: [PATCH 11/11] vimPlugins: cleanup unused inputs in overrides.nix --- pkgs/applications/editors/vim/plugins/overrides.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix index f7097040520b..a6b3d06c1468 100644 --- a/pkgs/applications/editors/vim/plugins/overrides.nix +++ b/pkgs/applications/editors/vim/plugins/overrides.nix @@ -7,7 +7,6 @@ fetchFromGitHub, fetchpatch, fetchurl, - neovimUtils, replaceVars, # Language dependencies fetchYarnDeps, @@ -61,7 +60,6 @@ codeium, # command-t dependencies getconf, - ruby, # cornelis dependencies cornelis, # cpsm dependencies @@ -105,7 +103,6 @@ # hurl dependencies hurl, # must be lua51Packages - luajitPackages, aider-chat, # typst-preview dependencies tinymist,