diff options
| -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.md | 45 |
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 | |||
| 5 | Provisions, via the shared home-manager profile, the runtime toolchain that the | ||
| 6 | externally Stow-managed Neovim/mason.nvim config depends on to install and run LSP | ||
| 7 | servers, formatters, and debug adapters — without home-manager owning that editor | ||
| 8 | config itself. | ||
| 9 | |||
| 10 | ## Requirements | ||
| 11 | |||
| 12 | ### Requirement: mason.nvim installer dependencies are provisioned | ||
| 13 | The shared home-manager profile SHALL include a Node.js runtime (providing `npm`), a | ||
| 14 | Python 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 | ||
| 36 | Packages provisioned by this capability SHALL supply only the underlying | ||
| 37 | interpreters/tools that the externally-managed Neovim dotfiles config depends on; | ||
| 38 | this capability SHALL NOT generate, own, or otherwise manage any Neovim | ||
| 39 | configuration 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 | ||
