PRJ: domus-nvim

Project Summary

Project

domus-nvim

Priority

P1

Status

Active Development

Location

~/atelier/_projects/personal/domus-nvim/

Started

December 2025

Symlink

~/.config/nvim-domus

Alias

v (NVIM_APPNAME=nvim-domus nvim)

Purpose

Primary Neovim configuration following hierarchical, modular architecture. Separates plugin specifications from configurations for maintainability. Includes embedded Antora documentation.

Requirements

Component Version Notes

Neovim

0.11.0+

Required for vim.lsp.config API

Git

2.19+

Plugin installation via lazy.nvim

Node.js

18+

Optional - for LSP servers

ripgrep

Any

Optional - for Telescope live grep

Phase 1: Neovim Version Management (bob)

bob is a cross-platform Neovim version manager written in Rust. It installs versions under ~/.local/share/bob/ and symlinks the active binary into ~/.local/share/bob/nvim-bin/. The pacman-managed /usr/bin/nvim remains untouched โ€” bob’s version takes precedence only when its bin directory appears first in $PATH.

Install bob

Install via cargo (Rust toolchain required):

cargo install bob-nvim

Configure PATH

bob’s symlink directory must precede /usr/bin in $PATH. Add to ~/.zshrc (or equivalent):

# Neovim version manager (bob)
export PATH="$HOME/.local/share/bob/nvim-bin:$PATH"

Reload the shell:

source ~/.zshrc

Install and activate a version

# Install a specific release
bob install 0.12.0

# Switch to it
bob use 0.12.0

# Verify
nvim --version | head -1

Common operations

Command Description

bob install stable

Install latest stable release

bob install nightly

Install nightly build

bob install 0.12.0

Install specific version

bob use <version>

Switch active version (updates symlink)

bob ls

List installed versions

bob ls-remote

List available versions

bob uninstall <version>

Remove an installed version

bob erase

Remove bob and all installed versions

Rollback

If a new version breaks plugins or configuration:

# Switch back to previous version
bob use 0.11.7

# Or fall through to pacman's version entirely
bob uninstall 0.12.0
# /usr/bin/nvim (pacman) takes over if bob/nvim-bin is empty

Version pinning rationale

Version Notes

0.11.7

Current pacman version. Required for vim.lsp.config API. Baseline for domus-nvim.

0.12.0

Targeted upgrade. Evaluate native LSP improvements, vim._with fixes, treesitter changes.

After upgrading, run :checkhealth and :Lazy sync to surface any plugin incompatibilities before committing to the new version.

Improvement Proposals

Proposals from ecosystem audit — 2026-04-04. For team review and prioritization.

Priority Proposal Rationale Effort

P1

Add LSP configuration reference table

Which LSPs are configured, per language, with their settings. Currently buried in Lua files — should be a scannable table.

M

P2

Keybinding cheatsheet partial

Custom keybindings are the muscle memory layer. A printable cheatsheet partial (leader key combos, telescope maps, etc.) is high utility.

S

P2

Plugin dependency graph

lazy.nvim manages 30+ plugins with load-order dependencies. A graph showing which plugins trigger which (via events, ft, keys) prevents breakage.

M

P3

Performance tuning guide (lazy loading, startup time)

Document the lazy-loading strategy, startup profiling commands (--startuptime), and optimization decisions.

S

P2

Consolidate Termux detection into core/util.lua โœ“ Done

Completed 2026-04-04. util.is_termux() now shared by mason-tools.lua and lsp/init.lua.

S

P3

Add debouncing to nvim-lint InsertLeave autocommand

Linting fires on every InsertLeave event with no throttle. Could cause lag in rapid editing scenarios. Add debounce or limit to BufWritePost only.

S

P3

Extract AsciiDoc lang config into smaller modules โœ“ Superseded

Kept as single 1100-line module (well-sectioned). Splitting adds indirection without benefit. Module upgraded with 25 diagram snippets, 5 commands, improved navigation.

M

Notes

Primary editor configuration. Uses NVIM_APPNAME for isolation from other Neovim configs (nvim-core, nvim-modulus, nvim-fidus, domus-minimus). Focus on clean separation of concerns and lazy loading for performance.