Skip to content

Conversation

@rgarcia
Copy link
Contributor

@rgarcia rgarcia commented Dec 22, 2025

Summary

Add instructions and scripts for running Hypeman in a UTM virtual machine with nested KVM virtualization on Apple Silicon Macs.

Changes

  • scripts/utm/README.md - Step-by-step guide for setting up a UTM VM with Ubuntu Server and nested KVM
  • scripts/utm/download-iso.sh - Helper script to download Ubuntu Server ARM64 ISO
  • scripts/utm/setup-vm.sh - Provisioning script that installs Go, erofs-utils, dnsmasq, and clones onkernel repos
  • DEVELOPMENT.md - Added callout note in Prerequisites directing macOS users to the UTM guide
  • .gitignore - Ignore downloaded ISO files

Requirements

  • macOS 15 (Sequoia) or later
  • Apple M3 or newer chip (required for nested virtualization)
  • UTM 4.6+

Testing

Tested the full setup flow on an M3 MacBook Pro running macOS Sequoia.


Note

Adds UTM-based macOS development setup docs and scripts, updates DEVELOPMENT.md with clarifications and telemetry setup tweaks, and ignores downloaded ISOs.

Adds a complete UTM-based macOS dev environment.

  • New scripts/utm/README.md with step-by-step UTM VM setup; helper download-iso.sh; provisioning bootstrap-dev-environment.sh (installs deps, configures KVM/IP forwarding, clones repos).
  • Docs DEVELOPMENT.md: macOS callout; reformatted env var table; clarified uplink discovery; improved LGTM setup with bind/YOLO options; minor wording/formatting fixes.
  • .gitignore: ignore scripts/utm/images/ (downloaded ISOs).

Written by Cursor Bugbot for commit d8074b8. This will update automatically on new commits. Configure here.

Add instructions and scripts for running Hypeman in a UTM virtual machine
with nested KVM virtualization on Apple Silicon Macs (M3+ required).

- Add scripts/utm/README.md with step-by-step UTM VM setup guide
- Add scripts/utm/download-iso.sh to download Ubuntu Server ARM64 ISO
- Add scripts/utm/setup-vm.sh to provision VM with Hypeman dependencies
- Update DEVELOPMENT.md with note directing macOS users to UTM guide
- Add .gitignore entry for downloaded ISO files
- Minor markdown formatting improvements in DEVELOPMENT.md
@rgarcia rgarcia requested a review from sjmiller609 December 22, 2025 18:14

# Install Go
echo "[4/10] Installing Go..."
if go version 2>/dev/null | grep -q "go1.2"; then
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Go version check accepts older incompatible versions

The version check grep -q "go1.2" is too permissive. It matches any Go version containing "go1.2" as a substring (1.20, 1.21, 1.22, 1.23, 1.24, 1.25), so if a developer has Go 1.20-1.24 installed, the script will skip installation and report success, leaving them with a Go version that doesn't meet the project's 1.25.4+ requirement from go.mod. This would cause confusing build failures.

Fix in Cursor Fix in Web

Copy link
Collaborator

@sjmiller609 sjmiller609 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great!

@@ -0,0 +1,137 @@
#!/bin/bash
#
# Provision the VM with Hypeman dependencies
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

recommend name script to disambiguate it's a VM for developing or running hypeman (versus running a VM inside hypeman or something else)

Comment on lines +78 to +81
# Configure KVM access
echo "[7/10] Configuring KVM..."
sudo chmod 666 /dev/kvm 2>/dev/null || true
sudo usermod -aG kvm "$(whoami)" 2>/dev/null || true
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see it's not running the install script because it ends with "make dev". While reading I was wondering if this would be a nice way to check the installer script works without a special host touch before running (e.g. if forget to include a setup step like enable kernel routing in installer script, would be easy to notice without always deploying a fresh VM and try it)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also I guess a lot of the installer script is duplicated in this file, so we have to keep adding here and in the installer script for future host setup items

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah this is more "set up a hypeman dev env" script which could probably share stuff with the install script but i dunno... seems fine to keep them separate for now vs. trying to make an option on the install script to make it also serve the purpose of setting up a dev machine

Clarifies that this script sets up a dev environment for working on
Hypeman, not a VM running inside Hypeman.
@rgarcia rgarcia merged commit 8d70731 into main Dec 22, 2025
4 checks passed
@rgarcia rgarcia deleted the macos-setup branch December 22, 2025 21:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants