aboutsummaryrefslogtreecommitdiffstats
path: root/modules/programs/nixvim/plugins/lsp.nix
diff options
context:
space:
mode:
authorArpit Chakladar <arpitchakladar+git@gmail.com>2026-07-14 00:21:26 +0530
committerArpit Chakladar <arpitchakladar+git@gmail.com>2026-07-14 00:21:26 +0530
commite5760260b37e0ac09285a5e09edfd22d895aa60c (patch)
tree89fee72925ee42cff0e52d732d678a2fdfae8585 /modules/programs/nixvim/plugins/lsp.nix
parente77d0649f54bffca84cf5e5b55265f3bc0ca5c42 (diff)
downloadhome-manager-config-e5760260b37e0ac09285a5e09edfd22d895aa60c.tar.gz
home-manager-config-e5760260b37e0ac09285a5e09edfd22d895aa60c.zip
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.
Diffstat (limited to 'modules/programs/nixvim/plugins/lsp.nix')
-rw-r--r--modules/programs/nixvim/plugins/lsp.nix198
1 files changed, 187 insertions, 11 deletions
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
};
};
}