From 3e232a2bc7f5c8ea33804be1ea071a91c5f98055 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Fri, 24 Apr 2026 01:48:30 +0530 Subject: replacing tools with programs to be more consistent with config options --- modules/programs/nixvim/plugins/lsp.nix | 91 +++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 modules/programs/nixvim/plugins/lsp.nix (limited to 'modules/programs/nixvim/plugins/lsp.nix') diff --git a/modules/programs/nixvim/plugins/lsp.nix b/modules/programs/nixvim/plugins/lsp.nix new file mode 100644 index 0000000..dbe66a8 --- /dev/null +++ b/modules/programs/nixvim/plugins/lsp.nix @@ -0,0 +1,91 @@ +{ config, lib, ... }: + +# LSP - Language Server Protocol configuration (nvim-lspconfig) +{ + config.programs.nixvim = lib.mkIf config.programs.nixvim.enable { + plugins.lsp = { + enable = true; + inlayHints = true; + autoLoad = true; + keymaps.lspBuf = { + K = "hover"; + gD = "references"; + gd = "definition"; + gi = "implementation"; + gt = "type_definition"; + }; + servers = { + nil_ls = { + enable = true; + }; + lua_ls = { + enable = true; + package = null; + }; + nixd = { + enable = true; + package = null; + }; + pyright = { + enable = true; + package = null; + }; + ts_ls = { + enable = true; + package = null; + }; + clangd = { + enable = true; + package = null; + }; + jsonls = { + enable = true; + package = null; + }; + yamlls = { + enable = true; + package = null; + }; + bash-language-server = { + enable = true; + package = null; + }; + gopls = { + enable = true; + package = null; + }; + }; + }; + + diagnostic = { + settings = { + virtual_text = false; + signs = true; + underline = true; + update_in_insert = false; + float = { + border = "rounded"; + source = true; # Show which LSP the diagnostic is from + header = ""; + prefix = ""; + }; + }; + }; + + # Show diagnostics float on cursor hold + autoCmd = [ + { + event = [ "CursorHold" ]; + pattern = "*"; + callback.__raw = '' + function() + vim.diagnostic.open_float(nil, { focus = false }) + end + ''; + } + ]; + + # How long before CursorHold fires (in ms) + opts.updatetime = 500; + }; +} -- cgit v1.2.3