aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/nix
diff options
context:
space:
mode:
authorLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-20 13:56:09 +0100
committerLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-20 13:56:09 +0100
commite66aa35ea314f522a2cdfaebdacf87894a44bd04 (patch)
tree45bd8d460cdd986784fede95fbe4c020db8b29ee /nix
parent1f7215ebdcfed2ccdb63abf0e3561d50e719fc63 (diff)
downloaddotfiles-e66aa35ea314f522a2cdfaebdacf87894a44bd04.tar.gz
dotfiles-e66aa35ea314f522a2cdfaebdacf87894a44bd04.tar.bz2
dotfiles-e66aa35ea314f522a2cdfaebdacf87894a44bd04.zip
feat(nix): add LSPs/formatters/linters/DAPs to common.nix
Replaces Mason entirely (phase p6 of the nix migration will rip out mason-tool-installer and friends). The set tracks the previous ensure_installed list in nvim's lsp.lua, with five niche tools dropped per the migration plan: - groovy-language-server, npm-groovy-lint - nginx-language-server, nginx-config-formatter - systemdlint systemd-lsp is renamed to systemd-language-server (the nixpkgs attr name). codelldb is replaced by lldb-dap (upstream successor, ships with pkgs.lldb); dap configs switch in phase p6. Drops jre, basedpyright, cargo, rustc from vm.nix — they only existed to work around Mason quirks on Ubuntu 20.04 (uv-python wheel incompatibility, source-build needs). With Mason gone, basedpyright comes from nixpkgs cleanly on both profiles. Phase 5 of the nix-on-host migration plan.
Diffstat (limited to 'nix')
-rw-r--r--nix/common.nix50
-rw-r--r--nix/vm.nix12
2 files changed, 50 insertions, 12 deletions
diff --git a/nix/common.nix b/nix/common.nix
index b6a8493..9bfe2d6 100644
--- a/nix/common.nix
+++ b/nix/common.nix
@@ -89,6 +89,56 @@ in
claude-code
github-copilot-cli # NB: pkgs.copilot-cli is AWS Copilot, NOT this
+ # ── LSPs / formatters / linters / DAPs ─────────────────────────────────
+ # Replaces Mason entirely (phase p6 of the nix migration rips out
+ # mason-tool-installer). The set tracks the previous
+ # `ensure_installed` list in dot_config/nvim/lua/plugins/lsp.lua, with
+ # five niche tools dropped: groovy-language-server (Mason-only build,
+ # upstream stale), npm-groovy-lint, nginx-language-server,
+ # nginx-config-formatter, systemdlint (all rarely-edited domains;
+ # losing them is acceptable).
+
+ # LSPs
+ actionlint
+ autotools-language-server
+ basedpyright
+ bash-language-server
+ dockerfile-language-server-nodejs
+ gh-actions-language-server
+ just-lsp
+ lua-language-server
+ neocmakelsp
+ ruff
+ rust-analyzer
+ systemd-language-server
+ taplo
+ typescript-language-server
+ vscode-langservers-extracted # cssls + html + jsonls + eslint
+ yaml-language-server
+
+ # Formatters
+ mdformat
+ nodePackages.prettier
+ shfmt
+ stylua
+
+ # Linters
+ codespell
+ hadolint
+ nodePackages.jsonlint
+ markdownlint-cli
+ selene
+ shellcheck
+ shellharden
+ stylelint
+ typos
+ yamllint
+
+ # DAPs / debuggers — `lldb-dap` (from pkgs.lldb) is the upstream
+ # successor to vscode-lldb's `codelldb`. dap configs in
+ # plugins/debug.lua target it via `type = "lldb"`.
+ lldb
+
# Zsh and plugins (loaded from $HOME/.nix-profile/share/... by the
# shared zshrc; nix-profile path is preferred, system path is the
# fallback for un-bootstrapped states).
diff --git a/nix/vm.nix b/nix/vm.nix
index d003b6e..7445b7b 100644
--- a/nix/vm.nix
+++ b/nix/vm.nix
@@ -18,18 +18,6 @@
};
home.packages = with pkgs; [
- # ── Mason-driven LSP carve-outs (removed by phase p6 once Mason is
- # gone and LSPs come from common.nix directly). Kept here for
- # now so the VM keeps working between phases. ───────────────────────
- jre # Mason's groovy-language-server (headless Java)
- basedpyright # Mason's pypi distro can't install on Ubuntu 20.04
- # (manylinux_2_28 wheels, uv's python rejects)
- # Rust toolchain for Mason packages whose only install source is
- # `cargo install` (shellharden). The Arch host has these via pacman;
- # on the VM Mason needs cargo+rustc on PATH or it bails with ENOENT.
- cargo
- rustc
-
# ── Rootless podman ─────────────────────────────────────────────────────
# The nix `podman` is wrapped to find these helpers via /nix/store
# paths, so we don't need to write a containers.conf for