Opinionated macOS setup using Homebrew Bundle, GNU stow, and Oh My Zsh.
Install everything (brew + all dotfiles) in one go:
zsh -c "$(curl -fsSL https://raw.githubusercontent.com/mehuaniket/dotfiles/main/scripts/setup.sh)" -- --allInstall core dotfiles only (zsh, tmux, fzf, nvim):
zsh -c "$(curl -fsSL https://raw.githubusercontent.com/mehuaniket/dotfiles/main/scripts/setup.sh)" -- --brewIf Homebrew packages are already installed:
zsh -c "$(curl -fsSL https://raw.githubusercontent.com/mehuaniket/dotfiles/main/scripts/setup.sh)"Install specific configurations:
# Install Ghostty terminal
zsh -c "$(curl -fsSL https://raw.githubusercontent.com/mehuaniket/dotfiles/main/scripts/setup.sh)" -- --ghostty
# Or manually after cloning
cd ~/.dotfiles
stow ghostty # Ghostty terminal config
stow zsh # Zsh configuration (includes Powerlevel10k)
stow tmux # Tmux configuration
stow nvim # Neovim configuration
stow fzf # FZF configuration| Config | Description | Terminal |
|---|---|---|
zsh |
Shell config with Powerlevel10k | iTerm2, Ghostty |
tmux |
Terminal multiplexer | All |
nvim |
Neovim IDE setup | All |
fzf |
Fuzzy finder | All |
ghostty |
Ghostty terminal (Catppuccin Mocha) | Ghostty |
git |
Git configuration | All |
k9s |
Kubernetes TUI | All |
- Dual Terminal Support:
- iTerm2 & Ghostty → Powerlevel10k prompt
- Consistent theme and experience across terminals
- Theme: Catppuccin Mocha everywhere
- Font: JetBrains Mono Nerd Font
- Shell: zsh with Oh My Zsh
- Multiplexer: tmux with TPM
Leaving a machine (export current state):
brew bundle dump --file=homebrew/Brewfile --forceFresh installation on a new machine:
brew bundle --file=homebrew/Brewfile && brew cleanup- Import
misc/iterm_default_profile.json(iTerm2 → Profiles → Other Actions → Import JSON Profiles) - Optionally import
misc/catppuccin_mocha.itermcolors
- Launch Ghostty:
open -a Ghostty - Config auto-linked via stow to
~/.config/ghostty/config - Uses Powerlevel10k prompt (same as iTerm2)
- Restart Terminal/Ghostty
- Open Neovim once to let plugins sync:
nvim - Press
Ctrl+SpacethenIin tmux to install plugins
~/.dotfiles/ # Source files (edit here)
├── zsh/ # → ~/.zshrc, ~/.p10k.zsh
├── tmux/ # → ~/.config/tmux/
├── nvim/ # → ~/.config/nvim/
└── ghostty/ # → ~/.config/ghostty/
~/.config/ # Symlinked configs (auto-managed)
├── ghostty/config # Ghostty terminal
├── tmux/tmux.conf # Tmux config
└── nvim/ # Neovim config
cd ~/.dotfiles
# Update specific config
cd zsh && git pull && cd .. && stow -R zsh
# Update Brewfile (export current state)
brew bundle dump --file=homebrew/Brewfile --force
# Update all configs
git pull && stow -R zsh tmux nvim fzf ghostty- Tmux: Press
Ctrl+Spacethenrto reload config - Neovim: Run
:Lazy updateto update plugins - Ghostty vs iTerm2: Prompt auto-switches based on terminal
- Blog: How I set up my Mac
# Remove old symlinks
stow -D <package>
# Re-link
stow <package>Check if Powerlevel10k is loaded:
echo $ZSH_THEME
# Should show: powerlevel10k/powerlevel10k# Reinstall Nerd Fonts
brew reinstall --cask font-jetbrains-mono-nerd-font