Skip to content

Repository files navigation

NvChad Neovim configuration


Features

  • 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>.lua auto-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.


Dependencies

Required:

  • NVIM Stable v0.11.0+ (tier-3 lsp/ folder and vim.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)
  • security CLI on macOS if you use the GitHub MCP server (keychain-backed PAT)

Checklist

  • 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>.lua cleanup
    • 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 dead noah/<lang>.lua files + configs/autocmd.lua removed)
  • Add LSP (15 servers via tier-3 auto-discovery + filetype_to_servers lazy enable)
  • Adjust keymaps: dedup <leader>ch / <leader>cp / <leader>ts collisions in lua/mappings.lua
  • Merge lua/mappings.lua (1197 lines) with lua/configs/keymaps.lua (443 lines) — currently loaded in parallel from init.lua
  • Prune plugin overlap: git (6), markdown (6), UI (noice + dressing + edgy + notify)

Pre-commit Hooks

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 Lua
  • stylua: Formats Lua code according to a standard style

Setup

  1. Install pre-commit:

    brew install pre-commit
    # or
    pip install pre-commit
  2. Install hook dependencies:

    brew install luacheck stylua
  3. 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

About

Configuration appropriate for multilingual and software development

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages