@psrth's opinionated dotfiles / machine setup for macOS.
this repository began as more of a personal essay for vim over emacs, but over the years has evolved into a single source-of-truth for how i like to manage my macOS machines. includes:
- terminal config: minimal, performant and easy-to-use
- brewfile: installation for apps that i love to use daily
- symlinks + syncs: framework to keep data backed up in the cloud
- skills: tooling for my AI agents
- shell: zsh with custom configuration
- prompt: starship
- terminal: cmux and ghostty
- development tools: git, go, python (uv), node (nvm), bun, docker, etc.
- ai: claude code, codex, opencode
- apps: zed, brave, raycast, obsidian, figma, etc — all via homebrew
the agent skills in skills/ can be installed on their own with skills:
npx skills add psrth/dotfiles(on my machines, setup.sh symlinks them into ~/.claude/skills instead — rerun bin/link-skills after adding one.)
- sign into the app store first (for mas apps)
- then, in the root directory, run:
git clone https://github.com/psrth/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./setup.shthe setup script will:
- install homebrew
- install everything in the
Brewfile— cli tools, apps (casks), app store apps (mas), uv tools, go packages - create symlinks for all dotfiles and agent skills
- restore the last backup of claude code + codex sessions from icloud (fresh machines only)
- set up cmux hooks for codex, and a daily 6am backup of agent sessions to icloud
- set google drive to start at login
- apply macos preferences (
macos.sh) - set zsh as the default shell
then, by hand:
- google drive: open the app, sign into your personal account, then settings → my drive → mirror files → set the folder to
~/Desktop/psrth - copper (shadcn): not available through homebrew or the app store — install from its website
macos.sh (run by setup.sh, safe to re-run) sets only what differs from the macos defaults:
- dock: auto-hide, 51px icons, no recent apps, minimize into app icon, don't reorder spaces
- hot corners: top-left + bottom-right show desktop, top-right notification center, bottom-left display sleep
- finder: list view, new windows open the desktop, drives shown on the desktop
- trackpad: fast tracking, physical click (no tap-to-click), two-finger right click
- desktop: clicking the wallpaper doesn't reveal the desktop, no tiled window margins
dev: repositories synced to githubicloud/obsidian: syncs vault from iclouddesktop: syncs from google drivemedia: photos app synced via icloudicloud/agents: claude code + codex sessions, backed up daily (one-way, viabin/agents-backup)
- this is an extremely opinionated setup designed just for me, and will most likely fight you if you don't follow my workflows.
- if you only want the terminal setup, you can just copy the
ghostty_config,starship.toml, and snippets from the.zshrcfile. - the setup script is a destructive action meant only for fresh machines — it will overwrite your existing dotfiles. make sure to backup before running the script.
- that being said — this setup is a breeze, takes 5 mins, will never use more than a couple gigs of storage, and will never slow down your machine. if you're brave enough, go for it.
