This directory contains my Neovim setup, written entirely in Lua, managed with lazy.nvim as a plugin manager. It’s organized into modular files for maintainability and fast startup.
The configuration is modular:
lua/config/→ core settings and keymapslua/plugins/→ individual plugin configsinit.lua→ the main entry pointlazy-lock.json→ pinned plugin versions for reproducibility
Everything lives inside a nvim/ directory that can be symlinked to ~/.config/nvim using Stow.
nvim/
├── init.lua # Entry point, loads core config and plugins
├── .luarc.json # Lua language server settings
├── lazy-lock.json # Plugin version lockfile
└── lua/
├── config/ # Core editor configuration
│ ├── keymaps.lua # Keybindings and shortcuts
│ ├── lazy.lua # Lazy.nvim setup and plugin loading
│ └── options.lua # General Neovim options and settings
│
└── plugins/ # Individual plugin configurations
├── autopairs.lua # Auto-close brackets, quotes, etc.
├── colorizer.lua # Color preview in code
├── completions.lua # Autocompletion (e.g. nvim-cmp)
├── lualine.lua # Statusline configuration
├── mason-lspconfig.lua # LSP installer and integration
├── noice.lua # UI enhancements (messages, cmdline)
├── snacks.lua # Custom utility plugins or extras
├── themes.lua # Colorscheme and appearance
└── treesitter.lua # Syntax highlighting & code parsing
- 🧩 Plugin Management — using lazy.nvim
- 🎨 Custom UI — theming with
lualine,colorizer, andnoice - 🧠 Intelligent Editing — completions, LSP, and Treesitter integration
- ⚡ Modular Structure — every feature isolated for readability
- 🧷 Version Locking — reproducible plugin installs via
lazy-lock.json
-
Install dependencies
sudo pacman -S neovim git nvm
Note : install nodejs using nvm
-
🔗 Linking with GNU Stow
From your dotfiles root directory (e.g.
~/Dotfiles):stow nvim
This creates symlinks in your home directory as:
~/.config/nvim -> Dotfiles/nvim/.config/nvimTo remove the symlink:
stow -D nvim
-
Launch Neovim
nvim
On first launch,
lazy.nvimwill automatically install and sync plugins.
- Add or disable plugins in
lua/config/lazy.lua - Change keymaps in
lua/config/keymaps.lua - Modify editor behavior in
lua/config/options.lua - Theme switching is handled in
lua/plugins/themes.lua
To update plugins:
:Lazy updateTo check plugin health:
:checkhealth