Skip to main content

Initial Setup

1. Clone the repository

git clone https://github.com/anonymous-dev-org/rig.git
cd rig

2. Run init.sh

./init.sh
The script runs through each step interactively:
  1. Homebrew — Installs Homebrew (if missing) and all formulas/casks from the Brewfile.
  2. Stow packages — For each module (neovim, zsh, aerospace, kitty, git), removes any conflicting non-symlink files in ~ and runs stow --restow --no-folding.
  3. macOS defaults — Applies system preferences (Dock, Finder, keyboard, appearance).
  4. Swift picker apps — Compiles the Aerospace WorkspacePicker and NotificationPicker SwiftUI apps with optimizations.
Pass --yes to skip all confirmation prompts:
./init.sh --yes

Updating

./update.sh
This script:
  1. Pulls the latest changes from the remote.
  2. Re-stows all packages (stow is idempotent — safe to re-run).
  3. Cleans up stale files from previous versions.
  4. Recompiles all Swift picker apps.
Packages that aren’t stowed on the current machine are gracefully skipped.

How Stow Works

GNU Stow creates symlinks from a target directory (your home ~) into the repository. Each module directory mirrors ~/:
rig/zsh/.zshrc             --> symlinked to ~/.zshrc
rig/neovim/.config/nvim/   --> symlinked to ~/.config/nvim/
rig/kitty/.config/kitty/   --> symlinked to ~/.config/kitty/
The --no-folding flag ensures Stow creates individual file symlinks rather than symlinking entire directories. This prevents untracked files from leaking into the repo.

Stow commands reference

CommandWhat it does
stow --restow --no-folding -t ~ <pkg>Install/refresh a package
stow -D -t ~ <pkg>Unlink a package

Ignored files

The .stow-local-ignore file excludes .DS_Store, .git, .gitignore, and .stow-local-ignore from being symlinked.

Local Overrides

Machine-specific configuration that shouldn’t be tracked in git:
  • Zsh: Create ~/.zshrc.local — sourced at the end of .zshrc.
  • Claude Code: .claude/settings.local.json is globally gitignored.