Note
A robust macOS setup automation system that organizes development tools and applications into logical package groups. Built with Homebrew, enhanced with Oh My Zsh and Powerlevel10k.
- 🎯 Package Groups: Logically organized packages for targeted installation
- 🚀 Parallel Installation: Optimized package installation using available CPU cores
- 🔄 Smart Retry Logic: Automatic retry for failed operations with exponential backoff
- 🎨 Rich CLI Interface: Beautiful progress indicators and detailed status reporting
- 🛡️ System Validation: Comprehensive checks for compatibility and requirements
- 🔌 Simple Configuration: YAML-based configuration for easy customization
Important
The script performs these checks automatically before installation.
- macOS 11.0 (Big Sur) or later
- 4GB RAM minimum
- 20GB free disk space
- Administrative privileges
- Internet connection
-
Clone Repository
git clone https://github.com/wyattowalsh/setup.git cd setup
-
Make Executable
chmod +x setup.zsh
-
Configure Package Groups Edit
setup.yaml
to include only the package groups you want to install:groups: core: description: Core development tools packages: - git - gh - make # Add or remove packages... python: description: Python development environment packages: - pyenv - poetry # Add or remove packages...
[!TIP]
- To disable a group: Remove or comment out its entire section
- To enable a group: Include its section with description and packages
- To customize: Add or remove packages within any group
-
Run Setup
# Run with default settings ./setup.zsh # Run with verbose output ./setup.zsh -v # Preview changes without applying ./setup.zsh -d
Option | Description | Example |
---|---|---|
-v, --verbose |
Show detailed output | ./setup.zsh -v |
-d, --dry-run |
Preview changes without applying | ./setup.zsh -d |
-s, --skip-update |
Skip updating existing packages | ./setup.zsh -s |
-h, --help |
Show help message | ./setup.zsh -h |
📁 setup/
├── 📄 README.md # Documentation
├── 📄 setup.zsh # Main setup script
├── 📄 setup.yaml # Package configuration
└── 📁 lib/ # Library modules
├── 📄 logging.zsh # Logging utilities
├── 📄 config.zsh # Config management
├── 📄 system.zsh # System checks
└── 📄 install.zsh # Package installation
Caution
This command removes any existing setup directory before installation.
cd && rm -rf setup && git clone https://github.com/wyattowalsh/setup.git && cd setup && chmod +x setup.zsh && ./setup.zsh -v
Feel free to submit issues and enhancement requests! Follow these steps:
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ for the macOS development community