Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 16 additions & 9 deletions modules/programs/neovim.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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 (
Expand Down
7 changes: 3 additions & 4 deletions tests/modules/programs/neovim/plugin-config.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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"
'';
Expand Down