aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openspec/changes/archive/2026-09-21-fix-mason-installer-deps/.openspec.yaml (renamed from openspec/changes/fix-mason-installer-deps/.openspec.yaml)0
-rw-r--r--openspec/changes/archive/2026-09-21-fix-mason-installer-deps/proposal.md (renamed from openspec/changes/fix-mason-installer-deps/proposal.md)0
-rw-r--r--openspec/changes/archive/2026-09-21-fix-mason-installer-deps/specs/editor-toolchain/spec.md (renamed from openspec/changes/fix-mason-installer-deps/specs/editor-toolchain/spec.md)0
-rw-r--r--openspec/changes/archive/2026-09-21-fix-mason-installer-deps/tasks.md (renamed from openspec/changes/fix-mason-installer-deps/tasks.md)6
-rw-r--r--openspec/specs/editor-toolchain/spec.md45
5 files changed, 48 insertions, 3 deletions
diff --git a/openspec/changes/fix-mason-installer-deps/.openspec.yaml b/openspec/changes/archive/2026-09-21-fix-mason-installer-deps/.openspec.yaml
index 563fab5..563fab5 100644
--- a/openspec/changes/fix-mason-installer-deps/.openspec.yaml
+++ b/openspec/changes/archive/2026-09-21-fix-mason-installer-deps/.openspec.yaml
diff --git a/openspec/changes/fix-mason-installer-deps/proposal.md b/openspec/changes/archive/2026-09-21-fix-mason-installer-deps/proposal.md
index 5734f55..5734f55 100644
--- a/openspec/changes/fix-mason-installer-deps/proposal.md
+++ b/openspec/changes/archive/2026-09-21-fix-mason-installer-deps/proposal.md
diff --git a/openspec/changes/fix-mason-installer-deps/specs/editor-toolchain/spec.md b/openspec/changes/archive/2026-09-21-fix-mason-installer-deps/specs/editor-toolchain/spec.md
index 8298fbd..8298fbd 100644
--- a/openspec/changes/fix-mason-installer-deps/specs/editor-toolchain/spec.md
+++ b/openspec/changes/archive/2026-09-21-fix-mason-installer-deps/specs/editor-toolchain/spec.md
diff --git a/openspec/changes/fix-mason-installer-deps/tasks.md b/openspec/changes/archive/2026-09-21-fix-mason-installer-deps/tasks.md
index 2d2d259..2829440 100644
--- a/openspec/changes/fix-mason-installer-deps/tasks.md
+++ b/openspec/changes/archive/2026-09-21-fix-mason-installer-deps/tasks.md
@@ -4,15 +4,15 @@
4 existing `home.packages` list (alongside `tree-sitter`/`stdenv.cc`), with a 4 existing `home.packages` list (alongside `tree-sitter`/`stdenv.cc`), with a
5 short comment noting they're required by `mason.nvim`'s installers; verify by 5 short comment noting they're required by `mason.nvim`'s installers; verify by
6 reading the file back and confirming the three entries are present. 6 reading the file back and confirming the three entries are present.
7- [ ] 1.2 Verify the flake still evaluates: run `nix flake check` and confirm it 7- [x] 1.2 Verify the flake still evaluates: run `nix flake check` and confirm it
8 succeeds. 8 succeeds.
9 9
10## 2. Verify Mason installs succeed 10## 2. Verify Mason installs succeed
11 11
12- [ ] 2.1 Apply the profile on an affected host (`home-manager switch --flake 12- [x] 2.1 Apply the profile on an affected host (`home-manager switch --flake
13 .#tom@linux` or `.#tom@darwin`, whichever is reachable) and confirm the 13 .#tom@linux` or `.#tom@darwin`, whichever is reachable) and confirm the
14 activation completes without error. 14 activation completes without error.
15- [ ] 2.2 In Neovim, delete `~/.local/state/nvim/mason.log` (or run `:MasonUninstallAll` 15- [x] 2.2 In Neovim, delete `~/.local/state/nvim/mason.log` (or run `:MasonUninstallAll`
16 then reinstall), trigger installation of the previously-failing packages 16 then reinstall), trigger installation of the previously-failing packages
17 (`pyright`, `bash-language-server`, `debugpy`, `terraform-ls`, 17 (`pyright`, `bash-language-server`, `debugpy`, `terraform-ls`,
18 `yaml-language-server`, `typescript-language-server`, `css-lsp`, `html-lsp`), 18 `yaml-language-server`, `typescript-language-server`, `css-lsp`, `html-lsp`),
diff --git a/openspec/specs/editor-toolchain/spec.md b/openspec/specs/editor-toolchain/spec.md
new file mode 100644
index 0000000..8320e61
--- /dev/null
+++ b/openspec/specs/editor-toolchain/spec.md
@@ -0,0 +1,45 @@
1# editor-toolchain Specification
2
3## Purpose
4
5Provisions, via the shared home-manager profile, the runtime toolchain that the
6externally Stow-managed Neovim/mason.nvim config depends on to install and run LSP
7servers, formatters, and debug adapters — without home-manager owning that editor
8config itself.
9
10## Requirements
11
12### Requirement: mason.nvim installer dependencies are provisioned
13The shared home-manager profile SHALL include a Node.js runtime (providing `npm`), a
14Python 3 interpreter (providing `python3`), and `unzip` on `PATH`, so that
15`mason.nvim`'s package installers can locate the tools they shell out to.
16
17#### Scenario: npm-based Mason package installs successfully
18- **WHEN** the shared home profile is activated and `mason.nvim` installs an
19 npm-based package (for example an LSP server distributed via npm)
20- **THEN** `mason.nvim`'s installer finds `npm` on `PATH` and the installation does
21 not fail with an `ENOENT`/"could not find executable" error for `npm`
22
23#### Scenario: Python-based Mason package installs successfully
24- **WHEN** the shared home profile is activated and `mason.nvim` installs a
25 Python-based package (for example `debugpy`)
26- **THEN** `mason.nvim`'s installer finds a `python3` interpreter on `PATH` and the
27 installation does not fail with a "no python3 installation found" error
28
29#### Scenario: Archive-based Mason package installs successfully
30- **WHEN** the shared home profile is activated and `mason.nvim` installs a package
31 distributed as a zip archive (for example `terraform-ls`)
32- **THEN** `mason.nvim`'s installer finds `unzip` on `PATH` and the installation does
33 not fail with an `ENOENT`/"could not find executable" error for `unzip`
34
35### Requirement: Editor toolchain packages do not manage editor configuration
36Packages provisioned by this capability SHALL supply only the underlying
37interpreters/tools that the externally-managed Neovim dotfiles config depends on;
38this capability SHALL NOT generate, own, or otherwise manage any Neovim
39configuration file (for example `init.lua` or plugin/LSP configuration).
40
41#### Scenario: No competing Neovim configuration is generated
42- **WHEN** the shared home profile provisions the editor toolchain packages
43- **THEN** no Neovim configuration file is created or managed by this capability —
44 the externally Stow-managed dotfiles config remains the sole owner of that
45 configuration