Skip to main content

Prerequisites

Before installing this configuration, ensure you have the following:
1

Neovim 0.11+

This configuration uses native LSP features available in Neovim 0.11 and later.
# Check your version
nvim --version
Install the latest stable version from neovim.io or use your package manager:
brew install neovim
2

Git

Required for lazy.nvim plugin manager and version control features.
git --version
3

Node.js and npm

Required for many language servers and tools.
node --version
npm --version
4

Ripgrep

Required for fast searching with grug-far and telescope.
brew install ripgrep
5

Treesitter CLI

Required for treesitter parser compilation.
npm install -g tree-sitter-cli

Install the configuration

Backup your existing Neovim configuration before proceeding. This will overwrite any existing config.
1

Backup existing configuration

# Backup your current config
mv ~/.config/nvim ~/.config/nvim.backup
mv ~/.local/share/nvim ~/.local/share/nvim.backup
mv ~/.local/state/nvim ~/.local/state/nvim.backup
2

Clone the configuration

git clone <your-repo-url> ~/.config/nvim
3

First launch

Launch Neovim to trigger lazy.nvim bootstrap and plugin installation:
nvim
On first launch, lazy.nvim will clone itself and install all plugins. This may take a few minutes.
The bootstrap process will:
  • Clone lazy.nvim to ~/.local/share/nvim/lazy/lazy.nvim
  • Install all plugins from lua/plugins/
  • Compile treesitter parsers

Install language servers

Language servers provide IntelliSense, diagnostics, and code actions. Install only the ones you need:

Quick install (all languages)

# Homebrew packages
brew install \
  lua-language-server \
  llvm \
  golangci-lint \
  shellcheck

# npm packages
npm install -g \
  typescript-language-server typescript \
  bash-language-server \
  vscode-langservers-extracted \
  yaml-language-server \
  dockerfile-language-server-nodejs \
  @tailwindcss/language-server \
  @olrtg/emmet-language-server

# Go packages
go install golang.org/x/tools/gopls@latest

# Cargo packages
cargo install --locked markdown-oxide
cargo install --locked harper-ls

Individual language servers

Lua

brew install lua-language-server
# or download from GitHub releases

Go

go install golang.org/x/tools/gopls@latest

TypeScript/JavaScript

npm install -g typescript-language-server typescript

C/C++

brew install llvm  # includes clangd
# or: sudo apt install clangd

Install formatters

Formatters are used by conform.nvim for automatic code formatting:
npm install -g \
  prettier \
  @biomejs/biome \
  markdownlint-cli2

Install linters

Linters are used by nvim-lint for code analysis (triggered with <leader>ll):
npm install -g \
  eslint_d \
  jsonlint \
  htmlhint \
  stylelint \
  markdownlint-cli2

Verify installation

Check that all tools are available in your PATH:
# Language servers
lua-language-server --version
gopls version
typescript-language-server --version
clangd --version

# Formatters
stylua --version
prettier --version
biome --version
gofumpt --version

# Linters
eslint_d --version
luacheck --version
golangci-lint --version
shellcheck --version
Not all tools need to be installed. Only install the ones for languages you actively use.

System configuration

This configuration is tested on:
OS: Linux (WSL)
Shell: zsh with oh-my-zsh, theme oh-my-posh
Package Managers:
  - Homebrew (preferred)
  - apt (fallback)

Optional: Database CLI clients

If you plan to use vim-dadbod for database work:
brew install postgresql mysql-client sqlite mongosh redis
Or on Linux:
sudo apt install postgresql-client mysql-client sqlite3 redis-tools

Troubleshooting

If plugins fail to install on first launch:
  1. Check your internet connection
  2. Try running :Lazy sync inside Neovim
  3. Check :Lazy log for error messages
  4. Ensure git is properly configured
If language servers aren’t starting:
  1. Verify the language server is installed: which lua-language-server
  2. Check LSP logs: :LspLog
  3. Restart LSP: :LspRestart
  4. Check if the server is configured in lua/plugins/lsp/init.lua
If treesitter parsers fail to compile:
  1. Install a C compiler (gcc or clang)
  2. Install treesitter CLI: npm install -g tree-sitter-cli
  3. Manually install parsers: :TSInstall lua vim vimdoc
  4. Check :checkhealth nvim-treesitter
If colors aren’t displaying correctly:
  1. Ensure your terminal supports true color
  2. Set COLORTERM=truecolor in your shell profile
  3. Try different terminal emulators (kitty, wezterm, alacritty)
  4. Check :checkhealth for terminal issues

Next steps

Quick start

Learn the essential keybindings and workflows

Customization

Customize the configuration to your preferences

Build docs developers (and LLMs) love