Skip to content

Migrate Neovim plugins from Packer to lazy.nvim - #17

Open
akan72 wants to merge 22 commits into
akan72/shell-restructuringfrom
akan72/nvim-lazy-migration
Open

Migrate Neovim plugins from Packer to lazy.nvim#17
akan72 wants to merge 22 commits into
akan72/shell-restructuringfrom
akan72/nvim-lazy-migration

Conversation

@akan72

@akan72 akan72 commented May 29, 2026

Copy link
Copy Markdown
Owner

Summary

  • Replace archived Packer with lazy.nvim pinned to v11.17.5.
  • Convert plugin specifications, add lazy-loading triggers, and track lazy-lock.json.
  • Stack position 8 of 15, after Restructure shell config into shared.sh #15.

Test Plan

  • Ran the complete installer in a fresh synthetic home on the Mac mini.
  • Captured the actual headless Neovim command before and after; it changed from PackerSync to Lazy! restore, preserving the committed lock state.
  • Aligned the lazy.nvim lock entry with the pinned v11.17.5 bootstrap commit and verified CI leaves lazy-lock.json unchanged.
  • Ran bash -n assimilate.sh and git diff --check.
  • Screenshots: not applicable; validation was CLI-based.

@akan72
akan72 changed the base branch from main to akan72/shell-restructuring August 22, 2026 19:29
@akan72
akan72 force-pushed the akan72/nvim-lazy-migration branch from 43b19ca to bad8a46 Compare August 22, 2026 19:29
akan72 added 9 commits August 22, 2026 15:46
- Remove dead config bare-repo alias (symlink approach is used, not bare repo)
- Remove 10 unused Mercurial (hg) aliases
- Fix docker_rmi_dangling quoting (inner single quotes broke the alias)
- Replace dead postgresql@14 PATH with version-agnostic $(brew --prefix postgresql@17)/bin
- Remove dead sops PATH (~/Downloads/sops-3.7.2, no longer in Brewfile)
- Remove hardcoded Python 3.11 framework PATH
- Fix gdm/gdnm aliases: master -> main
- Remove 'export TERM=xterm-256color' (let the terminal set terminfo)
- Remove duplicate NVM init block (also in zshrc)
- Remove duplicate cargo/env source (also in zshrc)
- Remove EDITOR export (zshrc owns it with SSH-aware logic)
…conflicts

- Stop sourcing ~/.bashrc from zshrc (bash-specific syntax can break under zsh);
  inline the shared aliases/exports directly (extracted to shared.sh in follow-up)
- Remove the oh-my-zsh git plugin (custom git aliases shadow every alias it provides)
- Resolve set -o vi vs bindkey -e: drop 'set -o vi' from bashrc so zsh uses emacs
  line editing consistently (was silently overridden anyway)
- Resolve brew node vs nvm: remove brew "node" from Brewfile so nvm manages
  Node versions (per-project .nvmrc), matching the active setup
- Extract shared aliases, exports, and PATH into shared.sh (single source of truth)
- Source shared.sh (~/.shared.sh) from both bashrc and zshrc instead of
  sourcing bashrc from zshrc
- Consolidate all static PATH entries (Homebrew, Postgres, yarn, bun, ~/.local/bin)
  into one block in shared.sh with a _prepend_path dedup helper, preventing
  PATH from ballooning in nested shells (e.g. tmux)
- Symlink shared.sh -> ~/.shared.sh in assimilate.sh
- Replace Packer bootstrap with lazy.nvim bootstrap pinned to v11.17.5
  (self-installs on first launch)
- Convert all use{} specs to lazy {} specs: run -> build, requires -> dependencies
- Set mapleader before lazy.setup so lazy 'keys' specs bind correctly
- Add priority = 1000 + lazy = false to the gruvbox colorscheme
- Remove the BufWritePost PackerCompile autocmd
- Lazy-load: telescope (keys + :Telescope), fugitive (:Git/:G + <leader>gs),
  markdown-preview (ft = markdown)
- Fix nvim-treesitter ensure_installed: 'help' -> 'vimdoc' (parser renamed)
- Delete nvim/coc-settings.json (unused; config uses lsp-zero + Mason)
- Remove nvim/plugin/ from .gitignore (Packer artifact dir; lazy doesn't use it)
- assimilate.sh: drop the packer clone + PackerSync; lazy self-bootstraps and we
  trigger a headless 'Lazy\! sync' instead

Notes:
- lsp.lua already used 'ts_ls' (not 'tsserver'), so no rename was needed there.
- Kept the vim.tbl_flatten shim in init.lua: the still-pinned old plugin
  versions (e.g. telescope 0.1.1) reference it; remove only after unpinning.
- lazy-lock.json is generated on first interactive launch — run nvim, let lazy
  install, verify (:Lazy), then commit the lockfile.
Generated by the headless Lazy! sync in assimilate.sh; commits match the
pins in plugins.lua and lock the plugins that only pin a branch (LuaSnip,
nvim-cmp, mason, Comment.nvim, ...).
@akan72
akan72 force-pushed the akan72/nvim-lazy-migration branch from 3c9308f to 07b07a3 Compare August 22, 2026 19:46
@akan72
akan72 force-pushed the akan72/nvim-lazy-migration branch from 4a93906 to 01b5f9c Compare August 22, 2026 19:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant