feat(home): migrate neovim entirely to home-manager, consume dodder-vim from the dodder flake#169
Open
friedenberg wants to merge 1 commit into
Open
feat(home): migrate neovim entirely to home-manager, consume dodder-vim from the dodder flake#169friedenberg wants to merge 1 commit into
friedenberg wants to merge 1 commit into
Conversation
…im from the dodder flake
Closes the consumer side of dodder#245 / eng#157. The hybrid that
issue explored (rcm-owned lua tree + HM-generated lazy specs) is moot:
neovim is now wholly home-manager-managed, so the dodder plugin is
just another nix-delivered plugin.
home/neovim.nix (new):
- programs.neovim with pkgs-master.neovim-unwrapped (the nvim binary
previously came from pkgs-master via home/packages/common.nix; that
entry is removed and noted in the exclusion list, which also drops
it from the eng/result symlinkJoin like fish/git/kitty before it).
- All plugins are nix store paths: pkgs-master.vimPlugins where
nixpkgs packages them; nvim-treesitter.withPlugins carrying the
grammar list from the old require("nvim-treesitter").install() call
(parsers pre-built by nix, no :TSUpdate / network at runtime); five
plugins nixpkgs lacks (php.vim, Vim-Jinja2-Syntax, vim-jq,
vim-kitty, vim-fancy-comment) pinned as flake = false inputs and
built with vimUtils.buildVimPlugin; and dodder-vim consumed from
the dodder flake input's packages output (dodder#245) -- replacing
the rcm tag-dodder_dev lazy spec that pointed dir = at a source
checkout.
- The lazy.nvim bootstrap (network git clone at first launch),
lazy-lock.json, and the lua/plugins spec tree are gone. The
"direnv/direnv" spec was dropped outright: it cloned the direnv CLI
repo, which is not a vim plugin (direnv.vim is, and stays).
Config tree moves rcm/config/nvim -> home/nvim, delivered via
xdg.configFile. Load-order note: HM delivers plugins via
pack/hm/start, which nvim loads AFTER init.lua (lazy loaded them
synchronously inside init), so conform.setup, the treesitter
activation autocmd, and the colorscheme call moved to
after/plugin/*.lua, and init.lua's conform requires are deferred into
function bodies. ftdetect/ftplugin/syntax were relative symlinks into
rcm/vim (shared with vim); they stay rcm-owned for vim, and nvim now
gets a store-path copy refreshed on switch.
flake.lock entries for the five new inputs were computed without nix
(NAR serialization + codeload tarballs, validated byte-for-byte
against existing locked inputs: shdoc's narHash and lastModified both
reproduce); `nix flake lock` should be a no-op but is worth running
on first build.
On already-deployed hosts the old rcup symlinks under ~/.config/nvim
collide with HM's files; home-manager backs them up as *.hm-backup
(surfaced by hm-backup-report) -- run rcdn / clean them up once, and
the lazy.nvim clone under ~/.local/share/nvim/lazy is now inert.
https://claude.ai/code/session_011r2XmQDac5gBxLx37mAQJ9
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes the consumer side of amarbel-llc/dodder#245; closes #157.
The hybrid that #157 explored (rcm-owned lua tree + HM-generated lazy specs) is moot: neovim is now wholly home-manager-managed, so dodder's editor plugin is just another nix-delivered plugin.
What changed
home/neovim.nix(new)programs.neovimwithpkgs-master.neovim-unwrapped; theneovimentry is removed fromhome/packages/common.nix(noted in its exclusion list, which also drops it from the eng/result symlinkJoin — same treatment as fish/git/kitty).pkgs-master.vimPlugins(attr names verified at the pinned nixpkgs-master rev);nvim-treesitter.withPluginscarrying the grammar list from the oldrequire("nvim-treesitter").install()call — parsers pre-built by nix, no:TSUpdate/ network at runtime;php.vim,Vim-Jinja2-Syntax,vim-jq,vim-kitty,vim-fancy-comment) pinned asflake = falseinputs and built withvimUtils.buildVimPlugin;dodder-vimconsumed from the dodder flake input's packages output (Package zz-vim as a flake output (vim plugin + optional home-manager module) dodder#245) — replacing the rcmtag-dodder_devlazy spec that pointeddir =at a source checkout. No dodder lock bump needed: the already-locked rev (b0805b4) carries the output.lazy-lock.json, and thelua/pluginsspec tree are gone. Thedirenv/direnvspec was dropped outright — it cloned the direnv CLI repo, which is not a vim plugin (direnv.vimis, and stays).Config tree moves
rcm/config/nvim→home/nvim, delivered viaxdg.configFile.pack/hm/start, which nvim loads after init.lua (lazy.nvim loaded them synchronously inside init), soconform.setup, the treesitter activation autocmd, and the colorscheme call moved toafter/plugin/*.lua, and init.lua's conform requires are deferred into function bodies.ftdetect/ftplugin/syntaxwere relative symlinks intorcm/vim(shared with vim); they stay rcm-owned for vim, and nvim now gets a store-path copy refreshed on switch.rcm/tag-dodder_devis removed;doc/eng-rcm.7.scdupdated.flake.lock caveat
The five new lock entries were computed without nix in the sandbox (NAR serialization + codeload tarballs). The method reproduces existing locked inputs byte-for-byte (validated against
shdoc's narHash and lastModified), sonix flake lockshould be a no-op — but worth running before merge. CI'shomeConfigurations.linux.activationPackagebuild exercises the full module.Deployed-host migration
On hosts with the old rcup symlinks under
~/.config/nvim, home-manager backs them up as*.hm-backupon first switch (surfaced by hm-backup-report) — clean them up once. The lazy.nvim clone under~/.local/share/nvim/lazyis now inert and can be deleted.https://claude.ai/code/session_011r2XmQDac5gBxLx37mAQJ9
Generated by Claude Code