My slow attempt to formalise all the tweaks I end up making to each machine I set up. Very much a work in progress.
- Casks: browsers, chat/email/news apps, media, developer tools (VS Code, Ghostty, Rancher, SourceTree, aws-vault), fonts (Nerd Fonts, Hasklig, Fira), utilities (1Password, Bartender, Rectangle, Raycast)
- Brews: unix tools (
bat,exa,zoxide,coreutils), dev/k8s tooling (mise,kubectl,k9s,helm,awscli,gcloud-cli), shell (fish,starship), git (hub,diff-so-fancy), network/monitoring (nmap,htop,btop), and AI tools (claude-code,codex,rtk,skills,mlx)
config.fish: iTerm/VS Code shell integration,miseactivation,zoxideinit, key bindings, emoji width fixconf.d/aliases.fish: aliases (lsβlsd,catβbat, etc.) and abbreviations for git, k8s, docker, pnpmconf.d/env.fish: sets$EDITORto vimconf.d/functions.fish: helper functions βmkcd,b64/b64d,ql,dotenv,cld(open Claude desktop on a folder)conf.d/path.fish: PATH setup for personal scripts, Homebrew, Go, pipx, cargofish_plugins: managed viafisherβ agnoster theme,bass, async prompt, fzf/zoxide, humanize-duration
- User identity + SSH-based commit signing
- Extensive aliases:
lg(graph log),rbm(rebase on main),com(checkout main),cf(fixup commit),sp(stash pop), etc. - Sensible defaults: autostash/autosquash rebases, fast-forward-only pull/merge,
zdiff3conflict style, prune on fetch - Global ignore patterns for macOS, Node, Python, Ruby, VS Code
- JetBrainsMono Nerd Font, Vercel theme, custom padding
- Fish shell integration, working-directory inheritance rules for splits/tabs
- Auto mode enabled,
sonnetmodel, medium effort level, custom statusline script - Permission allowlist: incident.io MCP tools, read-only
rtkgit/ls/grep commands PreToolUsehook routes all Bash commands throughrtk hook claude
- Syntax highlighting, line numbers, sane backspace behaviour
- Dark mode, sudo via Touch ID, dock auto-hide settings, hibernate mode 25
cd && git clone git@github.com:jamesrwhite/dotfiles.git .dotfilesThe above will clone it in $HOME/.dotfiles
make setupThis assumes the repo was cloned to $HOME/.dotfiles, if it wasn't you can pass
the location=/path/to/dotfiles argument.
TODO: look into automating these via https://macos-defaults.com/#π»-list-of-commands
- enable dark mode
- full hibernate on laptop close
- Reduce keyboard repeat key lag
- move doc to left
- hide applications holder in dock
- right click on mouse
- invert scroll on trackpad
- double tap to right click on trackpad
- turn dock hiding on
- minimise to dock using scale
- minimise windows into app window
- don't show recent apps in dock
- Setting Sync
- Add shell to
/etc/shells - link
.vimrc - Add
.config/starship.toml