Step-by-step diagram of what bootstrap.sh actually does, with the DF_DO_* skip flag for each phase. Steps run in order — failures in any phase abort the rest (except VS Code/Cursor extension installs and a few other clearly-flagged log-warn-but-continue cases).
Sanity-check that $ARCH_BIN, $CARGO_HOME, $RUSTUP_HOME, $NVM_DIR parents exist and aren’t broken symlinks. Aborts if anything’s wrong.
Yes
3
install/zsh.sh
Clone or update oh-my-zsh + plugins.
Yes
4
install/homebrew.sh (macOS) or install/linux-packages.sh
Install Homebrew, run brew bundle install --file=Brewfile, optionally brew upgrade and brew upgrade --cask --greedy.
Yes
4.5
install/quarto.sh
Verify the macOS cask or install a checksum-verified rootless Linux release under $LOCAL_PLAT.
Yes
5
install/macos-services.sh
Register Colima as a launchd service; symlink Docker plugins. macOS only.
Yes
5.5
install/macos-settings.sh
defaults write for Dock, Finder, keyboard, trackpad, Safari, iTerm2, screen lock. Sudo-gated extras (skipped if sudo unavailable): power management, Touch ID for sudo (/etc/pam.d/sudo_local, with pam_reattach so it works in tmux), and a global 60-min sudo ticket (/etc/sudoers.d/df-ticket).
Yes
5.6
install/macos-quick-actions.sh
Deploy *.workflow bundles to ~/Library/Services/; flush pbs.
Yes
6
various
See language-runtime table below. Each script is independent; failures cascade only via die (not log_warn).
Full idempotent setup. DF_DO_SCRATCH=1 (run scratch step).
update
Same steps, but: git pull --ff-only in step 0.5, DF_DO_SCRATCH=0 (assume scratch is already set up), tools self-update where they support it.
upgrade
Same as update, plus Homebrew, rolling Rust channels/Cargo tools, Go @latest tools, Node 24/npm 12 globals, uv tools, Julia release, TeX, and editor refreshes. It ends with audit-versions.sh --strict.
The canonical source is bootstrap.sh itself — header comment block has the full flag table, then numbered ### N. ### step markers. To trace what a single step actually does, jump to install/<step>.sh. Each install script sources _lib.sh for path variables and logging helpers.