aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--flake.lock95
-rw-r--r--modules/private/email.example.nix11
-rw-r--r--modules/programs/neomutt/default.nix37
-rw-r--r--modules/programs/neomutt/theme.nix102
-rw-r--r--modules/programs/nixvim/plugins/lsp.nix198
5 files changed, 311 insertions, 132 deletions
diff --git a/flake.lock b/flake.lock
index b1947ca..f562a3d 100644
--- a/flake.lock
+++ b/flake.lock
@@ -84,11 +84,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1782231411,
- "narHash": "sha256-W/Yhek5L3nc0gaGgMHPrzO6DbLGq7Yb9DKw/kvLwij0=",
+ "lastModified": 1783538213,
+ "narHash": "sha256-jNjKlmrejUrBgVAeiavlMLlkmC7ZEv1D9nhfuwMW5Q8=",
"owner": "cachix",
"repo": "devenv",
- "rev": "a4fd3348220d96f7602385adff0ace482e720586",
+ "rev": "d1fb321e73048d0e1e2b523580268ebb3df2ae90",
"type": "github"
},
"original": {
@@ -142,11 +142,11 @@
]
},
"locked": {
- "lastModified": 1778716662,
- "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
+ "lastModified": 1782949081,
+ "narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=",
"owner": "hercules-ci",
"repo": "flake-parts",
- "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
+ "rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e",
"type": "github"
},
"original": {
@@ -174,11 +174,11 @@
"ghostty": {
"flake": false,
"locked": {
- "lastModified": 1779069789,
- "narHash": "sha256-ojo+gso45/6CVSuqfSVnlWpQ4d0QeLgwok+v/g3yu0E=",
+ "lastModified": 1782866021,
+ "narHash": "sha256-BOLtzL5iAHmtCOg9/DXtcfw+K86QWol088K72chJB04=",
"owner": "ghostty-org",
"repo": "ghostty",
- "rev": "4b7bf0b20e3baf9c1ba10c63f2ad1fd853faea8f",
+ "rev": "e1d31deaaed21aa9225afca78d778fb373c95852",
"type": "github"
},
"original": {
@@ -193,18 +193,17 @@
"devenv",
"flake-compat"
],
- "gitignore": "gitignore",
"nixpkgs": [
"devenv",
"nixpkgs"
]
},
"locked": {
- "lastModified": 1778507602,
- "narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=",
+ "lastModified": 1782908218,
+ "narHash": "sha256-wLMOrPgVyeF3XmP+qfYcLqnVdTxikdcSvbIY7rA9jTA=",
"owner": "cachix",
"repo": "git-hooks.nix",
- "rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a",
+ "rev": "9f7e99119ece7705299595299f3b031f39356de1",
"type": "github"
},
"original": {
@@ -213,28 +212,6 @@
"type": "github"
}
},
- "gitignore": {
- "inputs": {
- "nixpkgs": [
- "devenv",
- "git-hooks",
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1709087332,
- "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
- "owner": "hercules-ci",
- "repo": "gitignore.nix",
- "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
- "type": "github"
- },
- "original": {
- "owner": "hercules-ci",
- "repo": "gitignore.nix",
- "type": "github"
- }
- },
"home-manager": {
"inputs": {
"nixpkgs": [
@@ -242,11 +219,11 @@
]
},
"locked": {
- "lastModified": 1782233665,
- "narHash": "sha256-h/xOtrByoA/Ak1lWHn0O1lVZz4qWYbwOSLQ8YSwQO0I=",
+ "lastModified": 1783823409,
+ "narHash": "sha256-OI4IkRjRXa1e7hYmCGJDPDq5H/kPwhsyoS80cNUF9fI=",
"owner": "nix-community",
"repo": "home-manager",
- "rev": "062581938b4a378a82dfbb294b494808157153a1",
+ "rev": "7566825d4652a1b885bd4ce65bd9e8def432fec9",
"type": "github"
},
"original": {
@@ -282,11 +259,11 @@
]
},
"locked": {
- "lastModified": 1779748925,
- "narHash": "sha256-meIhqGC04O5VXbKSFXSQoOKp+XCq5RMnwAk1Guo0VQo=",
+ "lastModified": 1782407171,
+ "narHash": "sha256-xem+4ncdQCTFJsQ4PrVuyVmi3j4w/Yqg298hBUzVejA=",
"owner": "cachix",
"repo": "nix",
- "rev": "0bc443c8ff235c3547d09327b48aaa2ab98b15f2",
+ "rev": "782ac1b155679b065ec945ae50d0fa1d495883b7",
"type": "github"
},
"original": {
@@ -309,11 +286,11 @@
"treefmt-nix": "treefmt-nix"
},
"locked": {
- "lastModified": 1778381404,
- "narHash": "sha256-FqhdOTA8vyoIpkHhbs2cCT7h6EWM7nsLeOYJc1ifQLE=",
+ "lastModified": 1780381423,
+ "narHash": "sha256-S1BIJiQF4lRtJUKak0e97JwNvbe69/LW78YJJuB18Qk=",
"owner": "nix-community",
"repo": "nixd",
- "rev": "e3e45eb76663f522e196b7f0cf34cab201db7779",
+ "rev": "0e07c08c448a2995e7793d1098437b29bbe80b02",
"type": "github"
},
"original": {
@@ -324,11 +301,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1781577229,
- "narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=",
+ "lastModified": 1783776592,
+ "narHash": "sha256-UgCQzxeWI75XM8G+hPrPh+MKzEPjG3SpAj7dtqSbksA=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "567a49d1913ce81ac6e9582e3553dd90a955875f",
+ "rev": "e7a3ca8092b61ff85b6a45bf863ea2b2d6a661b3",
"type": "github"
},
"original": {
@@ -340,11 +317,11 @@
},
"nixpkgs_2": {
"locked": {
- "lastModified": 1781607440,
- "narHash": "sha256-rxO+uc/KFbSJp+pgyXRuAX6QlG9hJdnt0BXpEQRXY+U=",
+ "lastModified": 1783279667,
+ "narHash": "sha256-/NAkDSsve+GNM0Bt6tleJdCGfsTlK89nPjkVOzZMo0s=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "3e41b24abd260e8f71dbe2f5737d24122f972158",
+ "rev": "f205b5574fd0cb7da5b702a2da51507b7f4fdd1b",
"type": "github"
},
"original": {
@@ -361,11 +338,11 @@
"systems": "systems"
},
"locked": {
- "lastModified": 1782254890,
- "narHash": "sha256-kjsEECqhpPnJWqhooXp6tWh2qGQftCPAo2G1GvZtKdw=",
+ "lastModified": 1783647864,
+ "narHash": "sha256-gtVkWD4SbsvQQ8aSFEsrUTxxyuim4/ZC6lBJmA+sE/k=",
"owner": "nix-community",
"repo": "nixvim",
- "rev": "dbf9550dba8448b03e11d58e5695d6c44a464554",
+ "rev": "ebffdb62cd1604537ee51d4d23258c002f1c90f8",
"type": "github"
},
"original": {
@@ -391,11 +368,11 @@
]
},
"locked": {
- "lastModified": 1779074409,
- "narHash": "sha256-6aXy8Ga41iLVM8ibddFU1O5+wYWcBGNEfZzZuL91eIc=",
+ "lastModified": 1782875958,
+ "narHash": "sha256-5eqDcnBjb1424HRQdnhuhNOBZguq1Z2tqSa2OMF/m2c=",
"owner": "oxalica",
"repo": "rust-overlay",
- "rev": "2a77b5b1dc952f214e8102acdef1622b68515560",
+ "rev": "13139aefa973f3d96c60c0fbab801de058ae25ca",
"type": "github"
},
"original": {
@@ -429,11 +406,11 @@
]
},
"locked": {
- "lastModified": 1775636079,
- "narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
+ "lastModified": 1780220602,
+ "narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=",
"owner": "numtide",
"repo": "treefmt-nix",
- "rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
+ "rev": "db947814a175b7ca6ded66e21383d938df01c227",
"type": "github"
},
"original": {
diff --git a/modules/private/email.example.nix b/modules/private/email.example.nix
index 9fc9ee2..ca4a3a1 100644
--- a/modules/private/email.example.nix
+++ b/modules/private/email.example.nix
@@ -13,7 +13,7 @@
enable = true;
mailboxType = "maildir";
extraConfig = ''
- mailboxes =Inbox ="[Gmail]/Drafts" ="[Gmail]/Sent Mail" ="[Gmail]/Trash"
+ mailboxes =Inbox ="[Gmail]/Drafts" ="[Gmail]/Sent Mail" ="[Gmail]/Spam" ="[Gmail]/Trash"
'';
};
@@ -29,9 +29,10 @@
create = "maildir";
patterns = [
"INBOX"
- "\"[Gmail]/Drafts\""
- "\"[Gmail]/Sent Mail\""
- "\"[Gmail]/Trash\""
+ "[Gmail]/Drafts"
+ "[Gmail]/Sent Mail"
+ "[Gmail]/Spam"
+ "[Gmail]/Trash"
];
extraConfig.channel = {
SyncState = "*";
@@ -46,7 +47,7 @@
neomutt.virtualMailboxes = [
{
name = "All Mail";
- query = "folder:example/Inbox or folder:\"example/[Gmail]/Sent Mail\"";
+ query = "folder:arpitchakladar/Inbox or folder:\"arpitchakladar/[Gmail]/Sent Mail\"";
}
];
};
diff --git a/modules/programs/neomutt/default.nix b/modules/programs/neomutt/default.nix
index b144af0..3626341 100644
--- a/modules/programs/neomutt/default.nix
+++ b/modules/programs/neomutt/default.nix
@@ -50,7 +50,7 @@ in
NeoMutt Index Flags
===================
- Message state ($flag_chars)
+ Message state ($flag_chars) -- unchanged defaults
N New - unread, arrived since you last checked
O Old - unread, but seen in a previous session
D Deleted - marked for deletion (pending expunge)
@@ -58,18 +58,21 @@ in
! Flagged - important (toggle with F)
* Tagged - selected for a bulk operation (toggle with t)
r Replied - you've replied to this message
- S Signed - PGP/SMIME signed
- P Encrypted - PGP/SMIME encrypted
- s Cert - contains a S/MIME certificate/key
- K PGP key - contains a PGP public key
(blank) - read, nothing else notable
+ Cryptography ($crypt_chars)
+  Verified - signed, and the signature checks out
+  Encrypted - PGP/SMIME encrypted
+  Signed - PGP/SMIME signed (unverified)
+  PGP key - message contains a PGP public key
+ (blank) - no cryptography info
+
Addressing ($to_chars)
- + To you only - sent to you and only you
- T To (with others) - you're in the To: list, among others
- C Cc only - you're only in the Cc: list
- F From you - sent by you
- L Mailing list - sent to a list you're subscribed to
+  To you only - sent to you and only you
+  To (with others) - you're in the To: list, among others
+  Cc only - you're only in the Cc: list
+  From you - sent by you
+  Mailing list - sent to a list you're subscribed to
(blank) - not in To/Cc (e.g. Bcc, unlisted)
Press q to close.
@@ -359,6 +362,20 @@ in
action = "next-unread-mailbox";
}
+ # --- filter/limit (vim: gf to 'find' or 'filter') ---
+ {
+ map = [ "index" ];
+ key = "gf";
+ action = "limit";
+ }
+
+ # --- filter/limit (vim: gf to 'find' or 'filter') ---
+ {
+ map = [ "index" ];
+ key = "gF";
+ action = "limit";
+ }
+
# --- help message to show functions and keybindings ---
{
map = [
diff --git a/modules/programs/neomutt/theme.nix b/modules/programs/neomutt/theme.nix
index b770975..52845ee 100644
--- a/modules/programs/neomutt/theme.nix
+++ b/modules/programs/neomutt/theme.nix
@@ -9,29 +9,36 @@
# Base16 OneDark Dark terminal colors for neomutt
# Each column in the index receives a distinct color to keep the UI organized.
- set index_format = " %5C │ %Z │ %{%d/%m/%y %H:%M} │ %-25.25a │ %s%* "
+ # Nerd Font icon-based flag/attachment/crypto indicators
+ # order: new, old, deleted, flagged, replied, old(unused), tagged, encrypt, ...
+ set flag_chars = "󰓹󰀼󰆴󰁟󰇰󰇮󰍩󰍨󰇱󰗚"
+ set to_chars = " "
+ set crypt_chars = " "
+ set attach_format = "%u%D%I %t%4n %T%.40d %> [%m/%M, %e%?C?, %C?, %s] "
+
+ set index_format = " %5C │ %Z │ %{%d/%m/%y %H:%M} │ %-25.25a │ %s%* "
# Hide the keybindings help bar at the top to save vertical space
set help = no
- # Empty the status bar content
- set status_format = "  Unread: %5u │ 󰛏 New: %5n │  Tagged: %5t  %>   Filter: %V │  Sorted By: %s │"
+ # Status bar with Nerd Font icons per field
+ set status_format = "  Unread: %5u │ 󰛏 New: %5n │  Tagged: %5t │  Search: %f │  Filter: %v │  Sorted By: %s │"
# --- Basic UI Colors --------------------------------------------------
# target foreground background
color normal white default # base05 (Standard text)
- color error red default # base08 (Red)
+ color error red default # base08 (Red)
color tilde brightblack default # base03 (Dark Grey)
- color message cyan default # base0C (Cyan)
- color markers red default # base08 (Red)
- color attachment magenta default # base0E (Magenta)
- color search magenta default # base0E (Magenta)
- color prompt cyan default # base0C (Questions/prompts)
- color progress black yellow # base0A bg (Progress bar)
+ color message cyan default # base0C (Cyan)
+ color markers red default # base08 (Red)
+ color attachment magenta default # base0E (Magenta)
+ color search magenta default # base0E (Magenta)
+ color prompt cyan default # base0C (Questions/prompts)
+ color progress black yellow # 󰦖 base0A bg (Progress bar)
# Selected row and status bar
color status white brightblack # base05 on base03
- color indicator default brightblack # default on base03 (Selected email)
+ color indicator default brightblack # default on base03 (Selected email)
color tree magenta default # base03 (Thread arrows)
# Whole-line fallback for the index (base for anything not caught below)
@@ -39,54 +46,54 @@
# --- Index Columns (The Multi-Color Table) ----------------------------
# Applies distinct colors to specific columns for ALL messages (~A)
- color index_number cyan default "~A" # base05 (Fixed: was brightblack)
- color index_date green default "~A" # base0B (Green)
- color index_flags red default "~A" # base08 (Red)
- color index_size cyan default "~A" # base0C (Cyan)
- color index_author yellow default "~A" # base0A (Yellow)
- color index_subject white default "~A" # base05 (Standard text for Read messages)
- color index_collapsed yellow default # base0A (Collapsed thread count, %M)
- color index_label magenta default # base0E (Message label, %y %Y)
- color index_tag cyan default # base0C (Message tags, %G)
- color index_tags cyan default # base0C (Transformed tags, %g %J)
+ color index_number cyan default "~A" # base05 (Fixed: was brightblack)
+ color index_date green default "~A" # base0B (Green)
+ color index_flags red default "~A" # base08 (Red)
+ color index_size cyan default "~A" # 󰈔 base0C (Cyan)
+ color index_author yellow default "~A" # base0A (Yellow)
+ color index_subject white default "~A" # base05 (Standard text for Read messages)
+ color index_collapsed yellow default # base0A (Collapsed thread count, %M)
+ color index_label magenta default # 󰓹 base0E (Message label, %y %Y)
+ color index_tag cyan default # base0C (Message tags, %G)
+ color index_tags cyan default # 󰓼 base0C (Transformed tags, %g %J)
# --- Index Message States ---------------------------------------------
- # By targeting *only* `index_subject`, we preserve your multi-color
+ # By targeting *only* `index_subject`, we preserve your multi-color
# columns while still easily identifying unread or flagged emails.
- color index_subject blue default "~U" # Unread: Blue (base0D)
- color index_subject blue default "~N" # New: Blue (base0D)
- color index_subject red default "~F" # Flagged: Red (base08)
- color index_subject magenta default "~Q" # Replied: Magenta (base0E)
- color index_subject black red "~D" # Deleted
+ color index_subject blue default "~U" # Unread: Blue (base0D)
+ color index_subject blue default "~N" # 󰄯 New: Blue (base0D)
+ color index_subject red default "~F" # Flagged: Red (base08)
+ color index_subject magenta default "~Q" # 󰛃 Replied: Magenta (base0E)
+ color index_subject black red "~D" # Deleted
# This rule now colors the "email (name)" column as it is considered the 'author'
color index_author yellow default "~A"
color index_subject white default "~A" # %s
- # We removed the ~R (Read) override so it stays white.
+ # We removed the ~R (Read) override so it stays white.
# For Deleted (~D), if brightblack is still too dark to see, we can use a red background instead:
- color index_subject black red "~D" # Deleted: Black on Red background
+ color index_subject black red "~D" # Deleted: Black on Red background
# Thread collapsing states
- color index_subject yellow default "~v" # Collapsed thread
- color index_subject blue default "~v~(~N)" # Collapsed with unread inside
- color index_subject red default "~v~(~F)" # Collapsed with flagged inside
+ color index_subject yellow default "~v" # Collapsed thread
+ color index_subject blue default "~v~(~N)" # 󰝜 Collapsed with unread inside
+ color index_subject red default "~v~(~F)" # 󰈺 Collapsed with flagged inside
# Subtle zebra striping between adjacent index rows (barely-there contrast)
color stripe_odd default default
color stripe_even default default
# --- Message Headers --------------------------------------------------
- color hdrdefault cyan default # base0C
- color header yellow default "^(From|To|Cc|Bcc)" # base0A
- color header blue default "^(Subject)" # base0D
- color header green default "^(Date)" # base03
+ color hdrdefault cyan default # base0C
+ color header yellow default "^(From|To|Cc|Bcc)" # base0A
+ color header blue default "^(Subject)" # base0D
+ color header green default "^(Date)" # base03
# Attachment header lines (shown above each MIME part in the pager)
- color attach_headers cyan default
+ color attach_headers cyan default #
# --- Message Body -----------------------------------------------------
- color quoted blue default # base0D
+ color quoted blue default # base0D
color quoted1 cyan default # base0C
color quoted2 yellow default # base0A
color quoted3 red default # base08
@@ -97,7 +104,7 @@
color quoted8 red default # base08
color quoted9 magenta default # base0E
- color signature green default # base0B
+ color signature green default # 󰛿 base0B
color bold white default # base05
color underline white default # base05
@@ -105,18 +112,19 @@
color body blue default "([a-z][a-z0-9+-]*://[^ ]+)"
# PGP
- color body green default "(Good signature)"
- color body red default "(BAD signature)"
- color body brightblack default "^gpg: "
+ color body green default "(Good signature)" # verified
+ color body red default "(BAD signature)" # bad
+ color body brightblack default "^gpg: " #
# --- Sidebar (was completely unset despite sidebar.enable = true) -----
+ set sidebar_format = " %D%* %?N? %N?%?F? %F? "
color sidebar_background default default # transparent, blends with terminal bg
color sidebar_divider white default # base03 (matches old tree color)
- color sidebar_ordinary white default # base05 (normal mailbox entries)
- color sidebar_new green default # base0B (mailboxes with new mail)
- color sidebar_flagged red default # base08 (mailboxes with flagged mail)
- color sidebar_spool_file yellow default # base0A (your inbox/spool)
+ color sidebar_ordinary white default # base05 (normal mailbox entries)
+ color sidebar_new green default # 󰇮 base0B (mailboxes with new mail)
+ color sidebar_flagged red default # base08 (mailboxes with flagged mail)
+ color sidebar_spool_file yellow default # 󰇰 base0A (your inbox/spool)
color sidebar_highlight white brightblack # base05 on base03 (cursor position)
- color sidebar_indicator default brightblack # default on base03 (currently open mailbox)
+ color sidebar_indicator default brightblack # default on base03 (currently open mailbox)
'';
}
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
};
};
}