aboutsummaryrefslogtreecommitdiffstats
path: root/openspec/changes/fix-mason-installer-deps/proposal.md
blob: 5734f552ce4cae5222a15d4dfbd7ccfb45f7c54d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
## Why

`mason.nvim` (managed by the externally-owned, Stow-linked Neovim dotfiles config)
fails to install several LSP/tooling packages on this flake's Home Manager profile:
`pyright`, `bash-language-server`, `yaml-language-server`,
`typescript-language-server`, `css-lsp`, and `html-lsp` fail because `npm` is not on
`PATH`; `debugpy` fails because no `python3`/`python` is on `PATH`; `terraform-ls`
fails because `unzip` is not on `PATH`. `programs.neovim.withPython3 = true` only
wires up Neovim's Python *provider* (pynvim) and does not put a `python3` binary on
`PATH`, so it does not cover this. `js-debug-adapter` and `lua-language-server`
already install successfully and need no change.

## What Changes

- Provision `nodejs` (for `npm`), `python3`, and `unzip` on `PATH` via the shared
  Home Manager profile, so `mason.nvim`'s installers can find the interpreters/tools
  they shell out to.

## Capabilities

### New Capabilities
- `editor-toolchain`: The shared home-manager profile provisions the runtime
  toolchain (interpreters, package managers, archive tools) that the externally
  Stow-managed Neovim/mason.nvim config depends on to install and run LSP servers
  and debug adapters, without home-manager owning any of that config itself.

### Modified Capabilities
(none — `developer-environment` covers general most-used CLI tools, not the
Neovim/mason.nvim dependency contract, so a new capability is used instead of
overloading that one.)

## Impact

- `modules/home/editor.nix`: extend the existing `home.packages` list (already used
  for `tree-sitter`/`stdenv.cc`, the same "tools the dotfiles-owned nvim config
  needs" pattern) with `nodejs`, `python3`, `unzip`.
- Applies to both Home Manager configs that import this module — `tom@linux` and
  `tom@darwin` (per `flake.nix`) — covering all supported systems.
- No changes to the externally-managed dotfiles/Neovim Lua config itself.