My development environment setup: Neovim + tmux + Fish + Ghostty.
Based on craftzdog/dotfiles-public with custom extensions for Go, Python, Terraform and Docker development.
- Neovim (LazyVim) - solarized-osaka theme, oil.nvim file explorer, telescope, toggleterm, supermaven AI, zen-mode, DAP debugging
- tmux - C-t prefix, lazygit/claude code popups, solarized statusline
- Fish - tide prompt, eza aliases, zoxide, fzf integration
- Ghostty - solarized dark theme, transparency, FiraCode Nerd Font
- macOS (tested on Apple Silicon)
- Homebrew
- Git
- FiraCode Nerd Font
brew install neovim tmux fish ghostty eza zoxide fzf lazygit lazydockerecho /opt/homebrew/bin/fish | sudo tee -a /etc/shells
chsh -s /opt/homebrew/bin/fishfish -c "curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher"
fish -c "fisher install IlanCosman/tide@v6"git clone https://github.com/tmux-plugins/tpm ~/.config/tmux/plugins/tpmgit clone https://github.com/Capellinx/dotfiles.git ~/dotfiles
# Back up existing configs
mkdir -p ~/.config-backup
cp -r ~/.config/nvim ~/.config-backup/ 2>/dev/null
cp -r ~/.config/tmux ~/.config-backup/ 2>/dev/null
cp -r ~/.config/fish ~/.config-backup/ 2>/dev/null
cp -r ~/.config/ghostty ~/.config-backup/ 2>/dev/null
# Symlink configs
ln -sf ~/dotfiles/.config/nvim ~/.config/nvim
ln -sf ~/dotfiles/.config/tmux ~/.config/tmux
ln -sf ~/dotfiles/.config/ghostty ~/.config/ghostty
cp ~/dotfiles/.config/fish/config.fish ~/.config/fish/config.fish# Inside tmux (starts automatically), install tmux plugins:
# Press Ctrl+t, then I (capital i)
# Configure tide prompt:
tide configure
# Open neovim - plugins install automatically:
nvimIf you have Claude Code installed, you can automate the entire setup:
claude -p "Clone https://github.com/Capellinx/dotfiles and set up my dev environment. Install all dependencies with brew (neovim, tmux, fish, ghostty, eza, zoxide, fzf, lazygit, lazydocker). Set fish as default shell. Install fisher and tide. Install TPM. Symlink all configs from the cloned repo to ~/.config/. Open nvim to trigger plugin installation."Or interactively:
claudeThen ask:
Set up my dev environment using my dotfiles repo at https://github.com/Capellinx/dotfiles - install all dependencies, configure fish with tide, tmux with TPM, and symlink all configs.
File navigation: <leader>o oil float, <leader>e oil cwd, sf telescope file browser, ;f find files, ;r live grep
LSP: gd go to definition, gr references, K hover, <leader>rn rename
Git: <leader>gg lazygit, <leader>gb git blame
Editing: x delete char (no copy), <leader>p paste from yank, ss/sv splits, <leader>z zen mode
c new window, n/p next/prev window, " split horizontal, % split vertical, g lazygit popup, y claude code popup, r reload config
g = git, c = claude, vim = nvim, ls/ll/la/lt = eza variants