diff --git a/modules/programs/neovim.nix b/modules/programs/neovim.nix index af7a1a1f0..3bbb36400 100644 --- a/modules/programs/neovim.nix +++ b/modules/programs/neovim.nix @@ -391,20 +391,19 @@ in { suppressNotVimlConfig = p: if p.type != "viml" then p // { config = null; } else p; - neovimConfig = pkgs.neovimUtils.makeNeovimConfig { + neovimConfig = pkgs.wrapNeovimUnstable cfg.package { inherit (cfg) extraPython3Packages withPython3 withRuby viAlias vimAlias; withNodeJs = cfg.withNodeJs || cfg.coc.enable; plugins = map suppressNotVimlConfig pluginsNormalized; - customRC = cfg.extraConfig; - }; - - wrappedNeovim' = pkgs.wrapNeovimUnstable cfg.package (neovimConfig // { - wrapperArgs = - (lib.escapeShellArgs (neovimConfig.wrapperArgs ++ cfg.extraWrapperArgs)) - + " " + extraMakeWrapperArgs + " " + extraMakeWrapperLuaCArgs + " " + # it gets ignored + neovimRcContent = cfg.extraConfig; + wrapperArgs = (lib.escapeShellArgs (cfg.extraWrapperArgs)) + " " + + extraMakeWrapperArgs + " " + extraMakeWrapperLuaCArgs + " " + extraMakeWrapperLuaArgs; wrapRc = false; - }); + }; + + wrappedNeovim' = neovimConfig; in mkIf cfg.enable { programs.neovim.generatedConfigViml = neovimConfig.neovimRcContent; @@ -423,6 +422,14 @@ in { home.shellAliases = mkIf cfg.vimdiffAlias { vimdiff = "nvim -d"; }; + # link the packpath in expected folder so that even unwrapped neovim can pick + # home-manager's plugins + xdg.dataFile."nvim/site/pack/hm" = let + packpathDirs.hm = neovimConfig.vimPackage; + in { + source = "${pkgs.neovimUtils.packDir packpathDirs}/pack/hm"; + }; + xdg.configFile = let hasLuaConfig = lib.hasAttr "lua" config.programs.neovim.generatedConfigs; in lib.mkMerge ( diff --git a/tests/modules/programs/neovim/plugin-config.nix b/tests/modules/programs/neovim/plugin-config.nix index 4b8c3abdc..1508cdf09 100644 --- a/tests/modules/programs/neovim/plugin-config.nix +++ b/tests/modules/programs/neovim/plugin-config.nix @@ -21,10 +21,9 @@ lib.mkIf config.test.enableBig { _module.args.pkgs = lib.mkForce realPkgs; nmt.script = '' - vimout=$(mktemp) - echo "redir >> /dev/stdout | echo g:hmExtraConfig | echo g:hmPlugins | redir END" \ - | ${pkgs.neovim}/bin/nvim -es -u "$TESTED/home-files/.config/nvim/init.lua" \ - > "$vimout" || true + vimout=$out/nvim-output + export HOME=$TESTED/home-files + ${pkgs.neovim-unwrapped}/bin/nvim -i NONE -V3$out/log.txt +"redir >> $vimout | echo g:hmExtraConfig | echo g:hmPlugins | redir END" +'exit' assertFileContains "$vimout" "HM_EXTRA_CONFIG" assertFileContains "$vimout" "HM_PLUGINS_CONFIG" '';