Skip to content

Repository files navigation

devboost πŸš€

One command to transform your workstation into a modern, opinionated development environment.

Transform your macOS or Linux machine into a productivity powerhouse with a single command. devboost installs and configures the best-in-class tools for modern development, all while preserving your existing customizations.

curl -fsSL https://raw.githubusercontent.com/rolfsormo/devboost/main/devboost.sh | bash -s -- apply

✨ What you get: A beautiful shell (zsh + starship), smart navigation (zoxide, fzf), powerful search (ripgrep, fd), modern replacements (bat, eza, dust, duf, procs), seamless toolchain management (mise), and a fully configured tmux setup β€” all in under 5 minutes.


🎯 Why devboost?

Setting up a development environment is tedious. You spend hours installing tools, configuring shells, tweaking prompts, and setting up aliases. devboost does all of this automatically with sensible defaults that work out of the box.

Key principles:

  • βœ… Non-destructive: Never touches your existing configs β€” uses managed include files
  • βœ… Idempotent: Safe to run multiple times β€” only applies what's needed
  • βœ… Opinionated: Curated selection of best-in-class tools
  • βœ… Zero prompts: Everything works automatically with smart defaults
  • βœ… Cross-platform: Works on macOS and Linux (Ubuntu, Debian, Fedora, Arch)

πŸš€ Quick Start

Install & Run (Recommended)

# Download and run in one command
curl -fsSL https://raw.githubusercontent.com/rolfsormo/devboost/main/devboost.sh | bash -s -- apply

That's it! Your development environment is being set up. Grab a coffee β˜• β€” this takes a few minutes.

Alternative: Review First (More Secure)

# Download the script
curl -fsSL https://raw.githubusercontent.com/rolfsormo/devboost/main/devboost.sh -o /tmp/devboost.sh

# Review it (recommended)
less /tmp/devboost.sh

# Run it
bash /tmp/devboost.sh apply

Install to PATH

# Download to a permanent location
curl -fsSL https://raw.githubusercontent.com/rolfsormo/devboost/main/devboost.sh -o ~/bin/devboost
chmod +x ~/bin/devboost

# Ensure ~/bin is in your PATH
export PATH="$HOME/bin:$PATH"

# Now run from anywhere
devboost apply

πŸ“¦ What Gets Installed

devboost installs and configures a curated set of modern development tools. Here's everything that's included with links to their sources:

🐚 Shell & Navigation

  • zsh - Powerful shell with extensive customization
  • zoxide - Smarter cd command that learns your habits
  • fzf - Fuzzy finder for files, history, and more
  • atuin - Magical shell history with sync and search

Shell Configuration:

  • znap - Fast zsh plugin manager
  • zsh-autosuggestions - Suggests commands as you type
  • zsh-syntax-highlighting - Real-time syntax highlighting
  • starship - Minimal, fast, customizable prompt
  • Smart aliases - ls β†’ eza, cat β†’ bat, grep β†’ rg, find β†’ fd, du β†’ dust, df β†’ duf, ps β†’ procs

πŸ” Search & File Operations

  • ripgrep (rg) - Blazing fast text search
  • fd - Simple, fast alternative to find

🎨 Modern Replacements

  • bat - cat with syntax highlighting and Git integration
  • eza - Modern ls with colors, Git status, and more
  • dust - More intuitive du with visual tree
  • duf - Better df with colors and formatting
  • procs - Modern ps with colors and tree view

πŸ› οΈ Utilities

  • jq - Command-line JSON processor
  • yq - YAML processor (jq for YAML)
  • git-delta - Syntax-highlighted pager for Git
  • lazygit - Simple terminal UI for Git

🌍 Environment Management

  • mise - Fast toolchain manager (replaces asdf/nvm/pyenv)
  • direnv - Load and unload environment variables per directory
  • tmux - Terminal multiplexer with session persistence

Toolchains (via mise):

  • Node.js (LTS)
  • Python (3.14)
  • Go (1.26)
  • Rust (stable)
  • Deno (LTS)

🎭 Tmux Configuration

πŸ”— Editor & Terminal Integration

Wire your terminal emulator and code editor to the devboost tmux session so every window auto-attaches and persists across restarts.

The -A flag means "attach if the session exists, create it otherwise" β€” so every new window lands in the same session automatically.

Ghostty (~/.config/ghostty/config):

command = /opt/homebrew/bin/tmux new-session -A -s main

Zed (~/.config/zed/settings.json):

{
  "terminal": {
    "shell": {
      "program": "/opt/homebrew/bin/tmux",
      "args": ["new-session", "-A", "-s", "main"]
    }
  }
}

VS Code (settings.json):

{
  "terminal.integrated.defaultProfile.osx": "tmux",
  "terminal.integrated.profiles.osx": {
    "tmux": {
      "path": "/opt/homebrew/bin/tmux",
      "args": ["new-session", "-A", "-s", "main"]
    }
  }
}

Tip β€” grouped sessions: If you want Zed/VS Code terminals to share windows but track focus independently (no mirroring), use -t main instead:

"args": ["new-session", "-t", "main"]

This creates a grouped session β€” you'll see main and main-1 in tmux ls, but all windows are shared.

On Linux, replace /opt/homebrew/bin/tmux with the output of which tmux.


πŸ’» Usage

devboost [COMMAND] [OPTIONS]

Commands

  • apply - Set up your environment (default)
  • plan - Preview what would change (dry-run)
  • doctor - Check system health and prerequisites
  • uninstall - Remove devboost-managed files
  • migrate-from-oh-my-zsh - Remove oh-my-zsh and recover .zshrc customizations (destructive β€” needs --yes)

Options

  • --config FILE - Custom config file (default: ~/.devboost.yaml)
  • --dry-run - Show what would be done without making changes
  • --yes - Confirm a destructive command (required by migrate-from-oh-my-zsh)
  • --verbose, -v - Enable verbose output
  • --help, -h - Show help message
  • --version - Show version

Examples

# Preview changes
devboost plan

# Set up your environment
devboost apply

# Check system health
devboost doctor

# Use custom config
devboost apply --config ~/my-config.yaml

# Remove oh-my-zsh and recover your customizations
devboost migrate-from-oh-my-zsh --dry-run   # preview first
devboost migrate-from-oh-my-zsh --yes       # then actually run it

βš™οΈ Configuration

Everything works out of the box with sensible defaults. Customize by creating ~/.devboost.yaml:

# ~/.devboost.yaml
# Everything has defaults, so this file is optional!

zsh:
  aliases:
    enable: true

tmux:
  enable: true
  settings:
    mouse: true

toolchains:
  enable_mise: true
  globals:
    node: "lts"
    python: "3.14"

See .devboost.yaml.example for all available options.


πŸ›‘οΈ Safety & Philosophy

devboost is designed to be completely non-destructive:

  • βœ… Never modifies your files directly β€” uses managed include files
  • βœ… Automatic backups β€” first-touch backups in ~/.devboost/backups/
  • βœ… Idempotent β€” safe to run multiple times
  • βœ… Preview mode β€” use plan to see what would change
  • βœ… Easy removal β€” uninstall removes all managed files

File Layout

~/.zshrc                    β†’ Contains include block (you control this)
~/.zshrc.devboost          β†’ Fully managed by devboost
~/.config/starship.toml    β†’ Managed (backed up first)
~/.tmux.conf               β†’ Contains managed block between markers
~/.devboost/backups/       β†’ Automatic backups

πŸ“Έ Screenshots

Note: Screenshots coming soon! We'd love contributions showing devboost in action.

Want to contribute a screenshot? Show off:

  • Your terminal with starship prompt
  • Aliases in action (ls, cat, etc.)
  • tmux session with multiple panes
  • Toolchain management with mise

πŸ§ͺ Testing

This project has been tested on:

  • βœ… macOS (with Podman for Linux testing)
  • βœ… Ubuntu/Debian (via Docker/Podman)
  • βœ… Fedora (via Docker/Podman)
  • ⚠️ Arch Linux (skipped on ARM64 due to image limitations)

The test suite automatically uses Docker or Podman (installing Podman if needed). See tests/README.md for details.


πŸ“‹ Requirements

  • bash 3.2+ (macOS system bash works out of the box)
  • git
  • curl
  • sudo (for package installation on Linux)
  • yq or python3 with PyYAML (optional β€” falls back to basic parser)

Supported Operating Systems

  • macOS - Uses Homebrew (installed automatically if missing)
  • Debian/Ubuntu - Uses apt
  • Fedora - Uses dnf
  • Arch Linux - Uses pacman

πŸ› Troubleshooting

Package Installation Failures

Package installation output is suppressed for cleaner logs. If a package fails to install, the full error output will be displayed to help you troubleshoot.

Some packages may not be available in all package managers. You can install missing packages manually or add them to your config's packages.optional list.

YAML Parsing Issues

Install yq for better YAML parsing:

Python 3 with PyYAML works as a fallback.

Tmux Plugins Not Installing

By default, devboost installs plugins automatically via the TPM CLI after writing the config. If you set system.auto_install_plugins: false, run prefix + I inside a running tmux session instead.

Zoxide Errors

If you see command not found: __zoxide_pwd, ensure zoxide is installed and run devboost apply again to regenerate the config.

Already Using oh-my-zsh?

devboost provides its own plugin manager (znap), prompt (starship), and curated plugin set (autosuggestions, syntax highlighting). Running oh-my-zsh alongside devboost is redundant and can slow shell startup or cause conflicting keybindings/completions.

devboost doctor will warn if it detects ~/.oh-my-zsh. To remove it and recover any customizations:

devboost migrate-from-oh-my-zsh --dry-run   # preview first
devboost migrate-from-oh-my-zsh --yes       # actually remove it

This is destructive, so --yes is required to actually run it (dry-run never needs it). It replicates oh-my-zsh's own uninstaller β€” removes ~/.oh-my-zsh, renames your current .zshrc to a timestamped ~/.zshrc.omz-uninstalled-* backup, and restores ~/.zshrc.pre-oh-my-zsh if that pre-install snapshot exists β€” then recovers anything you added to .zshrc after installing oh-my-zsh (aliases, PATH changes, etc.), which the plain uninstaller alone would otherwise strand in that backup. oh-my-zsh's own template lines (ZSH_THEME, plugins=(...), source $ZSH/oh-my-zsh.sh, etc.) are stripped out first, so only your genuine additions get appended back. Your file is backed up first (see File Layout) before anything is rewritten.

Review the result, then run devboost apply to add devboost's own setup.


🀝 Contributing

Contributions are very welcome! This project has been tested on macOS and Linux. Pull requests are encouraged for:

  • Testing on additional Linux distributions
  • Bug fixes and improvements
  • New modules
  • Documentation improvements
  • Screenshots and visual examples

See CONTRIBUTING.md for detailed guidelines.


πŸ“„ License

MIT License - see LICENSE file for details.


πŸ“š Additional Resources


🎯 Versioning

devboost follows Semantic Versioning:

  • PATCH (1.1.0 β†’ 1.1.1): Bug fixes, safe to upgrade
  • MINOR (1.1.0 β†’ 1.2.0): New features, safe to upgrade
  • MAJOR (1.1.0 β†’ 2.0.0): Breaking changes, review changelog

The script will warn if your config file is from an older MAJOR version.


Ready to boost your development environment? πŸš€

curl -fsSL https://raw.githubusercontent.com/rolfsormo/devboost/main/devboost.sh | bash -s -- apply

About

Opinionated (but configurable) setup of your Mac or Linux dev environment with a single command

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages