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.
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)
# Download and run in one command
curl -fsSL https://raw.githubusercontent.com/rolfsormo/devboost/main/devboost.sh | bash -s -- applyThat's it! Your development environment is being set up. Grab a coffee β β this takes a few minutes.
# 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# 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 applydevboost installs and configures a curated set of modern development tools. Here's everything that's included with links to their sources:
- zsh - Powerful shell with extensive customization
- zoxide - Smarter
cdcommand 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
- bat -
catwith syntax highlighting and Git integration - eza - Modern
lswith colors, Git status, and more - dust - More intuitive
duwith visual tree - duf - Better
dfwith colors and formatting - procs - Modern
pswith colors and tree view
- jq - Command-line JSON processor
- yq - YAML processor (jq for YAML)
- git-delta - Syntax-highlighted pager for Git
- lazygit - Simple terminal UI for Git
- 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)
- TPM - Tmux Plugin Manager
- tmux-resurrect - Restore tmux sessions after restart
- tmux-continuum - Automatic session saving
- tmux-yank - Copy to system clipboard
- tmux-logging - Logging capabilities
- Sensible defaults (mouse support, large history, etc.)
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.
devboost [COMMAND] [OPTIONS]apply- Set up your environment (default)plan- Preview what would change (dry-run)doctor- Check system health and prerequisitesuninstall- Remove devboost-managed filesmigrate-from-oh-my-zsh- Remove oh-my-zsh and recover.zshrccustomizations (destructive β needs--yes)
--config FILE- Custom config file (default:~/.devboost.yaml)--dry-run- Show what would be done without making changes--yes- Confirm a destructive command (required bymigrate-from-oh-my-zsh)--verbose, -v- Enable verbose output--help, -h- Show help message--version- Show version
# 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 itEverything 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.
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
planto see what would change - β
Easy removal β
uninstallremoves all managed files
~/.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
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
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.
- 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)
- macOS - Uses Homebrew (installed automatically if missing)
- Debian/Ubuntu - Uses apt
- Fedora - Uses dnf
- Arch Linux - Uses pacman
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.
Install yq for better YAML parsing:
- macOS:
brew install yq - Linux: See yq installation
Python 3 with PyYAML works as a fallback.
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.
If you see command not found: __zoxide_pwd, ensure zoxide is installed and run devboost apply again to regenerate the config.
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 itThis 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.
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.
MIT License - see LICENSE file for details.
- ARCHITECTURE.md - Technical design documentation
- AGENTS.md - Development guidelines
- CHANGELOG.md - Version history
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