DEV Community

David
David

Posted on

Environment Setup v1.0 - Production-Ready macOS Development Environment

Environment Setup v1.0 - Production-Ready macOS Development Environment

As a developer, I was tired of manually setting up development environments on new Macs. The process was always the same: install Homebrew, configure Git, set up Node.js, install VS Code, configure the shell, and on and on. It was repetitive, error-prone, and time-consuming.

So I built a solution: Environment Setup v1.0 - a comprehensive, production-ready tool that automatically configures a complete development environment on macOS with just one command.

🎯 The Problem

Every time I got a new Mac or helped a colleague set up their development environment, I found myself:

  • Manually installing dozens of packages
  • Configuring shell environments
  • Setting up Git and SSH
  • Installing and configuring editors
  • Managing database services
  • Dealing with version conflicts
  • Forgetting essential tools

This process could take hours, and I'd often forget important tools or configurations.

✨ The Solution

Environment Setup v1.0 solves this with:

  • 🎯 10 Preset Configurations: From minimal (~20 packages) to everything (113+ packages)
  • πŸ€– AI-Powered Tools: Local LLMs (Ollama, LM Studio), AI coding tools
  • πŸ’» Modern Terminals: Warp (AI-powered), iTerm2, Alacritty, WezTerm, Kitty
  • πŸ”„ One-Command Setup: Install everything with a single script
  • πŸ›‘οΈ Production-Ready: Zero ShellCheck errors, comprehensive error handling
  • βš™οΈ Highly Configurable: YAML-driven, easy to customize

πŸš€ Quick Start

# Clone the repository
git clone https://github.com/davidsilvestrehenao-hub/env-setup.git
cd env-setup

# Choose your configuration
./setup-env.sh install --config configs/webdev.yaml
Enter fullscreen mode Exit fullscreen mode

That's it! The tool handles everything else.

πŸ“¦ What's Included

Core Development Tools

  • Version Control: Git, GitHub CLI
  • Runtimes: Node.js, Bun, Python
  • Package Managers: pnpm, Yarn, pipx
  • Containers: Docker, Colima
  • Databases: PostgreSQL, MongoDB, Redis, SQLite, ClickHouse, DuckDB

AI & Productivity

  • AI Tools: Ollama, LM Studio, Cursor, Void
  • Productivity: Raycast, Rectangle, Notion, Obsidian
  • Communication: Slack, Discord, Signal, Telegram

Development Environment

  • Editors: VS Code, Cursor, Void
  • Terminals: Warp, iTerm2, Alacritty, WezTerm, Kitty
  • Shell: Starship, eza, bat, fzf, ripgrep, fd, zoxide
  • DevOps: kubectl, helm, k9s, AWS CLI, Azure CLI

🎯 Configuration System

The tool comes with 10 preset configurations for different user types:

Configuration Packages Perfect For
minimal ~20 Quick setup, basic development
webdev ~50 Frontend/backend developers
ai ~60 AI researchers, data scientists
devops ~80 DevOps engineers, SREs
student ~50 Students, bootcamp participants
everything 113+ Power users, complete setups

Example: Web Developer Configuration

# configs/webdev.yaml
metadata:
  name: "Web Development Setup"
  description: "Complete web development environment"
  version: "1.0.0"

packages:
  core:
    brew:
      - "git"
      - "node"
      - "pnpm"
      - "bun"
      - "yarn"
      - "docker"
      - "postgresql"
      - "redis"
      - "gh"
      - "starship"
      - "bat"
      - "eza"
      - "fzf"
      - "ripgrep"
      - "fd"
      - "zoxide"
      - "jump"
      - "chezmoi"
      - "direnv"
      - "pre-commit"
      - "shellcheck"
      - "shfmt"
      - "git-delta"
      - "jq"
      - "yq"
      - "httpie"
      - "watchman"
      - "entr"
      - "tmux"
      - "volta"
      - "uv"
      - "tldr"
      - "tree"
      - "htop"
      - "neofetch"
  frontend:
    brew:
      - "yarn"
    cask:
      - "visual-studio-code"
      - "warp"
      - "iterm2"
      - "alacritty"
      - "wezterm"
      - "kitty"
  backend:
    brew:
      - "mongosh"
      - "redis"
      - "sqlite"
    cask:
      - "tableplus"
  business:
    brew: []
    cask:
      - "cursor"
      - "rectangle"
      - "raycast"
      - "insomnia"
      - "slack"
      - "discord"
      - "notion"
      - "obsidian"
Enter fullscreen mode Exit fullscreen mode

πŸ”§ Customization Made Easy

Creating your own configuration is simple:

# Copy a preset as starting point
cp configs/webdev.yaml configs/my-custom.yaml

# Edit to your needs
nano configs/my-custom.yaml

# Use your custom config
./setup-env.sh install --config configs/my-custom.yaml
Enter fullscreen mode Exit fullscreen mode

Custom Configuration Example

# configs/my-custom.yaml
metadata:
  name: "My Custom Setup"
  description: "Personal development environment"
  version: "1.0.0"

# Use the main config as base
include: "../config.yaml"

# Override specific packages
packages:
  core:
    brew:
      - "git"
      - "node"
      - "pnpm"
      - "docker"
      - "gh"
      - "starship"
      - "bat"
      - "fzf"
      - "ripgrep"
      - "tmux"
  frontend:
    cask:
      - "visual-studio-code"
      - "warp"
  business:
    cask:
      - "rectangle"
      - "raycast"
Enter fullscreen mode Exit fullscreen mode

πŸ›‘οΈ Production Quality

The tool is built with production quality in mind:

  • Zero ShellCheck errors/warnings
  • Comprehensive error handling
  • Idempotent (safe to run multiple times)
  • Parallel processing with CPU detection
  • Complete documentation with examples
  • Atomic file operations
  • Retry mechanisms for network operations
  • Progress tracking and logging

Error Handling Example

# The tool handles errors gracefully
if ! command_exists brew; then
    log "ERROR" "Homebrew not found. Installing..."
    install_homebrew
    if [ $? -ne 0 ]; then
        log "ERROR" "Failed to install Homebrew"
        exit 1
    fi
fi
Enter fullscreen mode Exit fullscreen mode

πŸŽ‰ Perfect For

  • New Mac setups - Get productive immediately
  • Team onboarding - Consistent environments across team members
  • Students - Learn with minimal setup friction
  • Senior developers - Advanced tools and customization options
  • Anyone wanting a modern development environment

πŸ“š Documentation

The tool includes comprehensive documentation:

πŸ€” Why I Built This

I wanted something that:

  1. Works out of the box - No configuration needed for basic usage
  2. Is highly configurable - Easy to customize for specific needs
  3. Supports different user types - From students to senior developers
  4. Is production-ready and reliable - Zero errors, comprehensive testing
  5. Serves as a learning example - Shows how to build robust shell scripts

πŸš€ Getting Started

Ready to try it out? Here's how:

# Clone the repository
git clone https://github.com/davidsilvestrehenao-hub/env-setup.git
cd env-setup

# Preview what would be installed
./setup-env.sh preview --config configs/webdev.yaml

# Install your chosen configuration
./setup-env.sh install --config configs/webdev.yaml
Enter fullscreen mode Exit fullscreen mode

πŸ”— Links

πŸ’¬ What's Next?

I'm planning to add:

  • Windows support (WSL2)
  • Linux support (Ubuntu, Fedora)
  • More preset configurations (gaming, design, etc.)
  • GUI configuration tool
  • Team configuration sharing

What do you think? Any features you'd like to see added? Any configurations that would be useful for your workflow?


Tags: #macos #devtools #automation #bash #productivity

Top comments (0)