nvf/modules/plugins/lsp/lspconfig/config.nix
2025-09-13 16:45:14 +02:00

37 lines
987 B
Nix

{
config,
lib,
...
}: let
inherit (lib.modules) mkIf mkMerge;
inherit (lib.strings) optionalString;
inherit (lib.attrsets) mapAttrs;
inherit (lib.nvim.dag) entryAfter;
inherit (lib.nvim.lua) toLuaObject;
cfg = config.vim.lsp;
in {
config = mkIf cfg.lspconfig.enable (mkMerge [
{
vim = {
startPlugins = ["nvim-lspconfig"];
# TODO: we need this pre-0.8 to get the `capabilities` variable in lua,
# does it make sense to remove this after 0.8?
lsp.enable = true;
pluginRC.lspconfig = entryAfter ["lsp-setup"] ''
local lspconfig = require('lspconfig')
${
optionalString config.vim.ui.borders.enable ''
require('lspconfig.ui.windows').default_options.border = ${toLuaObject config.vim.ui.borders.globalStyle}
''
}
'';
};
}
{
vim.pluginRC = mapAttrs (_: v: (entryAfter ["lspconfig"] v)) cfg.lspconfig.sources;
}
]);
}