Skip to main content

Overview

This guide will walk you through cloning the repository and running the automated setup script to configure your macOS development environment. The entire process takes about 5-15 minutes, depending on your internet connection and whether Xcode Command Line Tools are already installed.
The setup script is idempotent, meaning it’s safe to run multiple times. It will detect existing installations and skip steps that have already been completed.

Quick Setup

1

Clone the repository

Open Terminal and clone the config repository to ~/.config:
git clone https://github.com/mac9sb/config.git ~/.config
The script expects the repository to be located at ~/.config. If this directory already exists and isn’t a git repository, you’ll need to back it up first.
2

Navigate to the config directory

cd ~/.config
3

Run the setup script

Execute the setup script:
./setup.sh
The script will display timestamped log messages as it progresses through each step:
2026-03-01T10:30:15-0800 [INFO] Starting macOS setup
2026-03-01T10:30:15-0800 [INFO] Config repo: already present at /Users/mac/.config
2026-03-01T10:30:16-0800 [INFO] Xcode Command Line Tools: already installed
2026-03-01T10:30:16-0800 [INFO] Touch ID: already enabled (sudo_local)
2026-03-01T10:30:16-0800 [INFO] Homebrew: already installed
2026-03-01T10:30:16-0800 [INFO] Running: brew bundle
4

Complete Xcode Command Line Tools installation (if needed)

If Xcode Command Line Tools aren’t installed, a GUI dialog will appear:
The script will pause and exit after triggering the Xcode CLT installation. Complete the installation through the GUI dialog, then re-run ./setup.sh to continue.
After the installation completes, run the script again:
./setup.sh
5

Wait for Homebrew bundle installation

The longest step is installing packages via Homebrew. The script installs:
  • 6 command-line tools (formulae)
  • 6 applications (casks)
  • 11 Mac App Store apps
Mac App Store apps require you to be signed in to the App Store and may require purchase confirmation even for free apps.
6

Restart your terminal

Once the script completes with “Done ✅”, restart your terminal or source the new configuration:
source ~/.zshrc
You should see the Starship prompt appear with a modern, informative display.

What Just Happened?

The setup script performed these operations:

System Setup

  • Installed Xcode Command Line Tools
  • Enabled Touch ID for sudo
  • Installed Homebrew package manager

Configuration

  • Cloned dotfiles to ~/.config
  • Symlinked dotfiles to home directory
  • Applied Zsh, Git, and Vim configurations

Development Tools

  • Installed deno, gh, starship, mosh
  • Configured Starship shell prompt
  • Set up GitHub CLI

Applications

  • Installed Zed, Claude Code, Codex
  • Installed Mac App Store apps
  • Set up fonts and utilities

Verification

Verify your installation with these commands:
starship --version
You should see version information for each tool and symlinks pointing to ~/.config/ for your dotfiles.

Expected Output

A successful setup run looks like this:
2026-03-01T10:30:15-0800 [INFO] Starting macOS setup
2026-03-01T10:30:15-0800 [INFO] Config repo: already present at /Users/mac/.config
2026-03-01T10:30:16-0800 [INFO] Xcode Command Line Tools: already installed
2026-03-01T10:30:16-0800 [INFO] Enabling Touch ID for sudo (requires sudo)...
2026-03-01T10:30:18-0800 [INFO] Touch ID: enabled successfully
2026-03-01T10:30:18-0800 [INFO] Homebrew: already installed
2026-03-01T10:30:18-0800 [INFO] Running: brew bundle
Installing deno...
Installing fswatch...
Installing gh...
[...additional brew output...]
2026-03-01T10:35:42-0800 [INFO] Done ✅

Shell Configuration Applied

Your new .zshrc configuration includes:
.zshrc
export PATH="$HOME/.local/bin/:$PATH"
setopt auto_cd correct histignorealldups interactive_comments sharehistory
eval "$(/opt/homebrew/bin/brew shellenv)"
eval "$(starship init zsh)"
This provides:
  • Local bin directory in your PATH
  • Auto CD (type directory name to cd into it)
  • Spell correction for commands
  • Shared history across terminal sessions
  • Starship prompt integration

Testing Your Setup

Try these commands to test your new environment:
1

Test Git configuration

git config --get user.name
git config --get user.email
You’ll see the pre-configured user information. Update these with your own details:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
2

Test GitHub CLI

Authenticate with GitHub:
gh auth login
Then try listing your repositories:
gh repo list
3

Test Deno

Run a simple Deno program:
deno eval "console.log('Hello from Deno!')"
4

Open Zed editor

Launch the Zed editor:
zed .
The Zed configuration from ~/.config/zed/ will be automatically applied.

Common First-Run Issues

If the Starship prompt doesn’t appear after restarting your terminal:
  1. Verify Starship is installed:
    which starship
    
  2. Manually initialize Starship:
    eval "$(starship init zsh)"
    
  3. Check that .zshrc is properly symlinked:
    ls -la ~/.zshrc
    
Touch ID for sudo requires macOS Sonoma or later and may not work in all terminal emulators. To test:
sudo echo "Testing Touch ID"
If Touch ID prompt doesn’t appear, you may need to manually edit /etc/pam.d/sudo_local or use password authentication.
If Mac App Store apps fail to install:
  1. Ensure you’re signed in to the App Store
  2. Some apps require previous purchase or subscription
  3. Install apps manually if needed:
    mas search "App Name"
    mas install <app-id>
    
If brew bundle fails:
  1. Update Homebrew:
    brew update
    
  2. Try installing packages individually:
    brew install deno gh starship mosh fswatch mas
    
  3. Check for specific error messages and search Homebrew’s issue tracker

Next Steps

Now that your environment is set up:

Shell Configuration

Learn how to customize your shell and prompt settings

Editor Setup

Configure Vim and Zed for your workflow

Homebrew Packages

Explore all installed packages and applications

Troubleshooting

Get help with common issues and edge cases

Re-running the Setup

The setup script is designed to be re-run safely. It checks for existing installations and only performs necessary steps.
To update your configuration or re-apply settings:
cd ~/.config
git pull
./setup.sh
This will:
  • Pull the latest changes from the repository
  • Re-create symlinks for any new dotfiles
  • Update Homebrew packages via brew bundle
  • Skip already-completed steps like Xcode CLT installation

Build docs developers (and LLMs) love