Contents

πŸ–₯️ Mac Auto Setup

The Problem

Setting up a new Mac for development is tedious. Installing tools manually, configuring preferences, symlinking dotfilesβ€”it takes hours of repetitive work. And when something breaks or you get a new machine, you start from scratch.

The challenge: automate the entire macOS setup process so a fresh machine becomes a fully configured development environment in one command.

The Solution

I built a two-tier bootstrap system that configures a keyboard-driven macOS workflow. It installs a tiling window manager, modern shell environment, Neovim as a full IDE, and manages all dotfiles through GNU Stow. Everything is declarative and version-controlled.

Key Features

  • One-command setup β€” Fresh Mac to productive environment in minutes
  • Tiling window manager β€” Aerospace with i3-inspired keyboard navigation
  • Modern shell β€” Zsh + Oh-My-Zsh + Powerlevel10k for enhanced terminal UX
  • Neovim IDE β€” LazyVim configuration with LSP, completions, and fuzzy finding
  • Declarative dependencies β€” Brewfile manages all packages and applications
  • Dotfile management β€” GNU Stow for symlink-based configuration deployment
  • SuperClaude Framework β€” 30+ slash commands for Claude Code enhancement

Technical Architecture

Bootstrap Script β†’ Homebrew β†’ Brewfile β†’ Packages/Apps
                      ↓
                 GNU Stow β†’ Dotfiles β†’ ~/.config/*
                      ↓
               Aerospace + Ghostty + Neovim β†’ Keyboard-driven workflow

Technologies Used

  • Zsh + Oh-My-Zsh β€” Shell framework with plugins and themes
  • Powerlevel10k β€” Fast, customizable prompt
  • Aerospace β€” Tiling window manager for macOS
  • Neovim + LazyVim β€” Modern Vim distribution with IDE features
  • GNU Stow β€” Symlink farm manager for dotfiles
  • Homebrew β€” Package manager with Brewfile declarative installs
  • Ghostty / Warp β€” Modern terminal emulators

Implementation Details

Two-Tier Bootstrap

The system handles two scenarios:

  1. Fresh macOS β€” No Git, no Xcode CLI tools. A curl-able bootstrap script installs prerequisites then hands off to the main setup.

  2. Existing systems β€” Clone the repo and run the bootstrap directly. Idempotentβ€”safe to re-run.

Dotfile Structure

dotfiles/
β”œβ”€β”€ aerospace/    β†’ ~/.config/aerospace/
β”œβ”€β”€ nvim/         β†’ ~/.config/nvim/
β”œβ”€β”€ zsh/          β†’ ~/.zshrc, ~/.zprofile
β”œβ”€β”€ git/          β†’ ~/.gitconfig
β”œβ”€β”€ ghostty/      β†’ ~/.config/ghostty/
└── claude/       β†’ ~/.claude/

GNU Stow creates symlinks from the repo to home directory locations. Change a config in the repo, it’s live everywhere.

Keyboard-Driven Philosophy

The entire workflow optimizes for keyboard navigation:

  • Aerospace β€” Window tiling and workspace management without touching the mouse
  • Neovim β€” Modal editing with full IDE capabilities
  • fzf β€” Fuzzy finding for files, history, and commands
  • Zsh keybindings β€” Vi mode in the shell

Challenges & Learnings

Challenge: Fresh Mac Bootstrap

New Macs have no Git, no package manager, no developer tools. Solution: A minimal bootstrap script that only uses built-in macOS commands (curl, bash) to install Xcode CLI tools and Homebrew first.

Challenge: Dotfile Portability

Hardcoding paths breaks across machines. Solution: GNU Stow’s relative symlinks work regardless of username or directory structure.

Challenge: Idempotency

Setup scripts that fail halfway are painful to debug. Solution: Every step checks if it’s already done before executing. Re-running the script is always safe.

Results

The system sets up a complete development environment in under 15 minutes. Every configuration is version-controlled, so rolling back changes or onboarding new machines is trivial.

Setup time: ~15 minutes (mostly download time) Packages managed: 50+ CLI tools and applications Dotfiles tracked: 10+ configurations Re-run safe: Yes, fully idempotent

  • GitHub Repository: BWO-MacAutoSetup
  • Documentation: Setup guide, customization options, troubleshooting

What This Project Demonstrates

This project shows automation mindset, infrastructure as code, and developer experience optimizationβ€”skills that translate directly to data engineering:

  • Treating configuration as code
  • Building idempotent, reproducible systems
  • Declarative dependency management
  • Automation over manual processes
  • Documentation for future maintainability

The same principles apply to data pipelines: define the desired state, automate the path to get there, make it repeatable.


Built with shell scripting, GNU Stow, and a preference for keyboard-driven workflows. Runs on Apple Silicon.