Automated development environment setup for Linux and macOS systems with Docker, Neovim, tmux, and essential development tools.
# Run the setup script
bash dev.sh- Git - Version control with preconfigured user settings
- GitHub CLI - Command-line interface for GitHub
- tmux - Terminal multiplexer
- Neovim - Modern text editor with custom configuration from GitHub
- ripgrep - Fast text search tool
- Node.js - JavaScript runtime (LTS version)
- Bun - Fast JavaScript runtime and package manager
- Docker - Containerization platform with compose plugin
- Claude Code - AI-powered coding assistant
- htop - Interactive process viewer
- tree - Directory structure display
- jq - JSON processor
- wget - File downloader
- curl - Data transfer tool
- Linux: Ubuntu, CentOS, RHEL, Fedora, Arch Linux, Alpine
- macOS: Automatic Homebrew installation
- Auto-detects system package manager (apt/yum/dnf/pacman/apk/brew)
- Fallback package names for different distributions
- Comprehensive error handling
- Automatic config backups to
~/.config-backups/ - Multi-shell support (bash/zsh/fish)
- Custom Neovim config from GitHub repository
- Useful aliases for all tools
- Platform-specific installation
- User added to docker group (Linux)
- Docker Desktop support (macOS)
- Pre-configured aliases
# Basic setup
bash dev.sh
# Check what's installed
tmux -V && nvim --version && docker --version# Container management
dps # docker ps
dpsa # docker ps -a
dimg # docker images
dexec <id> # docker exec -it <id> /bin/bash# Neovim
vim <file> # Opens with nvim
vi <file> # Opens with nvim
nvim <file> # Direct nvim call# Directory listing
ll # ls -alF (detailed)
la # ls -A (show hidden)
l # ls -CF (compact)
# Search files
rg "pattern" # Fast text search
tree # Show directory structure# Session management
tmux new -s <name> # New named session
tmux attach -t <name> # Attach to session
tmux list-sessions # List all sessions
# Inside tmux (Ctrl-b prefix)
Ctrl-b c # New window
Ctrl-b n # Next window
Ctrl-b p # Previous window
Ctrl-b d # Detach session# Pre-configured settings
git config --global user.email "dpolk213@gmail.com"
git config --global user.name "dustypolk"
# Override with environment variables
export GIT_USER_EMAIL="your@email.com"
export GIT_USER_NAME="yourname"# First-time authentication
claude auth
# Basic usage
claude chat # Start interactive chat
claude --help # Show all commands- Ubuntu 18.04+ / Debian 9+
- CentOS 7+ / RHEL 7+ / Fedora 30+
- Arch Linux / Alpine Linux
- sudo privileges
- macOS 10.14+
- Xcode Command Line Tools
# If docker commands require sudo
sudo usermod -aG docker $USER
# Then log out and back in# Reload shell configuration
source ~/.bashrc # or ~/.zshrc# Reset Neovim config
rm -rf ~/.config/nvim
# Re-run setup script# Check system package manager
which apt || which yum || which brew
# Update package lists
sudo apt update # Ubuntu/Debian
sudo yum update # CentOS/RHEL
brew update # macOS- Setup logs:
/tmp/dev-setup-YYYYMMDD_HHMMSS.log - View logs:
tail -f /tmp/dev-setup-*.log
- Config backups:
~/.config-backups/YYYYMMDD_HHMMSS/ - Automatic backup before any config changes
# Set before running script
export GIT_USER_EMAIL="custom@email.com"
export GIT_USER_NAME="customname"Edit the script and comment out unwanted installations in the install_tools() function.
- Script runs with
set -e(exit on error) - Config files are backed up before modification
- Downloads use HTTPS with verification
- No sensitive data is logged or stored