Personally helpful setup scripts and other information for new systems.
A comprehensive, modular setup script for configuring new macOS development machines. Get from unboxing to coding in under an hour with automated installation of tools, applications, and security configurations.
# Download the repository
git clone https://github.com/ryanspoone/new-computer-who-dis.git
cd new-computer-who-dis
# Review the scripts
cat macos-setup.sh
ls -la scripts/
# Run the setup
chmod +x macos-setup.sh
./macos-setup.sh
Security Warning: Always review scripts before executing them!
# Download and run
curl -fsSL https://raw.githubusercontent.com/ryanspoone/new-computer-who-dis/main/macos-setup.sh -o macos-setup.sh
chmod +x macos-setup.sh
./macos-setup.sh
# Clone repository
git clone https://github.com/ryanspoone/new-computer-who-dis.git
cd new-computer-who-dis
# Create configuration file
cp .setup-config.example .setup-config
# Edit .setup-config with your preferences
# Run with configuration
./macos-setup.sh --config .setup-config
Browsers:
Development:
Productivity:
Security:
Fonts:
Extensions:
Settings:
.
├── macos-setup.sh # Main orchestration script
├── macos-cleanup.sh # Uninstall/cleanup script
├── Brewfile # Homebrew package definitions
├── .setup-config.example # Configuration template
├── scripts/
│ ├── utils.sh # Shared utility functions
│ ├── 01-system-preferences.sh
│ ├── 02-package-managers.sh
│ ├── 03-development-tools.sh
│ ├── 04-shell-setup.sh
│ ├── 05-security.sh
│ └── 06-vscode.sh
├── dotfiles/
│ ├── .gitconfig # Git configuration template
│ ├── .gitignore_global # Global gitignore
│ └── .editorconfig # Editor configuration
├── .devcontainer/
│ ├── devcontainer.json # VS Code dev container config
│ └── README.md
└── README.md
Run the main script and respond to prompts:
./macos-setup.sh
Create a configuration file to automate responses:
cp .setup-config.example .setup-config
# Edit .setup-config with your preferences
./macos-setup.sh --config .setup-config
Execute specific setup modules:
# Just install packages
./scripts/02-package-managers.sh
# Just configure shell
./scripts/04-shell-setup.sh
# Just security hardening
./scripts/05-security.sh
./macos-setup.sh --help
Edit Brewfile to add/remove packages:
# Add a new CLI tool
brew "neofetch"
# Add a new application
cask "figma"
# Add a font
cask "font-cascadia-code"
Then install:
brew bundle install
Create a new script in scripts/:
#!/bin/bash
set -euo pipefail
source "$(dirname "$0")/utils.sh"
section "My Custom Setup"
log "Installing custom tools..."
# Your code here
Add it to the SETUP_SCRIPTS array in macos-setup.sh.
Templates are in dotfiles/. Copy and customize:
cp dotfiles/.gitconfig ~/.gitconfig
# Edit with your information
All output is logged to ~/.macos-setup.log:
tail -f ~/.macos-setup.log
Homebrew not in PATH
# For Apple Silicon
eval "$(/opt/homebrew/bin/brew shellenv)"
# For Intel
eval "$(/usr/local/bin/brew shellenv)"
VS Code ‘code’ command not found
Permission denied
chmod +x macos-setup.sh
chmod +x scripts/*.sh
Script fails partway through
~/.macos-setup.log for errorsscripts/ directoryTo remove everything installed by this script:
chmod +x macos-cleanup.sh
./macos-cleanup.sh
Warning: This will remove applications and configurations!
This repository includes a dev container configuration:
See .devcontainer/README.md for details.
Q: Is this safe to run? A: Yes, but always review scripts before running. Everything is logged and changes can be reverted.
Q: Can I run this on an existing system? A: Yes! Scripts are idempotent and won’t break existing configurations.
Q: What if I don’t want everything? A: Use interactive mode and skip unwanted sections, or run individual scripts.
Q: How do I update installed packages?
A: Run brew update && brew upgrade && brew cleanup
Q: Can I customize the packages?
A: Yes! Edit Brewfile and run brew bundle install
Q: Does this work on Intel and Apple Silicon Macs? A: Yes! The script detects architecture and configures appropriately.
Contributions welcome! Please:
MIT License - see LICENSE for details.
Created by Ryan Spoone
Inspired by various dotfiles repositories and macOS setup scripts from the community.
Happy coding!