From e5760260b37e0ac09285a5e09edfd22d895aa60c Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Tue, 14 Jul 2026 00:21:26 +0530 Subject: feat: neomutt theme and nixvim lsp configuraitons Made some minor changes to the theme of neomutt. Made the lsp configuration for nixvim more verbose and using more modern lsps for programming languagues and also enabling inlay hints for all that support them. --- modules/programs/nixvim/plugins/lsp.nix | 198 ++++++++++++++++++++++++++++++-- 1 file changed, 187 insertions(+), 11 deletions(-) (limited to 'modules/programs/nixvim') diff --git a/modules/programs/nixvim/plugins/lsp.nix b/modules/programs/nixvim/plugins/lsp.nix index c734ea2..7fc3ddd 100644 --- a/modules/programs/nixvim/plugins/lsp.nix +++ b/modules/programs/nixvim/plugins/lsp.nix @@ -6,6 +6,7 @@ enable = true; inlayHints = true; autoLoad = true; + keymaps.lspBuf = { K = "hover"; gD = "references"; @@ -13,46 +14,221 @@ gi = "implementation"; gt = "type_definition"; }; + servers = { - nil_ls = { + # -- System & Configuration -- + nixd = { enable = true; - }; - lua_ls = { + package = null; + }; # Nix + bashls = { + enable = true; + package = null; + }; # Bash/Shell + taplo = { + enable = true; + package = null; + }; # TOML + yamlls = { + enable = true; + package = null; + }; # YAML + jsonls = { + enable = true; + package = null; + }; # JSON + marksman = { + enable = true; + package = null; + }; # Markdown + + # -- Web Development (HTML/CSS/JS/TS) -- + html = { + enable = true; + package = null; + }; # HTML + cssls = { + enable = true; + package = null; + }; # CSS/SCSS/LESS + tailwindcss = { enable = true; package = null; + }; # Tailwind CSS + vtsls = { + # JS/TS (Modern fast wrapper for tsserver) + enable = true; + package = null; + settings = { + # Optional but recommended: stops huge generic types from taking over your screen + vtsls.experimental.maxInlayHintLength = 30; + + # TypeScript type inferences + typescript.inlayHints = { + parameterNames.enabled = "all"; + parameterTypes.enabled = true; + variableTypes.enabled = true; + propertyDeclarationTypes.enabled = true; + functionLikeReturnTypes.enabled = true; + enumMemberValues.enabled = true; + }; + + # JavaScript type inferences (via JSDoc) + javascript.inlayHints = { + parameterNames.enabled = "all"; + parameterTypes.enabled = true; + variableTypes.enabled = true; + propertyDeclarationTypes.enabled = true; + functionLikeReturnTypes.enabled = true; + enumMemberValues.enabled = true; + }; + }; }; - nixd = { + eslint = { enable = true; package = null; + }; # ESLint diagnostics/formatting + + # -- Web Frameworks -- + volar = { + # Vue + enable = true; + package = null; + tslsIntegration = false; }; - pyright = { + svelte = { + enable = true; + package = null; + }; # Svelte + astro = { enable = true; package = null; + }; # Astro + + # -- Scripting & High-Level Languages -- + basedpyright = { + # Python (Modern, faster fork of Pyright) + enable = true; + package = null; + settings.basedpyright.analysis.inlayHints = { + variableTypes = true; + callArgumentNames = true; + functionReturnTypes = true; + genericTypes = false; # can get noisy, opt-in + }; }; - ts_ls = { + ruff = { enable = true; package = null; + }; # Python (Ultra-fast linter/formatter) + ruby_lsp = { + enable = true; + package = null; + }; # Ruby (Shopify's modern standard) + lua_ls = { + # Lua + enable = true; + package = null; + settings.Lua.hint = { + enable = true; + arrayIndex = "Auto"; + setType = true; + paramName = "All"; + paramType = true; + }; }; + intelephense = { + enable = true; + package = null; + }; # PHP + elixirls = { + enable = true; + package = null; + }; # Elixir + + # -- Systems, Compiled, & Enterprise -- clangd = { enable = true; package = null; - }; - jsonls = { + }; # C/C++ (inlay hints on by default) + rust_analyzer = { + # Rust (inlay hints on by default) enable = true; package = null; + installCargo = false; + installRustc = false; }; - yamlls = { + gopls = { + # Go enable = true; package = null; + settings.gopls.hints = { + assignVariableTypes = true; + compositeLiteralFields = true; + compositeLiteralTypes = true; + constantValues = true; + functionTypeParameters = true; + parameterNames = true; + rangeVariableTypes = true; + }; }; - bashls = { + zls = { enable = true; package = null; + }; # Zig (inlay hints on by default) + jdtls = { + # Java + enable = true; + package = null; + settings.java.inlayHints.parameterNames.enabled = "all"; }; - gopls = { + kotlin_language_server = { + enable = true; + package = null; + }; # Kotlin + csharp_ls = { enable = true; package = null; + }; # C# (.NET) — no inlay hint support + hls = { + # Haskell + enable = true; + package = null; + installGhc = false; + settings.haskell.plugin."inlay-hints".globalOn = true; }; + ocamllsp = { + enable = true; + package = null; + }; # OCaml + + # -- Infrastructure & DevOps -- + dockerls = { + enable = true; + package = null; + }; # Dockerfile + docker_compose_language_service = { + enable = true; + package = null; + }; # Docker Compose + terraformls = { + enable = true; + package = null; + }; # Terraform/HCL + + # -- Data & APIs -- + sqlls = { + enable = true; + package = null; + }; # SQL + graphql = { + enable = true; + package = null; + }; # GraphQL + prismals = { + enable = true; + package = null; + }; # Prisma ORM }; }; } -- cgit v1.2.3