diff options
| author | 2026-09-21 12:16:50 +0200 | |
|---|---|---|
| committer | 2026-09-21 12:16:50 +0200 | |
| commit | f8e84b1e18d39632ead22b7c45fe4e97691bed29 (patch) | |
| tree | 384a6f243894960d7fcd01738191976ace6dfd4b /openspec/changes/fix-neovim-plugin-loading/specs | |
| parent | 8fa7344435dbf81accb0751b48fc4bd776a201ff (diff) | |
| download | desktop-flake-f8e84b1e18d39632ead22b7c45fe4e97691bed29.tar.gz desktop-flake-f8e84b1e18d39632ead22b7c45fe4e97691bed29.tar.bz2 desktop-flake-f8e84b1e18d39632ead22b7c45fe4e97691bed29.zip | |
Fix Neovim plugins never loading via sideloadInitLua
home-manager's programs.neovim module always writes a non-empty
~/.config/nvim/init.lua, which permanently conflicts with Stow linking
the dotfiles-owned lazy.nvim config to that same path - Stow skips the
package and plugins never load. Setting sideloadInitLua = true frees
that path for the dotfiles config to own exclusively. Also provisions
a C compiler and tree-sitter (moved from dev-tools.nix) so natively-
built plugins can compile on every platform.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBSd4VBfoKHjE1HR3P8kmn
Diffstat (limited to 'openspec/changes/fix-neovim-plugin-loading/specs')
| -rw-r--r-- | openspec/changes/fix-neovim-plugin-loading/specs/editor-environment/spec.md | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/openspec/changes/fix-neovim-plugin-loading/specs/editor-environment/spec.md b/openspec/changes/fix-neovim-plugin-loading/specs/editor-environment/spec.md new file mode 100644 index 0000000..5c07fcd --- /dev/null +++ b/openspec/changes/fix-neovim-plugin-loading/specs/editor-environment/spec.md | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | ## Purpose | ||
| 2 | |||
| 3 | Governs what the shared home-manager profile provisions for the default editor (Neovim): the package and wrapper itself, non-interference with the user's externally-managed dotfiles editor configuration, and the native build toolchain that natively-built plugins in that configuration need. | ||
| 4 | |||
| 5 | ## ADDED Requirements | ||
| 6 | |||
| 7 | ### Requirement: Neovim is provisioned as the default editor | ||
| 8 | The shared home-manager profile SHALL install Neovim, set it as the default `$EDITOR`/`$VISUAL`, and provide a `vim` alias pointing to it, identically wherever the profile is activated (standalone or via a NixOS host). | ||
| 9 | |||
| 10 | #### Scenario: Neovim available after activation | ||
| 11 | - **WHEN** the shared home profile is activated on any supported platform | ||
| 12 | - **THEN** the `nvim` binary is on `PATH`, `$EDITOR`/`$VISUAL` resolve to `nvim`, and `vim` invokes `nvim` | ||
| 13 | |||
| 14 | ### Requirement: Home-manager does not manage Neovim's config directory | ||
| 15 | The shared home-manager profile SHALL NOT write its own generated content to the user's Neovim configuration directory (`$XDG_CONFIG_HOME/nvim`), so that a separately-managed, externally-owned configuration (such as a personal dotfiles repository symlinked into place by another mechanism) can occupy that path without conflict. | ||
| 16 | |||
| 17 | #### Scenario: Config directory left free for external ownership | ||
| 18 | - **WHEN** the shared home profile is activated, independent of whether an external configuration has been placed at `$XDG_CONFIG_HOME/nvim` yet | ||
| 19 | - **THEN** no file under `$XDG_CONFIG_HOME/nvim` is created, modified, or symlinked by the home-manager-managed profile itself | ||
| 20 | |||
| 21 | ### Requirement: A native build toolchain is available for editor plugins | ||
| 22 | The shared home-manager profile SHALL provide a C compiler and the `tree-sitter` CLI on `PATH`, so that natively-built Neovim plugins configured by an externally-managed configuration can compile successfully, on every platform this flake targets. | ||
| 23 | |||
| 24 | #### Scenario: Compiler and tree-sitter CLI available after activation | ||
| 25 | - **WHEN** the shared home profile is activated on NixOS or Darwin | ||
| 26 | - **THEN** a working C compiler (`cc`) and the `tree-sitter` CLI are both resolvable on `PATH` without any additional manual installation step | ||
