This is my setup for my Macbook Pro (M4 Pro) for development purposes.
Previously used on:
- MacBook Air (2020, M1)
bootstrap.sh applies the repo-managed version of these configs:
fish/fisher/git/ssh/claude/opencode/ghostty/gnupg/starship/
RayCast/ is only an encrypted backup artifact. It is not restored by bootstrap.sh.
OpenCode is backed up as a curated subset of ~/.config/opencode:
opencode.jsonAGENTS.mddcp.jsoncprompts/
Local install artifacts such as node_modules/, package manager files, and other machine-specific state are intentionally excluded.
These steps must be followed to ensure smooth installation:
Head over to https://brew.sh and install the latest version of homebrew by copying the command from the given text box.
bootstrap.sh prompts for sudo, installs packages from packages/Brewfile, applies the managed config listed above, and sets fish as the login shell if needed.
Use this command to install the dotfiles setup:
./bootstrap.sh
Run this to sync the live machine back into the repo:
./update.sh
This builds a temp mirror of the managed live config, updates the Fisher manifest, and regenerates packages/Brewfile before applying the changes to the repo. If a managed live file or directory is missing, ./update.sh removes the corresponding repo snapshot on purpose. If snapshot or generation fails, the repo stays unchanged and the hidden repo-local .update.sh.* temp directory is cleaned up. If apply fails after changes start, ./update.sh tries to roll touched targets back; if rollback also fails, it reports that the repo may be partially updated and keeps that repo-local .update.sh.* artifacts path for inspection.
Run the regression tests with:
python3 -m unittest discover -s tests -p 'test_*.py' -v