#!/usr/bin/env bash # One-shot developer toolchain setup for the main-desktop image. # Run as your user after first boot (safe to re-run). See DEVELOPMENT.md for the why. set -euo pipefail echo "== Homebrew tools ==" brew install mise gh cosign echo "== Toolchains (mise) ==" mise use -g node@22 python@3.12 go@latest rust@latest java@temurin-21 dotnet@10 mise install node@18 node@20 python@3.11 java@temurin-17 java@temurin-25 echo "== RTL-SDR udev rules (FRScanner) ==" if [ ! -f /etc/udev/rules.d/20-rtlsdr.rules ]; then sudo tee /etc/udev/rules.d/20-rtlsdr.rules >/dev/null <<'EOF' # Generic RTL2832U (rtl-sdr) dongles — allow non-root access SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", MODE="0666", TAG+="uaccess" SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2832", MODE="0666", TAG+="uaccess" EOF sudo udevadm control --reload-rules fi echo "== Native-build distrobox ==" if ! distrobox list 2>/dev/null | grep -q '^.*| *dev '; then distrobox create --yes dev --image registry.fedoraproject.org/fedora:44 distrobox enter dev -- sudo dnf install -y gcc gcc-c++ make cmake pkgconf python3-devel \ gtk4-devel zbar libsndfile mediainfo-libs rtl-sdr rtl-sdr-devel mkvtoolnix \ python3-tkinter python3-dbus flashrom fi echo "== Done ==" echo "Remaining manual bits (see DEVELOPMENT.md):" echo " - copy ~/godot/ (pinned 4.2/4.3 binaries) and ~/.local/share/godot/ from old machine" echo " - bring per-project .env files (API keys)" echo " - ujust dx-group (docker group), then re-login"