This repository contains my personal configuration files and scripts for quickly setting up a new macOS machine.
- Prerequisites
- Quick Start
- What's Included
- Post-Install Manual Steps
- Updating & Uninstalling
- Structure
- License
- macOS 13 (Ventura) or later — tested on Apple Silicon
- Internet connection
- An Apple ID signed in (required for App Store / Xcode CLT)
- Nothing else — the installer handles
git(via Xcode CLT) andstow(via Homebrew) for you
⚠️ Always review remote scripts before piping them to your shell. Openinstall.shand read it before running the Quick Start command below.
⚠️ Review the script before running. Readinstall.shfirst — never pipe a remote script intobashblindly.
To set up your new Mac with all required packages and configurations, run:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/RocGod/dotfile/main/install.sh)"The install.sh script will:
- Back up existing configs to
~/.dotfiles_backup_<timestamp> - Install Xcode Command Line Tools and Homebrew
- Install Oh My Zsh + plugins (
zsh-autosuggestions,fast-syntax-highlighting) - Install all CLI, development, and window-management packages via Homebrew
- Clone this repo to
~/dotfileand symlink everything withstow - Create zsh cache directory for completion caching
If you already have the repo cloned and just installed, you can run the equivalent steps as recipes instead: just install (or individually: just backup, just xcode, just homebrew, just packages, just zsh-plugins, just dotfiles). Run just with no arguments to list all recipes.
- Shell & Prompt: Oh My Zsh with
zsh-autosuggestionsandfast-syntax-highlighting, Starship prompt - CLI Tools:
bat,eza,zoxide,fzf,fd,fastfetch - Development:
git,just(task runner),jenv,mvnvm,fnm(fast Node version manager),uv(Python package manager) - Window Management: AeroSpace (tiling window manager), JankyBorders
- Fonts: JetBrains Mono Nerd Font
- Performance optimizations: Completion caching, conditional plugin loading, 50K history entries
- Enhanced fzf: Nord color scheme,
fdintegration for faster file searching - Smart navigation: Auto-pushd with duplicate prevention
- Safety features: Interactive prompts for
rm/cp/mv,trash-cliintegration
A few things install.sh cannot automate — handle these after the script finishes:
- Grant accessibility permissions to AeroSpace and Raycast in System Settings → Privacy & Security → Accessibility.
- Start AeroSpace and borders:
open -a AeroSpace brew services start borders
- Neovim (if installed): open
nvimand run:Lazy syncor:checkhealthto install plugins. - Set your default shell to the Homebrew zsh if desired:
chsh -s /opt/homebrew/bin/zsh
- Verify installation: Run
source ~/.zshrcto load the new configuration.
Pull the latest configs and re-link:
cd ~/dotfile
git pull
stow --restow . # or: just restowPreview what stow would change before applying, without touching anything:
cd ~/dotfile
stow --simulate --verbose . # or: just stow-dryRemove all symlinks created by stow:
cd ~/dotfile
stow -D .Restore a backup created by install.sh:
ls ~/.dotfiles_backup_*
# then copy what you need back into placeRoot files
| Path | Purpose |
|---|---|
.zshrc |
Zsh shell config with performance optimizations, plugins, and aliases |
.stow-local-ignore |
Files stow should skip when symlinking |
install.sh |
Bootstrap script for a fresh Mac (simplified and optimized) |
justfile |
Same setup steps as install.sh, exposed as just recipes, plus maintenance recipes (update, restow, stow-dry) |
test_install.sh |
Unit tests for the functions in install.sh (mocks brew/git/stow/xcode-select) |
.config/ — grouped by purpose
| Directory | Purpose |
|---|---|
| Shell / prompt | |
starship.toml |
Starship prompt theme |
| Window management & desktop | |
aerospace/ |
AeroSpace tiling window manager config |
borders/ |
JankyBorders window-border config |
| Terminal / editor | |
ghostty/ |
Ghostty terminal config (theme, font, shell integration) |
nvim/ |
Neovim config (Lua, plugin lockfile) |
| Tools & integrations | |
linearmouse/ |
Mouse/trackpad scrolling and pointer settings |
raycast/ |
Raycast AI and extension settings |
containers/ |
Podman connection config |
.zshrc features:
- Completion caching for faster tab completion
- Conditional plugin loading (only loads plugins for installed tools)
- 50,000 history entries with smart duplicate handling
- Enhanced fzf with Nord color scheme and
fdintegration - Auto-pushd for better directory navigation
- Safety aliases with
trash-cliintegration - Fast Node.js version management with
fnm
install.sh features:
- Automatic backup of existing configs
- Simplified code with bash best practices
- Conditional installation of optional packages
- Automatic removal of conflicting plugins
- Creates necessary cache directories
- Covered by
test_install.sh— runbash test_install.shto verify changes before pushing
Personal use only. Feel free to fork and adapt for your own setup.