Skip to content

wyattowalsh/setup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🖥️ macOS Setup

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.

macOS Homebrew Shell Script


✨ Features

  • 🎯 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

🔍 System Requirements

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

🎯 Installation

  1. Clone Repository

    git clone https://github.com/wyattowalsh/setup.git
    cd setup
  2. Make Executable

    chmod +x setup.zsh
  3. 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
  4. Run Setup

    # Run with default settings
    ./setup.zsh
    
    # Run with verbose output
    ./setup.zsh -v
    
    # Preview changes without applying
    ./setup.zsh -d

🎛️ Command Line Options

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

📦 Project Structure

📁 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

🔄 Quick 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

🤝 Contributing

Feel free to submit issues and enhancement requests! Follow these steps:

  1. Fork the repository
  2. Create your feature branch
  3. Commit your changes
  4. Push to the branch
  5. Create a Pull Request

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.


Made with ❤️ for the macOS development community