Files
Frank cae49fcd09 docs: record the LazyVim profile and the auto-speak arming rule (Refs #36)
Neither setting did what it looked like it did, and the knowledge base had no
page for either, so both were invisible until the operator asked.

tools/neovim.md: the two entry points (vanilla `nvim`, `lazyvim` as an
NVIM_APPNAME profile), the fresh-box install, the base16 wallpaper-palette hook
with its SIGUSR1 contract, and the trap that matters — the official recipe
clones over ~/.config/nvim and destroys the vanilla quick-edit path.
tools/applications.md gets the editor row (Ghostty's row had lost its label)
and Neovim's verified version.

core/dankvoice.md gains the arming rule: arming is session-scoped, a silent
session start is a config state, and the two checks — `/say status` then
`pgrep -a pw-play` — prove the chain without blaming the endpoint.

kb-lint 0 violations, index-coverage 0 issues.
2026-10-19 13:28:24 -07:00

78 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 <anything>` 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.