refactor(nvim): dynamically manage lsp files

This commit is contained in:
Yorick Barbanneau 2025-08-20 23:52:45 +02:00
parent 5cf651c06c
commit 50564f6eb2
Signed by: ephase
GPG key ID: 4447A19BBEDB8DBA
2 changed files with 24 additions and 24 deletions

View file

@ -10,12 +10,28 @@ let
url = "https://ftp.nluug.nl/vim/runtime/spell/fr.utf-8.sug";
sha256 = "0294bc32b42c90bbb286a89e23ca3773b7ef50eff1ab523b1513d6a25c6b3f58";
};
## Dynamically create LSP servers configurations list regarding
## files in `./files/lsp`
lspConfigFiles = lib.mapAttrs' (
k: _: lib.nameValuePair
("${config.xdg.configHome}/nvim/lsp/${k}")
({ source = ./files/lsp/${k};})
) (builtins.readDir ./files/lsp);
## This variable contains neovim LSP activations
lspLuaConfig = lib.attrsets.mapAttrsToList (
k: v:
"vim.lsp.enable('${lib.removeSuffix ".lua" k}')"
) (builtins.readDir ./files/lsp);
## Tony plugins to have a proper helm linting.
nvim-k8s-lsp = pkgs.vimUtils.buildVimPlugin {
pname = "nvim-k8s-lsp";
version = "main";
src = builtins.fetchGit {
url = "https://github.com/tonychg/nvim-k8s-lsp.git";
rev = "395f6d6b91da55c12b26a2ef1ace7a922a756712";
rev = "930aa20bcd54f2d6f16040e98ff4068b292c6c7f";
ref = "main";
};
};
@ -25,18 +41,10 @@ in
enable = mkEnableOption "enable Neovim text editor";
};
config = mkIf cfg.enable {
home.file."${config.xdg.configHome}/nvim/spell/fr.utf-8.spl".source = nvim-spell-fr-utf8-dictionary;
home.file."${config.xdg.configHome}/nvim/spell/fr.utf-8.sug".source = nvim-spell-fr-utf8-suggestions;
home.file."${config.xdg.configHome}/nvim/lsp/bash.lua".source = ./files/lsp/bash.lua;
home.file."${config.xdg.configHome}/nvim/lsp/go.lua".source = ./files/lsp/go.lua;
home.file."${config.xdg.configHome}/nvim/lsp/helm.lua".source = ./files/lsp/helm.lua;
home.file."${config.xdg.configHome}/nvim/lsp/lua.lua".source = ./files/lsp/lua.lua;
home.file."${config.xdg.configHome}/nvim/lsp/nills.lua".source = ./files/lsp/nills.lua;
home.file."${config.xdg.configHome}/nvim/lsp/pylsp.lua".source = ./files/lsp/pylsp.lua;
home.file."${config.xdg.configHome}/nvim/lsp/terraformls.lua".source = ./files/lsp/terraformls.lua;
home.file."${config.xdg.configHome}/nvim/lsp/tflint.lua".source = ./files/lsp/tflint.lua;
home.file."${config.xdg.configHome}/nvim/lsp/yaml.lua".source = ./files/lsp/yaml.lua;
home.file = lspConfigFiles // {
"${config.xdg.configHome}/nvim/spell/fr.utf-8.spl".source = nvim-spell-fr-utf8-dictionary;
"${config.xdg.configHome}/nvim/spell/fr.utf-8.sug".source = nvim-spell-fr-utf8-suggestions;
};
programs.neovim = {
enable = true;
@ -70,7 +78,9 @@ in
extraLuaConfig =
(builtins.readFile ./files/options.lua)
+ (builtins.readFile ./files/keybindings.lua)
+ (builtins.readFile ./files/lsp.lua)
+ ''
${ lib.concatStringsSep "\n" lspLuaConfig}
''
;
plugins = with pkgs.vimPlugins; [
{