diff --git a/doc/languages-frameworks/neovim.section.md b/doc/languages-frameworks/neovim.section.md index 71bc52b541dc..b8a7e259a2bb 100644 --- a/doc/languages-frameworks/neovim.section.md +++ b/doc/languages-frameworks/neovim.section.md @@ -59,7 +59,7 @@ For instance, `sqlite-lua` needs `g:sqlite_clib_path` to be set to work. Nixpkgs - `neovimRcContent`: Extra vimL code sourced by the generated `init.lua`. - `wrapperArgs`: Extra arguments forwarded to the `makeWrapper` call. - `wrapRc`: Nix, not being able to write in your `$HOME`, loads the - generated Neovim configuration via its `-u` argument, i.e. : `-u /nix/store/...generatedInit.lua`. This has side effects like preventing Neovim from reading your config in `$XDG_CONFIG_HOME` (see bullet 7 of [`:help startup`](https://neovim.io/doc/user/starting.html#_initialization) in Neovim). Disable it if you want to generate your own wrapper. You can still reuse while reusing the logic of the nixpkgs wrapper and access the generated config via `neovim.passthru.initRc`. + generated Neovim configuration via the `$VIMINIT` environment variable, i.e. : `export VIMINIT='lua dofile("/nix/store/…-init.lua")'`. This has side effects like preventing Neovim from sourcing your `init.lua` in `$XDG_CONFIG_HOME/nvim` (see bullet 7 of [`:help startup`](https://neovim.io/doc/user/starting.html#startup) in Neovim). Disable it if you want to generate your own wrapper. You can still reuse the generated vimscript init code via `neovim.passthru.initRc`. - `plugins`: A list of plugins to add to the wrapper. ``` diff --git a/doc/release-notes/rl-2511.section.md b/doc/release-notes/rl-2511.section.md index 33a2138756b7..dc12ad11a466 100644 --- a/doc/release-notes/rl-2511.section.md +++ b/doc/release-notes/rl-2511.section.md @@ -37,4 +37,6 @@ ### Additions and Improvements {#sec-nixpkgs-release-25.11-lib-additions-improvements} -- Create the first release note entry in this section! +- `neovim`: Added support for the `vim.o.exrc` option, the `VIMINIT` environment variable, and sourcing of `sysinit.vim`. + + See the neovim help page [`:help startup`](https://neovim.io/doc/user/starting.html#startup) for more information, as well as [the nixpkgs neovim wrapper documentation](#neovim-custom-configuration). diff --git a/pkgs/applications/editors/neovim/wrapper.nix b/pkgs/applications/editors/neovim/wrapper.nix index 1ba4130cf7b9..97c7409404b6 100644 --- a/pkgs/applications/editors/neovim/wrapper.nix +++ b/pkgs/applications/editors/neovim/wrapper.nix @@ -48,7 +48,7 @@ let viAlias ? false, # additional argument not generated by makeNeovimConfig - # it will append "-u " to the wrapped arguments + # it sets the VIMINIT environment variable to "lua dofile('${customRc}')" # set to false if you want to control where to save the generated config # (e.g., in ~/.config/init.vim or project/.nvimrc) wrapRc ? true, @@ -193,8 +193,9 @@ let "${placeholder "out"}/rplugin.vim" ] ++ lib.optionals finalAttrs.wrapRc [ - "--add-flags" - "-u ${writeText "init.lua" rcContent}" + "--set-default" + "VIMINIT" + "lua dofile('${writeText "init.lua" rcContent}')" ] ++ finalAttrs.generatedWrapperArgs;