Repository navigation
One setup command for a new Mac - #97
Merged
Merged
Conversation
This was referenced Oct 29, 2026
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
link-karabiner and link-sublime failed on a second run, brew-install re-ran the installer, and the login shell block lived only in the README. Each target now checks its own end state first, set-shell owns the /etc/shells and chsh logic, and macos-disable-restore-apps-on-login lifts the immutable flag it set last time before writing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…Hub Pages nonration.al moves from the old splash page to GitHub Pages built from this repo. `make site` copies site/index.html and the root setup.sh into the artifact on every push to main, so the served script is always main's and nothing else in the repo is published. `make check-site`, part of preflight, fails when the built site lacks setup.sh or the documented curl line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nstall sequence Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
nonrational
approved these changes
Oct 31, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resolves #28
Problem
Bringing a new Mac to the state this repo describes meant running the README's shell block by hand, in order, and knowing which lines to skip on a re-run. Several make targets failed when run twice, and two were destructive on every run after the first.
Motivation
This replaces the Mac half of #74, which bundled a Mac setup script and an exe.dev box wrapper into one PR. The goal for this half: to provision a new Mac, run
curl -sS https://nonration.al/setup.sh | bashand be guided through the steps. Your end-to-end run of #74 on a fresh macOS 26 VM found four rough edges and one table row that macOS 26 refuses; this PR fixes all of them.Proposed Solution
setup.shat the repo root, one file. Piped from curl it clones into~/.dotfilesand execs the clone as a first run; from a checkout it walks the ordered steps, each a guard plus an existing make target, skipping what already holds. Three numbered checkpoints halt for a human: Command Line Tools, Full Disk Access, the reboot. Exit codes:0converged,1checkpoint,2a step failed (it printsfailed: <name>).--dry-runends withsetup: dry run (<os>), N would run..git/keeps that true across a first run that failed partway, and is removed once the Dock reset succeeds.set-shellowns the/etc/shellsandchshlogic.git submodule status, so the staleetc/tomorrow-themeentry no longer re-runs init; a reboot that fails outside a GUI session becomes checkpoint 3; theABShowDebugMenurow is dropped frommacos-defaults..github/workflows/pages.ymlrunsmake siteon every push to main, copyingsite/index.html(a plain "hi! run this" page) and the rootsetup.shinto the artifact, so the served script is always main's and nothing else in the repo is published.make check-site, now part ofpreflight, fails when the built site lackssetup.shor the command.Design:
docs/superpowers/specs/2026-09-25-setup-script-design.md(amended for the split). Plan:docs/superpowers/plans/2026-10-29-setup-script-split.md. The exe.dev wrapper ships separately in #98.Feedback
pagesworkflow deploys. (3) Merge Retire the nonration.al splash page; repurpose as a staging ground nonrational.github.io#23, which wipes that repo and drops itsCNAME. (4) Set this repo's Pages custom domain tononration.al. The site is down between (3) and (4), a few minutes. Thencurl -s https://nonration.al/setup.sh | cmp - setup.shshould exit 0. The keybase proof in the old site's.well-known/is retired on purpose.step."$run" || exit 2suspends errexit inside the run function, so every multi-command run chains with&&(apply_macosis the one that matters). Read that pair.link-sublimenow refuses to delete a real directory and tells you to move it aside, carried over from One setup command for a Mac, and one for an exe box #74.