Minimal, personal Neovim + terminal setup powered by lazy.nvim.
Fast, clean, and ready to go - with LSP 🧠, fuzzy find 🔍, formatting ✨, autocompletion 🚀, and beautiful themes 🎨.
I use Ghostty as my terminal - GPU-rendered, ligature support, and blazing fast.
- 🧩 Plugin Manager:
lazy.nvim - 🧠 LSP Support:
nvim-lspconfig+mason.nvim - ✨ Code Formatter:
conform.nvim - 🌳 Treesitter:
nvim-treesitter - 🚀 Completion:
blink.cmp+ snippets - 📁 File Explorer:
oil.nvim - 🔍 Fuzzy Finder:
fzf-lua - 📊 Status Line:
lualine.nvim - 📐 Indent Detection:
guess-indent.nvim - 💬 Startup Goodies:
snacks.nvim - 📌 Navigation:
harpoon - ⚡ Motion & Navigation:
flash.nvim - 🎨 Themes: Rose Pine & Catppuccin
💡 This setup uses Homebrew to install dependencies.
If you don't have Homebrew installed, run the command below:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"🔗 Visit brew.sh to check for the latest installation command if the one above doesn't work.
Install the following tools using Homebrew:
brew install fzf tmux neovim git node rust python lazygit starship- Homebrew (macOS)
- Neovim ≥ 0.10
- fzf
- Rust
- Node.js & npm
- Python 3
- git
- tmux
➕ Required for plugin support: TPM (Tmux Plugin Manager) - A Nerd Font (JetBrainsMono, Hack, etc.)
- For enhanced
z+cdexperience: Zinit - Recommended: Lazygit
Make sure to back up your existing configs before proceeding.
[ -d ~/.config/nvim ] && mv ~/.config/nvim ~/.config/nvim.bak
[ -f ~/.zshrc ] && mv ~/.zshrc ~/.zshrc.bak
[ -f ~/.tmux.conf ] && mv ~/.tmux.conf ~/.tmux.conf.bakgit clone https://github.com/johnpaulcas/dotfiles ~/.dotfilesmkdir -p ~/.config# Neovim
ln -s ~/.dotfiles/.config/nvim ~/.config/nvim
# Ghostty
ln -s ~/.dotfiles/.config/ghostty ~/.config/ghostty
# Tmux (optional)
ln -s ~/.dotfiles/.tmux.conf ~/.tmux.conf
# Zsh (optional)
ln -s ~/.dotfiles/.zshrc ~/.zshrc
⚠️ Make sure~/.config/nvimdoes not already exist before symlinking.
Run this only if you use Colemak-DH, because this config's labels are set up for that layout.
Create the folder first. Don't create config.yaml by hand, the symlink provides it:
mkdir -p ~/Library/Application\ Support/Mouseless/configsThen link the config:
ln -s ~/.dotfiles/.config/mouseless/config.yaml ~/Library/Application\ Support/Mouseless/configs/config.yaml
⚠️ If Mouseless already made its ownconfig.yaml, move it first orlnsays "File exists".
nvimNeovim will install all plugins via lazy.nvim on first launch.
Install tmux/tpm
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpmInstall the Catppuccin theme. It's cloned by hand instead of through TPM, and .tmux.conf loads it from this path:
git clone --depth 1 -b v2.3.2 https://github.com/catppuccin/tmux.git ~/.config/tmux/plugins/catppuccin/tmuxAfter installation enter to tmux mode by running
tmuxReload TMUX environment so TPM is sourced:
tmux source ~/.tmux.confPress prefix + I (capital i, as in Install) to fetch the plugin
Uses the official Kotlin LSP from JetBrains, installed through Mason. It bundles its own Java runtime, so no separate JDK is needed to run it.
Mason installs the server automatically when Neovim starts. If it's missing, install it manually inside Neovim:
:MasonInstall kotlin-lsp💡 The download is large (about 1.1 GB once installed), so it can take a few minutes the first time.
Then open a .kt file from a Gradle or Maven project. The server only starts when it finds a project root such as settings.gradle.kts, build.gradle.kts or pom.xml. The first launch is slow while the project is imported and indexed.
⚠️ Kotlin LSP is in alpha, and Kotlin Multiplatform projects are not supported yet.
Use any Nerd Font for icon support in Neovim, Tmux, and Zsh:
- JetBrainsMono Nerd Font
- FiraCode Nerd Font
- Hack Nerd Font
:Lazy— open the plugin manager:Mason— manage LSP servers and tools:CheckHealth— check system dependencies<leader>ff— fuzzy file finder- Customize themes in
lazy.lua
Happy Hacking 💻✨