diff --git a/omp-docs/tools/neovim.md b/omp-docs/tools/neovim.md new file mode 100644 index 0000000..743cc5f --- /dev/null +++ b/omp-docs/tools/neovim.md @@ -0,0 +1,77 @@ +--- +type: reference +title: Neovim and LazyVim +description: Two nvim entry points on the workstations — vanilla `nvim` and the `lazyvim` NVIM_APPNAME profile — plus the wallpaper palette hook and the fresh-box install procedure. +tags: + - editor + - nvim + - lazyvim + - dotfiles + - blankpad +verified: 2026-10-19 +timestamp: 2026-10-19 +--- + +# Neovim and LazyVim + +Two editors share one binary. Plain `nvim` is **vanilla** (no user config at +all — quick edits, agent-spawned edits, `git commit` buffers). The LazyVim +distribution lives in a **separate `NVIM_APPNAME` profile**, reached with the +`lazyvim` shell function. Keeping them apart is deliberate: a distro in +`~/.config/nvim` would slow down and surprise every throwaway `nvim file` call. + +| | vanilla | LazyVim | +|---|---|---| +| command | `nvim` | `lazyvim` (= `NVIM_APPNAME=lazyvim nvim`) | +| config | `~/.config/nvim` (empty) | `~/.config/lazyvim` → tracked at `dotfiles/lazyvim/` | +| plugins/state | none | `~/.local/share/lazyvim`, `~/.local/state/lazyvim`, `~/.cache/lazyvim` — runtime, **never tracked** | +| vim (not nvim) | `~/.vimrc` absent → Vim 9.2 stock defaults | — | + +The function is defined in `dotfiles/zz-blankpad/zsh/.zshrc`; `vim` and bare +`nvim` stay untouched on purpose. + +## Fresh box + +1. `git clone http://192.168.0.143:3000/dank/command-center.git ~/.omp` — the + profile arrives as `dotfiles/lazyvim/` (dotfiles tier, see + [live-sync](live-sync.md)). +2. `ln -s ~/.omp/dotfiles/lazyvim ~/.config/lazyvim` — files, not the whole + directory, are the repo convention elsewhere, but this tree is nvim-only and + the plugin manager rewrites `lazy-lock.json` in place. +3. `NVIM_APPNAME=lazyvim nvim --headless "+Lazy! sync" +qa` — bootstraps + lazy.nvim, then every plugin. Needs network (GitHub) once. +4. `:LazyHealth` inside `lazyvim` to confirm. + +Requirements met on blankpad: nvim ≥ 0.11 with LuaJIT, git, ripgrep, `fd`, +`fzf`, `lazygit`, a Nerd Font. `tree-sitter` CLI is **not** installed and is +**not** needed — nvim-treesitter downloads/compiles parsers with `cc` on the +first real session. Language servers install on demand through mason. + +## The wallpaper palette (`lua/matugen.lua`) + +LazyVim's colorscheme is overridden by a base16 palette kept in +`lua/matugen.lua`, applied through `RRethy/base16-nvim` on every `ColorScheme` +event (`lua/plugins/matugen.lua`) — so `:colorscheme ` still lands on +the palette, and `v:colors_name` keeps reporting the underlying theme, which +LazyVim's own plugin tweaks depend on. + +The module also registers a `SIGUSR1` handler that re-requires itself: a real +`matugen` install (theme generator, not installed here) writing this file from +a template can hot-retheme a live editor with `pkill -USR1 -x nvim`. Without +matugen the palette is a static snapshot — the file is the source of truth. + +To recolor by hand: edit the `base00`–`base0F` table, then send `SIGUSR1` (or +restart). Highlight groups for pickers live below the table; unlisted groups are +harmless no-ops. + +## Do not + +* Do not clone `LazyVim/starter` over `~/.config/nvim` — the official recipe, + but it destroys the vanilla quick-edit path this box relies on. +* Do not commit `~/.local/share/lazyvim` (≈200 MB of checkouts). `lazy-lock.json` + inside the profile *is* tracked: it pins plugin revisions. + +## See Also + +* [applications](applications.md) — the editor's place in the CachyOS/Niri stack. +* [tmux](tmux.md) — extended-keys setup that the same terminals need.