Personal configuration files and setup scripts, maintained for ~15 years.
This repo has evolved through different eras of my shell preferences:
- Early days: Custom bash configurations
- Middle years: Custom zsh, then Oh My Zsh with zsh-quickstart-kit
- Current: Fish shell with Starship prompt and minimal modifications
I now prefer curated, out-of-the-box experiences over heavy customization. The focus is on tools that work well with minimal configuration while maintaining a consistent catppuccin/darcula aesthetic.
Primarily designed for macOS but attempts to maintain cross-platform compatibility where possible.
# Check what's installed
./setup.sh --check
# Install missing tools and setup symlinks
./setup.sh --installAll managed via Homebrew (macOS) or Linuxbrew (Linux):
- GNU Stow: Dotfile symlink management
- Fish: Modern shell with syntax highlighting
- Starship: Cross-shell prompt
- Neovim: LazyVim-based editor config
- Tmux: Terminal multiplexer with Dracula theme
- FZF: Fuzzy finder integration
- Git: Version control with global config
- Tig: Text-mode interface for Git
- GitUI: Blazing fast terminal Git UI
- Zoxide: Smarter cd command
- Delta: Syntax-highlighting pager for Git
- Fish: Primary shell with cross-platform brew detection and defensive coding
- Zsh: Legacy modular configuration in
.zshrc.d/ - Starship: Consistent prompt across shells
- DRY Approach: Shared
.zshrc.d/modules work in both fish (via bass) and zsh
- Neovim: LazyVim + Catppuccin + Java support
- Tmux: Dracula theme, mouse support
- Ghostty: Terminal with Catppuccin Mocha theme
- Git: Global configuration and ignore patterns
- Tig: Git TUI with custom colors
- GitUI: Fast terminal Git interface with Catppuccin theme
- Zoxide: Smart directory navigation
- Delta: Enhanced Git diffs with syntax highlighting
├── setup.sh # GNU Stow-based setup script
├── home/ # Files for $HOME (stow -t ~ home)
│ ├── .gitconfig
│ ├── .gitignore_global
│ ├── .tmux.conf
│ ├── .tigrc
│ └── .zshrc.d/ # Legacy modular zsh config
└── config/ # Files for ~/.config (stow -t ~/.config config)
└── .config/
├── starship.toml
├── fish/
├── nvim/ # LazyVim configuration
├── ghostty/ # Terminal config + catppuccin theme
└── gitui/ # Git TUI with catppuccin theme
The setup script uses GNU Stow for symlink management:
--check: Only check if tools are installed--install: Install missing tools via Homebrew
What it does:
- ✅ Installs Homebrew/Linuxbrew if missing
- 📦 Checks for required tools (installs if
--installflag used) - 🔗 Uses
stowto create symlinks from repo to home directory - 🎨 Installs GitUI Catppuccin theme from GitHub
- 🐟 Updates Fish plugins via Fisher
Some configurations require external repositories that are installed automatically:
- GitUI Theme: Catppuccin GitUI - Cloned to
~/.config/gitui/catppuccin/ - Fish Plugins: Managed by Fisher - Listed in
fish_plugins
The setup script handles these automatically, but you can also install manually:
# GitUI Catppuccin theme
git clone https://github.com/catppuccin/gitui.git ~/.config/gitui/catppuccin
ln -sf ~/.config/gitui/catppuccin/themes/catppuccin-macchiato.ron ~/.config/gitui/theme.ron
# Fish plugins (run in fish shell)
fisher updateIf you prefer manual setup:
# Install dependencies
brew install stow fish starship neovim tmux fzf git tig gitui zoxide git-delta
# Stow dotfiles
stow -t ~ home
stow -t ~/.config configMost tools configured with Catppuccin Mocha or Darcula themes:
- Ghostty: Catppuccin Mocha
- GitUI: Catppuccin Macchiato
- Neovim: Catppuccin (via LazyVim)
- Tmux: Dracula theme
- Starship: Custom prompt colors
- Cross-platform: Fish config detects macOS/Linux and uses appropriate Homebrew paths
- Fish shell: Run
chsh -s $(which fish)to set as default - Neovim: Run
:checkhealthafter first launch - Private configs: Proprietary/private settings kept in separate files (not tracked)
- Legacy zsh: Kept for compatibility but fish is preferred
- Modular approach:
.zshrc.d/files work in both zsh and fish (via bass plugin)