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
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"
π§ 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
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"
π‘οΈ 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
π 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:
- GitHub Repository: https://github.com/davidsilvestrehenao-hub/env-setup
- Configuration Guide: https://github.com/davidsilvestrehenao-hub/env-setup/tree/main/configs
- Auto-generated Docs: Complete setup documentation
π€ Why I Built This
I wanted something that:
- Works out of the box - No configuration needed for basic usage
- Is highly configurable - Easy to customize for specific needs
- Supports different user types - From students to senior developers
- Is production-ready and reliable - Zero errors, comprehensive testing
- 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
π Links
- GitHub: https://github.com/davidsilvestrehenao-hub/env-setup
- Issues: https://github.com/davidsilvestrehenao-hub/env-setup/issues
- Discussions: https://github.com/davidsilvestrehenao-hub/env-setup/discussions
π¬ 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)