This file is designed to be read and executed by an AI assistant. When asked to "set up my computer," follow these instructions sequentially. Each section is a discrete step. Run commands unless marked
[MANUAL].
- macOS (Apple Silicon assumed)
- Logged into the Mac App Store
- This repo cloned to
~/projects/lucasrowe/configurations
Before running anything, ask the user for:
- Git email address — will be set via
git config --global user.email - Git signing preference — SSH key signing, GPG, or none
- Which IDE(s) to install — e.g., VS Code, Cursor, Zed, WebStorm, or none (user is evaluating)
- Optional apps — Slack, Figma, Linear, Microsoft Teams
Store answers in environment variables for the duration of setup:
export GIT_USER_EMAIL="<provided by user>"
export INSTALL_IDE="<comma-separated list or 'none'>"/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"After install, ensure brew is on PATH:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"brew bundle --file=~/projects/lucasrowe/configurations/BrewfileThis installs CLI tools, fonts, and GUI apps. See Brewfile for the full manifest.
IDE installation: Based on the user's IDE preference from Step 0, also run:
# Examples — only install what the user chose:
brew install --cask visual-studio-code
brew install --cask cursor
brew install --cask zedOptional apps: Based on the user's choices from Step 0, install any selected:
brew install --cask slack
brew install --cask figma
brew install --cask linear-linear
brew install --cask microsoft-teamsgit config --global user.name "Lucas Rowe"
git config --global user.email "$GIT_USER_EMAIL"Then symlink the rest of the git config (aliases, LFS, etc.):
# Backup existing config values we just set
GIT_NAME=$(git config --global user.name)
GIT_EMAIL=$(git config --global user.email)
# Link the gitconfig from this repo
ln -sf ~/projects/lucasrowe/configurations/.gitconfig ~/.gitconfig
# Re-apply identity (since the symlinked file doesn't include them)
git config --global user.name "$GIT_NAME"
git config --global user.email "$GIT_EMAIL"sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattendedgit clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestionsln -sf ~/projects/lucasrowe/configurations/.zshrc ~/.zshrc
source ~/.zshrc# nvm is installed via Brewfile
mkdir -p ~/.nvm
# .zshrc already exports NVM_DIR and loads nvm
source ~/.zshrc
nvm install --lts
nvm use --lts# pyenv is installed via Brewfile
# .zshrc already initializes pyenv
source ~/.zshrc
pyenv install 3.12
pyenv global 3.12npm install -g @anthropic-ai/claude-codeVerify:
claude --versionmkdir -p ~/.config/karabiner
ln -sf ~/projects/lucasrowe/configurations/karabiner.json ~/.config/karabiner/karabiner.jsonThis sets up:
- Caps Lock → Control (simple modification)
- Right Option → Hyper Key (Cmd+Ctrl+Opt+Shift) for app-level shortcuts
- Emacs-style cursor movement: Ctrl+P/N for up/down, Opt+F/B for word navigation
- Emacs-style selection: Ctrl+Shift+P/N, Opt+Shift+F/B
- Opt+D for forward-delete word
chmod +x ~/projects/lucasrowe/configurations/macos-defaults.sh
~/projects/lucasrowe/configurations/macos-defaults.shThis configures Finder, Dock, keyboard, trackpad, and other system settings. A restart is recommended after running this.
These steps cannot be automated and require the user to do them manually:
- Sign into apps: 1Password, Arc/Chrome, Notion, and any optional apps you installed
- Set up SSH keys: Generate or restore from 1Password, add to GitHub
- Configure Rectangle/Raycast: Import settings or set up shortcuts
- Restore IDE settings: Sign into Settings Sync (VS Code) or equivalent
- Set default browser: System Settings → Desktop & Dock → Default web browser
After setup, verify these work:
brew --version # Homebrew installed
git --version # Git available
node --version # Node.js via nvm
python3 --version # Python via pyenv
claude --version # Claude Code CLI
gh auth status # GitHub CLI authenticatedRun git config user.email to confirm your email is set and not committed to the repo.