Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

87 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bootstrap_dev_env

A Go-based bootstrap tool that provisions a development environment across macOS, Debian/Ubuntu, RHEL/Fedora, and Arch Linux on x86_64 and aarch64.

It installs:

  • System packages via dnf, apt-get, pacman, or brew (macOS)
  • Flatpak GUI apps from Flathub (Linux only, opt-in with --gui)
  • Custom third-party tools fetched and verified directly: Go, Neovim, Zig, Firecracker (Linux), NVM, pyenv, pip, oh-my-zsh, agy, claude, codex, copilot, playwright, and the gh-repo-bootstrap extension

Supported platforms

OS Architecture Package manager
Linux (Debian/Ubuntu) x86_64 apt-get
Linux (RHEL/Fedora) x86_64 dnf
Linux (Arch) x86_64 pacman
macOS arm64 brew

Note: Linux arm64 (aarch64) binaries are cross-compiled but not yet tested in CI.

CI

Workflow Trigger
Unit Testsgo test -v ./... + go vet ./... Pull requests to main / dev
Integration Tests — full run on Debian, Arch, Fedora, Ubuntu (Dagger) and macOS (native) Push + pull requests to main / dev

Install

Build from source:

git clone https://github.com/JMR-dev/bootstrap_dev_env.git
cd bootstrap_dev_env
make build           # builds ./bootstrap_environment for the host

Cross-compile all supported targets at once:

make build-all       # writes dist/bootstrap_environment-{linux,darwin}-{amd64,arm64,...}

Or download a pre-built binary from the Releases page.

Usage

# Linux (do NOT use sudo on macOS — Homebrew refuses to run as root)
sudo ./bootstrap_environment [flags]

# macOS
./bootstrap_environment [flags]

Flags

Flag Description
--only system|flatpak|custom Restrict to a single section
--gui Include GUI applications and the Flatpak section (default: headless — both skipped)
--no-vm macOS only: skip provisioning the Fedora-on-QEMU VM that backs the firecracker() zsh wrapper
--no-ai Skip AI/LLM CLI tools (agy, claude, codex, copilot)

Example

# Full headless install (typical CI / server)
sudo ./bootstrap_environment

# Desktop workstation — include GUI apps and Flatpaks
sudo ./bootstrap_environment --gui

# Install only system packages, skipping AI tools
sudo ./bootstrap_environment --only system --no-ai

# macOS, no VM provisioning
./bootstrap_environment --gui --no-vm

Configuration

Package lists live in packages.go. Edit the SystemPackages, FlatpakPackages, or customPackages() slices and rebuild.

Platform-specific name mappings (e.g. docker-ce-rootless-extras → skipped on Arch, ffmpeg-freeffmpeg on apt-get) live in the packageOverrides map in pkgmgr.go. Third-party repository setup (Docker, GitHub CLI, Temurin, lazygit COPR, etc.) lives in repos.go.

Development

make test    # go test ./...
make vet     # go vet ./...
make fmt     # gofmt -w .
make build   # build host binary

About

Bootstrap tool for setting up dev/workstation environments for several different POSIX operating systems and workloads

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages