From bd66006c655a770c9599a6eccf340ef1a751eb4c Mon Sep 17 00:00:00 2001 From: teto <886074+teto@users.noreply.github.com> Date: Thu, 5 Feb 2026 19:30:12 +0100 Subject: [PATCH] neovim: set provider configuration to initrc as an attempt to simplify configuration: instead of having wrapping arguments + an optional neovim configuration let's always generate a neovim configuration. The change should be transparent for most users, and require intervention for users that fulfill both conditions: - using remote plugins (rare already) - that set `wrapRc = false` in wrapNeovimUnstable without loading later the generated luaRcContent The fix is then to pass as wrapping arguments the wrapper's generated config via (wrapNeovimUnstable neovim-unwrapped { } ).overrideAttrs(oa: { wrapperArgs = oa.wrapperArgs ++ [ ''--cmd "lua dofile('${writeText "init.lua" oa.luaRcContent}')"'' ]; }) neovim: avoid creating empty newlines --- doc/release-notes/rl-2605.section.md | 2 ++ pkgs/applications/editors/neovim/wrapper.nix | 26 +++++++++----------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/doc/release-notes/rl-2605.section.md b/doc/release-notes/rl-2605.section.md index 14daa0dafbfa..45a5fccfafd4 100644 --- a/doc/release-notes/rl-2605.section.md +++ b/doc/release-notes/rl-2605.section.md @@ -183,6 +183,8 @@ - `openrgb` was updated to 1.0rc2, which now uses Plugin API version 4. Some existing OpenRGB plugins may be incompatible or require updates. +- the `neovim` wrapper sets provider-related configuration in its generated config rather than as wrapper arguments. It should not affect configuration unless you set `wrapRc` to false. + - We now use the upstream wrapper script for Gradle, supporting both the `JAVA_HOME` and `GRADLE_OPTS` environment variables. ## Nixpkgs Library {#sec-nixpkgs-release-26.05-lib} diff --git a/pkgs/applications/editors/neovim/wrapper.nix b/pkgs/applications/editors/neovim/wrapper.nix index e8f04ad30fc3..ccb7c47f1f56 100644 --- a/pkgs/applications/editors/neovim/wrapper.nix +++ b/pkgs/applications/editors/neovim/wrapper.nix @@ -104,13 +104,16 @@ let packpathDirs.myNeovimPackages = vimPackageInfo.vimPackage; finalPackdir = neovimUtils.packDir packpathDirs; - rcContent = '' - ${luaRcContent} - '' - + lib.optionalString (neovimRcContent' != "") '' - vim.cmd.source "${writeText "init.vim" neovimRcContent'}" - '' - + lib.optionalString autoconfigure (lib.concatStringsSep "\n" vimPackageInfo.pluginAdvisedLua); + rcContent = lib.concatStringsSep "\n" ( + [ + providerLuaRc + ] + ++ lib.optional (luaRcContent != "") luaRcContent + ++ lib.optional (neovimRcContent' != "") '' + vim.cmd.source "${writeText "init.vim" neovimRcContent'}" + '' + ++ lib.optionals autoconfigure vimPackageInfo.pluginAdvisedLua + ); python3Env = lib.warnIf (attrs ? python3Env) @@ -125,12 +128,7 @@ let wrapperArgsStr = if lib.isString wrapperArgs then wrapperArgs else lib.escapeShellArgs wrapperArgs; - generatedWrapperArgs = [ - # vim accepts a limited number of commands so we join all the provider ones - "--add-flags" - ''--cmd "lua ${providerLuaRc}"'' - ] - ++ + generatedWrapperArgs = lib.optionals ( finalAttrs.packpathDirs.myNeovimPackages.start != [ ] @@ -181,7 +179,7 @@ let ++ lib.optionals finalAttrs.wrapRc [ "--set-default" "VIMINIT" - "lua dofile('${writeText "init.lua" rcContent}')" + "lua dofile('${writeText "init.lua" finalAttrs.luaRcContent}')" ] ++ finalAttrs.generatedWrapperArgs;