Skip to content

Latest commit

 

History

History
214 lines (150 loc) · 5.22 KB

File metadata and controls

214 lines (150 loc) · 5.22 KB

Machine Setup

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].

Prerequisites

  • macOS (Apple Silicon assumed)
  • Logged into the Mac App Store
  • This repo cloned to ~/projects/lucasrowe/configurations

0. Gather Credentials (One-Time Prompts)

Before running anything, ask the user for:

  1. Git email address — will be set via git config --global user.email
  2. Git signing preference — SSH key signing, GPG, or none
  3. Which IDE(s) to install — e.g., VS Code, Cursor, Zed, WebStorm, or none (user is evaluating)
  4. 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'>"

1. Install Homebrew

/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)"

2. Install All Packages and Apps via Brewfile

brew bundle --file=~/projects/lucasrowe/configurations/Brewfile

This 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 zed

Optional 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-teams

3. Configure Git

git 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"

4. Set Up Shell (Zsh)

Install Oh My Zsh

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended

Install Zsh plugins

git 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-autosuggestions

Symlink .zshrc

ln -sf ~/projects/lucasrowe/configurations/.zshrc ~/.zshrc
source ~/.zshrc

5. Set Up Node.js via nvm

# nvm is installed via Brewfile
mkdir -p ~/.nvm
# .zshrc already exports NVM_DIR and loads nvm
source ~/.zshrc
nvm install --lts
nvm use --lts

6. Install Python (via pyenv)

# pyenv is installed via Brewfile
# .zshrc already initializes pyenv
source ~/.zshrc
pyenv install 3.12
pyenv global 3.12

7. Set Up Claude Code

npm install -g @anthropic-ai/claude-code

Verify:

claude --version

8. Configure Karabiner Elements

mkdir -p ~/.config/karabiner
ln -sf ~/projects/lucasrowe/configurations/karabiner.json ~/.config/karabiner/karabiner.json

This 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

9. Apply macOS System Preferences

chmod +x ~/projects/lucasrowe/configurations/macos-defaults.sh
~/projects/lucasrowe/configurations/macos-defaults.sh

This configures Finder, Dock, keyboard, trackpad, and other system settings. A restart is recommended after running this.


10. [MANUAL] Steps Requiring Human Action

These steps cannot be automated and require the user to do them manually:

  1. Sign into apps: 1Password, Arc/Chrome, Notion, and any optional apps you installed
  2. Set up SSH keys: Generate or restore from 1Password, add to GitHub
  3. Configure Rectangle/Raycast: Import settings or set up shortcuts
  4. Restore IDE settings: Sign into Settings Sync (VS Code) or equivalent
  5. Set default browser: System Settings → Desktop & Dock → Default web browser

Verification Checklist

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 authenticated

Run git config user.email to confirm your email is set and not committed to the repo.