Personal workstation bootstrap for macOS and Linux via Homebrew.
List available targets:
./setup.sh -hRun one or more setup targets from the repo root:
./setup.sh homebrew bashrc helix tmux prettierEnable work-only packages and apps:
./setup.sh -w homebrew bashrchomebrew: installs CLI tools and apps fromhomebrew/Brewfile.home, plushomebrew/Brewfile.workin work modebashrc: links~/.bashrc.userand~/.bash_aliases, and links~/.bashrc.workonly in work modeeza: installsezaif missing and links its confighelix: installs Helix if missing and linksconfig.tomlandlanguages.tomlghostty: installs Ghostty on macOS and links its configaerospace: macOS-only; installs AeroSpace and links~/.aerospace.tomltmux: links tmux config and installs TPMstarship: installs and links Starship configgh: installs GitHub CLI and links its non-secret configprettier: installs Prettier, required plugins, and links~/.prettierrc
./setup.sh -w ... enables workstation-only setup.
Without -w, homebrew/setup.sh skips everything from homebrew/Brewfile.work.
Work-only brew formulas:
asdfcolimadocker-credential-helpernxprotoc-gen-go-grpcprotoc-gen-goprotoc-gen-jssterntailscale
Work-only macOS casks:
1password-cli1passworddbeaver-communitymysql-shellpostmanslacktemurin
bashrc/.bashrc.work is also only linked in work mode. That file currently contains:
GOPRIVATEasdfshims onPATHPNPM_HOMEopcompletion
homebrew/Brewfile.homeis grouped by category and includes shell tools, file utilities, Git tooling, runtimes, developer tooling, language servers, and macOS desktop apps.homebrew/Brewfile.workis also grouped by category and is appended to~/Brewfileonly when-wis used.- Helix shell formatting is configured with
shfmtfor bothbashandzshinhelix/languages.toml. homebrew/Brewfile.homeincludesshellcheckandshfmtfor shell linting and formatting.
- Setup scripts are intended to be re-runnable.
- The repository is treated as read-only input. Setup scripts must only write outside the repo.
- Most configs are symlinked into
$HOME. setup.sh allruns every top-level tool directory except.gitandlib.bashrc/setup.shis a special case: it creates~/.bashrcif needed, then ensures it sources~/.bashrc.user.homebrew/setup.shwrites~/Brewfilefromhomebrew/Brewfile.homeand appendshomebrew/Brewfile.workin work mode.- If
~/Brewfilealready exists as a regular file with different contents,homebrew/setup.shoffers to back it up to~/Brewfile.bakbefore replacing it. - After
brew bundle,homebrew/setup.shinstalls or updates the global.NETtoolcsharp-lswhendotnetis available. gh/setup.shdoes not manage~/.config/gh/hosts.yml;gh auth loginshould own that file because it contains credentials.- macOS-only apps are gated in the Brewfile and skipped by setup scripts on Linux.
- Linux support means Homebrew on Linux, not native distro packages.