Flexible macOS workstation bootstrap with an interactive wizard front-end and Ansible backend.
- macOS
curl- internet access to
github.comandraw.githubusercontent.com
If curl is not installed:
# Install Homebrew (if needed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install curl
brew install curlcurl -fsSL https://raw.githubusercontent.com/etgonehomie/dev-setup/main/main.sh | bash -s -- --wizardcurl -fsSL https://raw.githubusercontent.com/etgonehomie/dev-setup/main/main.sh | bash -s -- --profile ~/.config/dev-setup/profile.yml --yescurl -fsSL https://raw.githubusercontent.com/etgonehomie/dev-setup/main/main.sh | bash -s -- --wizard --dry-runcurl -fsSL https://raw.githubusercontent.com/etgonehomie/dev-setup/v1.0.0/main.sh | bash -s -- --wizardcurl -fsSL https://raw.githubusercontent.com/etgonehomie/dev-setup/<commit-sha>/main.sh | bash -s -- --wizardRun locally:
bash main.sh [flags]Key flags:
--wizard: category-first interactive flow--profile <path>: load saved profile file--yes: non-interactive mode--groups <csv>: select categories directly--packages <csv>: select specific package IDs--upgrade: runbrew upgradebefore provisioning--resume: resume using checkpoint state--raycast-config: apply Raycast config import (requiresRAYCAST_PASSWORD)--cleanup: remove ansible-pull clone cache at end--dry-run: preview only--help: show all options
Examples:
# Interactive wizard
bash main.sh --wizard
# Non-interactive from profile
bash main.sh --profile ~/.config/dev-setup/profile.yml --yesExport one-time macOS settings from your current Mac:
bash mac-settings/export-once.shFlags:
--output-dir <path>: export destination (default~/.config/dev-setup/mac-settings-export)--force: overwrite an existing export directory--help: show all options
Examples:
# Standard one-time export
bash mac-settings/export-once.sh
# Re-export and overwrite prior output
bash mac-settings/export-once.sh --forceApply exported settings directly. This is the only supported import path:
bash mac-settings/import.shFlags:
--source <path>: path to exported settings script (default~/.config/dev-setup/mac-settings-export/exported-settings.sh)--dry-run: print what would run without applying settings--help: show all options
Examples:
# Import from default location
bash mac-settings/import.sh
# Import from custom location
bash mac-settings/import.sh --source ~/Downloads/exported-settings.sh