neovim: Source neovimRcContent directly from store (#3444)

The previous version linked the file into home, then sourced that. Since
nothing else expects that file to be there, this is unnecessary.
Additionally, doing so made it impossible to test a built config without
switching, e.g. using `XDG_CONFIG_HOME=… nvim` or `nvim -u`. This
remedies that, at least for this particular reference.

To test this, change from asserting contents of the config file to
actually starting nvim, outputting sentinel values, and then asserting
their values are present. This way it’s tested that nvim loaded the
config, rather than that some config is in a specific place.

This is all in one commit as the test, as written now, would not have
worked before since the previously hard-coded home path was not an
actual file in the test environment.
This commit is contained in:
Andrew Marshall 2022-11-30 11:19:31 -05:00 committed by GitHub
parent e38ce0ae16
commit 478610aa37
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 20 deletions

View file

@ -365,15 +365,13 @@ in {
in mkMerge (
# writes runtime
(map (x: x.runtime) pluginsNormalized) ++ [{
"nvim/init-home-manager.vim" =
mkIf (neovimConfig.neovimRcContent != "") {
text = neovimConfig.neovimRcContent;
};
"nvim/init.lua" = let
luaRcContent =
lib.optionalString (neovimConfig.neovimRcContent != "")
"vim.cmd [[source ${config.xdg.configHome}/nvim/init-home-manager.vim]]"
+ lib.optionalString hasLuaConfig
"vim.cmd [[source ${
pkgs.writeText "nvim-init-home-manager.vim"
neovimConfig.neovimRcContent
}]]" + lib.optionalString hasLuaConfig
config.programs.neovim.generatedConfigs.lua;
in mkIf (luaRcContent != "") { text = luaRcContent; };

View file

@ -7,16 +7,14 @@ with lib;
programs.neovim = {
enable = true;
extraConfig = ''
" This 'extraConfig' should be present in vimrc
let g:hmExtraConfig='HM_EXTRA_CONFIG'
'';
plugins = with pkgs.vimPlugins; [
vim-nix
{
plugin = vim-commentary;
config = ''
" plugin-specific config
autocmd FileType c setlocal commentstring=//\ %s
autocmd FileType c setlocal comments=://
let g:hmPlugins='HM_PLUGINS_CONFIG'
'';
}
];
@ -24,11 +22,12 @@ with lib;
};
nmt.script = ''
vimrc="$TESTED/home-files/.config/nvim/init-home-manager.vim"
vimrcNormalized="$(normalizeStorePaths "$vimrc")"
assertFileExists "$vimrc"
assertFileContent "$vimrcNormalized" "${./plugin-config.vim}"
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"
assertFileContains "$vimout" "HM_EXTRA_CONFIG"
assertFileContains "$vimout" "HM_PLUGINS_CONFIG"
'';
};
}

View file

@ -1,5 +0,0 @@
" plugin-specific config
autocmd FileType c setlocal commentstring=//\ %s
autocmd FileType c setlocal comments=://
" This 'extraConfig' should be present in vimrc