Skip to content

dave6892/dev-setup

Repository files navigation

Dev Setup

A shell-agnostic development environment setup system for macOS.

Overview

Setting up a new developer machine can be an ad-hoc, manual, and time-consuming process. This dev-setup repository aims to simplify the process with easy-to-understand instructions and shell-agnostic scripts to automate the setup of your development environment.

The key features of this setup system include:

  • Shell agnostic - supports bash, zsh, and fish shells
  • Modular design - install only what you need
  • Interactive setup - guided installation with prompts
  • macOS optimized - includes sensible macOS defaults for developers
  • Modern tools - focuses on current development tools and practices

What's Included

This setup system can configure the following components:

  • Shell Environment: Choose between bash, zsh, or fish with optimized configurations
  • Core Development Tools: Vim, tmux, git, and other essential command-line utilities
  • Programming Languages: Python, Node.js, Go, Rust
  • Web Development: Node.js ecosystem, browsers, and web development tools
  • Data Stores: MySQL, PostgreSQL, MongoDB, Redis, and Elasticsearch
  • macOS Defaults: Developer-friendly system preferences and settings
  • GUI Applications: VS Code, iTerm2, Docker, and more

Installation

Prerequisites

  • A macOS system
  • Administrator (sudo) access
  • Internet connection

Quick Start

  1. Clone this repository:

    git clone https://github.com/dave6892/dev-setup.git
    cd dev-setup
  2. Make the scripts executable:

    chmod +x chmod.sh
    ./chmod.sh
  3. Run the setup script:

    ./setup.sh
  4. Follow the interactive prompts to customize your installation.

Running Individual Components

If you only want to install or configure specific components, you can use the run.sh script:

# Show available components
./run.sh help

# Install only development tools
./run.sh brew

# Set up only fish shell
./run.sh fish

# Apply only macOS defaults
./run.sh macos

Directory Structure

dev-setup/
├── setup.sh                    # Main setup script
├── run.sh                      # Script to run individual components
├── macos-defaults.sh           # macOS system preferences configuration
├── common/                     # Shell-agnostic configurations
│   ├── aliases-common.sh       # Common aliases for all shells
│   ├── exports-common.sh       # Common environment variables
│   ├── brew-common.sh          # Common Homebrew installations
│   ├── web-common.sh           # Web development tools
│   └── datastores-common.sh    # Database installations
└── shells/                     # Shell-specific configurations
    ├── bash-setup.sh           # Bash configuration
    ├── zsh-setup.sh            # Zsh configuration
    └── fish-setup.sh           # Fish configuration

Customization

Adding Your Own Configurations

You can add your own personal configurations by creating a local configuration file:

  • For bash: ~/.bashrc.local
  • For zsh: ~/.zshrc.local
  • For fish: ~/.config/fish/config-local.fish

These files will be loaded automatically but won't be overwritten by future updates.

Modifying Default Installations

If you want to change what gets installed by default:

  1. Edit the corresponding script in the common/ directory
  2. For shell-specific customizations, edit the scripts in the shells/ directory

Usage Tips

  • To update your development environment later, simply run ./setup.sh again
  • Use reload alias to refresh your shell configuration after making changes
  • If you're switching between shells frequently, you might want to keep your configurations synchronized

Troubleshooting

If you encounter issues during setup:

  1. Check that you have administrator permissions
  2. Ensure Homebrew is installed correctly
  3. Make sure your internet connection is stable
  4. Try running individual modules manually
  5. Check the shell-specific log files in your home directory

For specific issues, please open an issue on GitHub.

Extending

To extend this setup for your own needs:

  1. Fork this repository
  2. Add or modify scripts in the common/ or shells/ directories
  3. Update the main setup.sh script to include your new modules

Credits

This project was inspired by and adapted from donnemartin/dev-setup.

License

This repository is licensed under the Apache License 2.0 - see the LICENSE file for details.

Contact

Feel free to contact me to discuss any issues, questions, or comments.

My contact info can be found on my GitHub page.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages