# back-up existing config first
mv ~/.config/nvim ~/.config/nvim.bak
# clone with submodules & lazy-lock file
git clone --depth 1 https://github.com/chicha09/nvim ~/.config/nvim
# start Neovim – NvChad + lazy.nvim will take care of the rest
nvimAll plugins are lazy-loaded. The first start will take a minute to install parsers, LSPs, DAP adapters, etc. Afterwards everything should feel snappy.
Tip: run
:Lazyat any time to see plugin status.
• Colour scheme tokyonight (via NvChad base46)
• Plugin manager lazy.nvim (handled by NvChad)
• Formatter / Linter conform.nvim & lint.nvim with automatic installation through Mason
• LSP mason-lspconfig + lots of hand-picked servers (Lua, Go, Rust, Ruby, JS/TS, Terraform, …)
• DAP nvim-dap + UI, virtual-text & VS Code JS adapter – installed automatically by mason-nvim-dap
• Completion nvim-cmp + copilot-cmp + custom sources & icons (lspkind)
• Treesitter Full parser line-up, text-objects & endwise / autotag extensions
• Snippets LuaSnip – VSCode & project snippets are lazy-loaded (./snippets)
Below is a non-exhaustive list grouped by category. See lua/plugins/*.lua for the exact specs.
gitsigns.nvim– sign column & hunk actionsneogit+lazygit.nvim– two excellent Git UIsgitlinker.nvim&advanced-git-search– open/blob/search in browser
flash.nvim– jump anywhere with sharpoon– quickly mark & switch between filesneoscroll– smooth scrollingsort-motion,tiny-glimmer,tabout– misc movement goodies
lspsaga,lsp_signature,outline.nvim,trouble.nvimnvim-dap,nvim-dap-ui,nvim-dap-virtual-text,nvim-dap-vscode-jsneotest– run tests with output & summary view
nvim-surround,nvim-autopairs,nvim-ts-autotagindent-blankline,todo-comments,text-case.nvimnoice.nvim– overhauled command-line & notificationszen-mode,image.nvim,render-markdown– focus & markdown goodies
copilot.lua+copilot-cmpintegrationgp.nvim&augmentcode– ChatGPT powered actions
vim-be-good– game to practise Vimcellular-automaton– because why not
| Mode | Keys | Action |
|---|---|---|
| n | ; |
Enter command-line (like : but closer) |
| n | <C-d> / <C-u> |
Scroll half-page and keep cursor centred |
| n | n / N |
Next/previous search hit & centre cursor |
| n | <leader>fc |
Telescope file-context picker |
| n | <leader>fp |
Telescope projects picker |
| n | <M-n> / <M-p> |
Next / prev quick-fix entry |
| i,s | <Tab> / <S-Tab> |
LuaSnip jump next / previous |
| i | <C-j> / <C-k> |
nvim-cmp next / previous completion item |
You can discover the full mapping list with :Telescope keymaps or by reading lua/mappings.lua.
- Custom file-types for Hyprland, Kitty, Rasi (rofi/wofi) scripts, Waybar, etc.
- Treesitter language remaps (e.g. use
bashparser for Kitty conf files). - Undercurl terminal support and global statusline enabled.
All of this lives in lua/options.lua and lua/autocmds.lua.
This config relies heavily on the Mason ecosystem – servers are installed on-demand the first time you open a matching file type.
| Language | Formatter |
|---|---|
| Lua | stylua |
| Go | goimports |
| Rust | rustfmt |
| Ruby | rubocop |
| … | plus many more |
Lint sources are registered in lua/configs/lint.lua – they mirror the above
formatters when sensible.
Initial set-up includes (but is not limited to): lua_ls, gopls, rust_analyzer,
ruby_ls, tsserver, jsonls, yamlls, terraformls, bashls, marksman,
clangd, pyright …
You can add or blacklist servers in lua/configs/mason-lspconfig.lua.
Enhanced Rust development with:
- rustaceanvim: Supercharged Rust experience with advanced LSP features
- rust-analyzer: Language Server Protocol with inlay hints and diagnostics
- crates.nvim: Dependency management for
Cargo.toml - rustfmt: Code formatting
- clippy: Linting and code analysis
- Key features:
- Code actions, hover actions, runnables, debuggables
- Expand macros, move items, structural search/replace
- View HIR/MIR, syntax tree, explain errors
- Rust keymaps:
<leader>ra(code actions),<leader>rr(runnables),<leader>rt(testables),<leader>rd(debuggables),K(hover actions) - Crates keymaps:
<leader>ct(toggle),<leader>cu(update),<leader>cU(upgrade)
~/.config/nvim
├── init.lua # boots NvChad
├── lazy-lock.json # pinned plugin versions (lazy.nvim)
├── lua
│ ├── chadrc.lua # top-level NvChad overrides (theme, plugins)
│ ├── options.lua # vim.opt tweaks & file-type detection
│ ├── mappings.lua # key-maps (wrapped helper)
│ ├── autocmds.lua # misc autocmds
│ ├── plugins/ # one file per plugin spec (lazy.nvim format)
│ └── configs/ # bigger plugin configs split out for clarity
└── snippets/ # extra VSCode-style snippets (LuaSnip)
- Huge thanks to the NvChad team – this config is only possible because of their work.
- Inspiration & bits of code from LazyVim, craftzdog/dotfiles-public and many single-purpose repos.
Happy hacking! – chicha09

