- features nvchad v2.5
- target os: wsl2/linux/macos
- modularised setup of plugins and configurations
- LSP via Neovim 0.11+ tier-3 API (
lsp/<server>.luaauto-discovery); formatting via conform.nvim, linting via nvim-lint — one source of truth per language, no null-ls - scripting with bash, lua and toml as smooth as it gets
- web development with js/ts, react and astro fully covered
- development with rust (via rustaceanvim), c and go
- git integrated using neogit, gitsigns, diffview, telescope and vimfugitive
- markdown preview with live changes in browser
- MCP servers wired via mcphub.nvim (GitHub PAT stored in macOS Keychain, not disk)
- round borders as a priority over sharp borders
Warning
Disclaimer: I frequently use git rebase -i to streamline my
configuration. if you plan to use lazy-lock.json to stick with certain
snapshots of the config, you might have a hard time due to changing commit
hashes.
Required:
- NVIM Stable v0.11.0+ (tier-3
lsp/folder andvim.lsp.enable()are 0.11 APIs) - NvChad v2.5
- Python 3.11.7+ & pip
- pip:
pynvim==0.4.3+ - Node.js v22+ (also used by
mcp-hub, installed on first mcphub build) - npm:
neovim@4.10.1+
Recommended:
- Cargo 1.74.1+ (rustaceanvim + rust-analyzer)
securityCLI on macOS if you use the GitHub MCP server (keychain-backed PAT)
- Require plugin module
- officer
- savior
- gotest
- abolish
- Auto-session
- nvim-tree-text-objects
- Fix:
- Format Rust, Ruby,... (conform.nvim: rustfmt + rubocop)
- Attempt to call local 'module' (a nil value) — resolved by null-ls
removal + dead
noah/<lang>.luacleanup - Change UI theme issue 3
- Optimize plugin (perf tier-1: cold start ~1700ms → ~394ms — cmp deps
trimmed,
vim.loader.enable(), >512 KiB large-file guard, telescope/fff lazy triggers) - Rebuild module structure (tier-3
lsp/folder; 22 deadnoah/<lang>.luafiles +configs/autocmd.luaremoved) - Add LSP (15 servers via tier-3 auto-discovery +
filetype_to_serverslazy enable) - Adjust keymaps: dedup
<leader>ch/<leader>cp/<leader>tscollisions inlua/mappings.lua - Merge
lua/mappings.lua(1197 lines) withlua/configs/keymaps.lua(443 lines) — currently loaded in parallel frominit.lua - Prune plugin overlap: git (6), markdown (6), UI (noice + dressing + edgy + notify)
This configuration uses pre-commit to automatically lint and format Lua files before committing. Set up once and never worry about code style drift again.
Included Hooks:
luacheck: Detects bugs and enforces best practices for Luastylua: Formats Lua code according to a standard style
-
Install pre-commit:
brew install pre-commit # or pip install pre-commit -
Install hook dependencies:
brew install luacheck stylua
-
Set up hooks:
From the root of the project:
pre-commit install pre-commit run --all-files
Hooks are automatically run on
git commit. To manually test, use:pre-commit run --all-files
