Personal configuration files for macOS (fish shell, Ghostty, and Zsh).
dotfiles/
├── fish/ # Fish shell configuration (full directory)
│ ├── config.fish # Main config
│ ├── fish_plugins # Fisher plugin list
│ ├── fish_variables # Universal vars (prompt colors, Tide settings)
│ ├── functions/ # Fish functions (includes Fisher + plugins)
│ ├── completions/ # Completions
│ └── conf.d/ # Auto-sourced configs
├── ghostty/ # Ghostty terminal configuration
│ └── config
└── zsh/ # Zsh configuration
├── .zshrc
└── .zshenv
Common:
Fish/Ghostty:
- Fish (config expects Homebrew fish at
/opt/homebrew/bin/fish) - Ghostty
- Nerd Font (required for Tide icons)
brew install --cask font-meslo-lg-nerd-font
Zsh (optional):
git clone <your-repo-url> ~/code/dotfiles
cd ~/code/dotfilesmkdir -p ~/.config/ghostty
ln -sfn "$(pwd)/ghostty/config" ~/.config/ghostty/configNotes:
- Ghostty config sets
command = /opt/homebrew/bin/fish. If fish is installed elsewhere, updateghostty/config. font-family = "MesloLGS NF"assumes the Nerd Font is installed.
Install fish and set it as your default shell:
brew install fish
chsh -s /opt/homebrew/bin/fishLink the full fish directory (recommended so plugins and completions are included):
mkdir -p ~/.config
mv ~/.config/fish ~/.config/fish.backup
ln -sfn "$(pwd)/fish" ~/.config/fishIf you prefer copying instead of symlinking:
mkdir -p ~/.config/fish
rsync -a fish/ ~/.config/fish/Sync fish plugins (uses fish/fish_plugins):
fish -lc 'fisher update'Important:
fish_variablesis machine-specific and includes Tide prompt settings and colors. If you already have a setup you want to keep, remove or replace~/.config/fish/fish_variablesbefore launching fish.- Secrets are loaded from
~/.config/fish/secrets.fish. Create that file for API keys or tokens.
Install Oh My Zsh and Powerlevel10k:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
brew install starshipInstall custom plugins:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestionsLink the Zsh configs:
mv ~/.zshrc ~/.zshrc.backup
mv ~/.zshenv ~/.zshenv.backup
ln -sfn "$(pwd)/zsh/.zshrc" ~/.zshrc
ln -sfn "$(pwd)/zsh/.zshenv" ~/.zshenvjorgebucaran/fisherjorgebucaran/nvm.fishilancosman/tidefranciscolourenco/donejorgebucaran/replay.fishjhillyerd/plugin-gitzuisong/pnpm-fish-completion
The fish config adds paths for:
- Homebrew tools (
/opt/homebrew/opt/*/bin) - pnpm
- Flutter
- PostgreSQL 16 and 17
- Bun
- Cargo (Rust)
- JetBrains Toolbox scripts
- Custom
~/.local/binand other user tools
pip->pip3cc->claudeccg->claude-glmccg45->claude-glm-4.5ccf->claude-glm-fast
kimi_claudeanddeepseekwrappers for Claude CLI with alternate endpoints
- Uses Starship if installed
- Tide prompt is installed and configured via
fish_variables
- Restart Ghostty (or any terminal) after linking configs.
- Start a new fish session:
exec fish - Run
fisher updateif you want to resync plugins.
Do not commit secrets. Store tokens in a separate file:
- Fish:
~/.config/fish/secrets.fish - Zsh:
~/.secrets.zsh(source it from.zshrcif needed)
Modify the config files to suit your needs. If you change prompt settings, update fish_variables or re-run tide configure.