Personal dotfiles for macOS. Shell functions, aliases, git config, terminal setup, and helper scripts.
bat/ bat config + everforest theme
bin/ custom scripts (tmux-sessionizer, git helpers, etc.)
cmd/ Go CLI commands (sp2md)
git/ git config overrides (hashi/.gitconfig)
internal/ Go library code
system/ shell aliases (.alias) and functions (.function)
wallpaper/ desktop wallpapers
everforest_colors terminal color palette reference
.config/
claude/ Claude Code config (CLAUDE.md, settings.json, skills, agents)
opencode/ OpenCode config (opencode.json, generated AGENTS.md, translated agents)
ghostty/ Ghostty terminal config
k9s/ Kubernetes TUI config
mise/ mise runtime/tool version manager
ranger/ ranger file manager
tmux/ tmux config
- [] Download Xcode from the Mac App Store.
- [] Install Homebrew.
- [] Install Homebrew and Homebrew Bundle.
- []
brew bundlein stall brew list from Brewfile - [] Generate new SSH Key and add it to SSH Agent
- [] Add it to GitHub
- [] Install oh-my-zsh:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
WARNING: Before installing, verify you're ok with the files that will be overwritten, or save a backup!
git clone git@github.com:jmurret/dotfiles.git ~/dotfiles
cd ~/dotfiles && ./install.shThe installer detects macOS vs Linux and sets up Claude Code config, OpenCode config, git identity, shell config, etc. It's idempotent — safe to re-run.
For local work sessions, system/.work_env can be used. It's git-ignored but acts the same as system/.env. Similar analogies exist for system/.alias and system/.function
For Claude Code online sandboxes, see Sandbox setup.
The installer manages subtle config, frontmatter, and other differences between these files by preferring a symlink to the Claude version in this repo, but actively translating when a clone isn't sufficient or compatible. For example, the OpenCode configured agents differ from Claude Code, and assume sourcing from GitHub Copilot (what I use at work).
In the Claude Environments UI, set:
- Environment variables:
CONTEXT7_KEY, plus any secrets fromsystem/.private_env
Use tmux-agent-worktree for new delegated agent worktrees; harness selection comes
from AGENT_HARNESS instead of a Claude-specific launcher name.
- Shell: zsh + oh-my-zsh
- Terminal: Ghostty + tmux
- Editor: neovim
- Go: go, golangci-lint, staticcheck
- Utilities: bat, eza, fzf, ranger, ripgrep, fd, delta
- Infra: k9s, mise, gh