Note: this is a fork of mathiasbyrnes/dotfiles. Check out the original for the latest and greatest.
Warning: If you want to give these dotfiles a try, you should first fork this repository, review the code, and remove things you don’t want or need. Don’t blindly use my settings unless you know what that entails. Use at your own risk!
- Clone:
git clone https://github.com/DSchau/dotfiles.git ./init/init.sh: creates~/Projects/{Personal,Work,Scripts}, copies scripts and Ghostty config, creates an SSH key and~/.ssh/config, and installs oh-my-zsh, nvm and bun./bootstrap.sh: copies the dotfiles (.zshrc,.bash_profile,.aliases, …) into~, copies Claude Code commands to~/.claude/commands, sets up pi and syncs Zed./brew.sh: installs Homebrew, CLI tools and apps (casks)./init/mas.sh: installs the Mac App Store apps listed ininit/mas_apps.txt(sign in to the App Store first)./.macos: sets macOS defaults- Optional:
./git.shclones the repos ingit_repos.txtinto~/Projects/{Personal,Work/<Org>}
./init/doctor.sh lists missing brew casks / App Store apps and checks global dependencies.
To update, from this repo: source bootstrap.sh (use set -- -f; source bootstrap.sh to skip the prompt).
bootstrap.sh installs pi if it's missing (to ~/.pi/agent, added to $PATH in .bash_profile). It then merges pi/settings.json into ~/.pi/agent/settings.json and installs the packages listed there (e.g. pi-open-tui). The repo's packages list replaces your local one.
pi-memory gives pi memory that carries across sessions. It's stored as markdown in ~/.pi/agent/memory/, which is not committed because it's personal.
-
pi/AGENTS.md→~/.pi/agent/AGENTS.md: tells the agent to save preferences, decisions, lessons and deferred work without being asked to "remember" -
pi/prompts/memory-promote.md→/memory-promote [days]: moves durable facts from recent daily logs intoMEMORY.mdand prunes stale entries. Run it about once a week -
bootstrap.shinstallsqmdglobally somemory_searchworks (keyword search immediately; semantic search after the first embed downloads its model) -
.exportssetsPI_CACHE_RETENTION=long, sends exit summaries to Haiku instead of Opus (with a 30s timeout instead of 10s), and also writes summaries on/new,/resume,/forkand/reload -
pi/patches/pi-memory@0.4.2.patchis a local patch, applied bypi/patch-packages.sh(whichbootstrap.shruns). It does two things:- Exit summaries become short index entries (Topic/Outcome/Files/Open) instead of long Decisions/Lessons write-ups
- The summary is written by a detached background process, so Ctrl+D and
/quitexit immediately. SetPI_MEMORY_EXIT_SUMMARY_BACKGROUND=0to go back to waiting. Worker errors go to$TMPDIR/pi-memory-exit-summary.log
pi updatereinstalls packages without the patch, so run~/dotfiles/pi/patch-packages.shafterwards. pi-memory is pinned to 0.4.2 inpi/settings.jsonso the patch keeps applying. To upgrade, bump the pin, rebase the patch, and rename the patch file to match the new version -
showCacheMissNoticesinpi/settings.jsonshows prompt-cache misses, which are where tokens get wasted
The default provider is OpenRouter. The API key is not committed. Create one at openrouter.ai/keys, then run /login in pi. pi saves it to ~/.pi/agent/auth.json, outside the repo. pi also reads an OPENROUTER_API_KEY environment variable if one is set.
init/Zed is the source of truth. bootstrap.sh overwrites ~/.config/zed/settings.json and keymap.json. Extensions are installed by Zed itself from auto_install_extensions. It also links the zed CLI into ~/.local/bin.
- Dracula Pro is paid and not committed:
bootstrap.shcopies the Zed theme from iCloud if it's there - The editor font (Fira Code) is installed by
brew.sh
Copies photos and videos from the camera's SD card (/Volumes/Videos) to the NAS through the HTPC, then starts the HTPC's photo-backup (R2 + Google Photos). The full flow is in htpc-knowledge CAMERA.md.
media(scripts/media.sh): runsvideos.shandpictures.sh, then startsphoto-backupon the HTPC only if both succeeded. Logs to~/logs/media.log. It refuses to run off the home network (ALLOW_REMOTE=1overrides)media status: the lastphoto-backuprun. Files stay on the card; reformat it in the camera once all four jobs end withexit 0(or setREMOVE_FROM_CARD=1to delete them from the card as soon as they're on the NAS)pictures.sh: copies the originals first, then converts only the files rsync sent: oneexiftoolcall for the years,sipsin paralleldrop.sh:~/Movies/Drop/*.mov→~/Movies/Home/*.mp4, remuxed when possible, otherwise re-encoded with VideoToolbox HEVC
~/.path: sourced first; use it to extend$PATH, e.g.export PATH="/usr/local/bin:$PATH"~/.extra: extra settings (git name/email); tracked and copied bybootstrap.sh
Suggestions/improvements welcome!
If specific to this repository, feel free to use these issues.
Original author
| Mathias Bynens |
- @ptb and his macOS Setup repository
- Ben Alman and his dotfiles repository
- Cătălin Mariș and his dotfiles repository
- Gianni Chiappetta for sharing his amazing collection of dotfiles
- Jan Moesen and his ancient
.bash_profile+ shiny tilde repository - Lauri ‘Lri’ Ranta for sharing loads of hidden preferences
- Matijs Brinkhuis and his dotfiles repository
- Nicolas Gallagher and his dotfiles repository
- Sindre Sorhus
- Tom Ryder and his dotfiles repository
- Kevin Suttle and his dotfiles repository and macOS-Defaults project, which aims to provide better documentation for
~/.macos - Haralan Dobrev
- Anyone who contributed a patch or made a helpful suggestion
