port: rewrite bootstrap tool in Go
Replace the Python bootstrap script with a Go implementation that cross-compiles to native binaries for Linux and macOS on x86_64 and aarch64. The Go port preserves all sections of the original (system packages, optional Flatpak GUI apps, custom downloads, and the macOS firecracker VM bridge) and adds first-class pacman support so the tool works on Arch-family distros alongside Debian, RHEL, and macOS. A Makefile produces a host binary via `make build` and the full four-target matrix under dist/ via `make build-all`.
This commit is contained in:
@@ -1,8 +1,44 @@
|
||||
# Usage
|
||||
# bootstrap_dev_env
|
||||
|
||||
``` shell
|
||||
curl -L -o bootstrap.zip https://github.com/JMR-dev/bootstrap_dev_env/archive/refs/heads/main.zip && \
|
||||
unzip bootstrap.zip && \
|
||||
cd bootstrap_dev_env-main && \
|
||||
python3 bootstrap_environment.py
|
||||
A Go-based bootstrap tool that installs a development environment across
|
||||
macOS, Debian/Ubuntu, RHEL/Fedora, and Arch Linux on `x86_64` and `aarch64`.
|
||||
It installs system packages, optional Flatpak GUI apps, and a set of custom
|
||||
third-party tools (Go, Neovim, Zig, NVM, pyenv, oh-my-zsh, Firecracker on
|
||||
Linux).
|
||||
|
||||
## Install
|
||||
|
||||
Download the native binary for your platform from a release, or build from
|
||||
source:
|
||||
|
||||
```shell
|
||||
git clone https://github.com/JMR-dev/bootstrap_dev_env.git
|
||||
cd bootstrap_dev_env
|
||||
make build # builds ./bootstrap_environment for the host
|
||||
```
|
||||
|
||||
To produce native binaries for all four supported targets at once:
|
||||
|
||||
```shell
|
||||
make build-all # writes dist/bootstrap_environment-{linux,darwin}-{amd64,arm64}
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```shell
|
||||
# Linux (do NOT use sudo on macOS — Homebrew refuses to run as root)
|
||||
sudo ./bootstrap_environment [--only system|flatpak|custom] [--gui]
|
||||
|
||||
# macOS
|
||||
./bootstrap_environment [--only system|custom] [--gui] [--no-vm]
|
||||
```
|
||||
|
||||
Flags:
|
||||
|
||||
- `--only` — restrict to one section (`system`, `flatpak`, or `custom`).
|
||||
- `--gui` — include GUI applications and the Flatpak section. Default is
|
||||
headless: both are skipped.
|
||||
- `--no-vm` — macOS only: skip provisioning the Fedora-on-QEMU/VirtualBox VM
|
||||
that backs the `firecracker()` zsh wrapper.
|
||||
|
||||
Package lists live in `packages.go`. Edit and rebuild.
|
||||
|
||||
Reference in New Issue
Block a user