My macOS setup: Ghostty + herdr, plus Karabiner-Elements and Claude Code settings.
iTerm2, vim, neovim and tmux are no longer used. Their old configs are still in git history.
| Path | Linked/copied to | Notes |
|---|---|---|
ghostty/config |
~/.config/ghostty/config (symlink) |
Dracula theme, MesloLGS NF 22, Option as Alt |
herdr/config.toml |
~/.config/herdr/config.toml (symlink) |
prefix alt+a, detach prefix+d |
karabiner/karabiner.json |
~/.config/karabiner/karabiner.json (symlink) |
swaps left Command/Option on two external keyboards (matched by vendor/product ID) |
zsh/ |
sourced from ~/.zshrc |
zim + powerlevel10k, aliases and functions |
claude/settings.json |
~/.claude/settings.json (copy, only if missing) |
model, plugins, marketplaces, TUI mode |
- macOS
- Homebrew
git,curl
# One line (clones to ~/.dotfiles)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/freddy5566/dotfiles/master/install.sh)"
# Or from a checkout
git clone https://github.com/freddy5566/dotfiles ~/developer/dotfiles
~/developer/dotfiles/install.shThe script installs whatever is missing, then links the configs (existing files are moved to *.bak):
- Ghostty:
brew install --cask ghostty - Font:
brew install --cask font-meslo-lg-nerd-font(the config usesMesloLGS NF) - herdr:
curl -fsSL https://herdr.dev/install.sh | sh(installs to~/.local/bin; make sure that is on yourPATH; update later withherdr update) - zsh: installs zim and appends
export DOTFILES=.../source .../zsh/.zshrcto~/.zshrc(the old one is saved as.zshrc.bak) - Karabiner-Elements:
brew install --cask karabiner-elements. On first launch, grant it Input Monitoring and the driver/system extension in System Settings → Privacy & Security, or the key swaps won't apply. - Claude Code settings, then
herdr integration install claudeifclaudeis installed
Claude Code itself is not installed by this script: see https://docs.claude.com/en/docs/claude-code/setup.
- Open Ghostty and run
herdr. Detach with Opt+a,d; runherdragain to reattach. - The herdr prefix is
alt+a, which needs Option to act as Alt. This is already set in the Ghostty config (macos-option-as-alt = true). Option-typed characters likeåno longer work. - Reload after editing configs: Ghostty with Cmd+Shift+, ; herdr with
herdr server reload-config. Validate herdr withherdr config check.
claude/settings.json holds only the portable parts. Machine-specific bits stay local:
- the herdr hook, added by
herdr integration install claude autoModerules andsettings.local.jsonpermissions- skills and plugin caches under
~/.claude
It is copied rather than symlinked because Claude Code and herdr edit the live file. To sync changes back, compare and copy by hand:
diff ~/.claude/settings.json claude/settings.json