Skip to content

feat: add chronological mac setup wizard - #6

Merged
sapoepsilon merged 1 commit into
mainfrom
feat/setup-wizard
Jun 30, 2026
Merged

sapoepsilon merged 1 commit into
mainfrom
feat/setup-wizard

Conversation

@sapoepsilon

Copy link
Copy Markdown
Owner

What

setup.sh — a gum-driven linear setup wizard for provisioning a fresh mac. Walks each step top-to-bottom; at each step you pick what to install, then it moves on and exits.

Order:

ensure_clt → ensure_brew → ensure_gum → intro (consent + Minimum/Verbose)
▶ Shell (Oh My Zsh + p10k + plugins)
▶ Apps (formulae / terminals / casks — checklists)
▶ Config repos (clone each, asks for blank URLs and saves them back)
▶ Private repo (clone/pull)
▶ macOS defaults
▶ Keyboard shortcuts (capture/restore symbolichotkeys)

How it works

  • setup.conf is the manifest (apps, config-repo URLs, private repo, macOS defaults). Populate once, commit to your private repo, run on a new mac. Generated from setup.conf.example and gitignored.
  • Idempotent: brew installs skip what's already present; clones check first.
  • Fresh-mac safe: no sudo/root in the script; editor resolution falls back through $EDITOR → nvim → vim → nano → vi; Homebrew noise silenced via HOMEBREW_NO_*.
  • Consent screen before anything runs; per-step confirms.

Test

  • ./setup.sh --selftest covers the config save-back logic.
  • bash -n setup.sh passes.
  • Full TUI needs an interactive terminal.

Notes

  • Supersedes installOhMyZSH.sh on macOS (left in place for its Linux branches).

Add setup.sh, a gum-driven linear setup wizard that walks each step in
order and lets the user pick what to install at each one: Xcode CLT,
Homebrew, Oh My Zsh + Powerlevel10k, apps (formulae/terminals/casks),
config repos, private repo, macOS defaults, and keyboard shortcuts.

Driven by setup.conf (populated from setup.conf.example, gitignored),
so it ports to a new mac with just configs and apps, no dotfiles.
@sapoepsilon
sapoepsilon merged commit 401658f into main Jun 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant