DEV Community

Lucid Fabrics
Lucid Fabrics

Posted on • Edited on

I Built a One-Command macOS VM Tool for Proxmox 9

If you've ever set up a macOS VM on Proxmox, you know the pain. Find a guide, chain qm commands, mess up one flag, start over, tweak OpenCore configs, stare at a UEFI shell wondering what went wrong. Most guides out there are for Proxmox 7 or 8 and the existing scripts are rough around the edges with no validation or dry run.

I kept doing this manually and eventually got fed up. So I built osx-proxmox-next.

What's New (v0.5.0)

Since the original post, three releases shipped:

  • Auto-download (v0.3.0) — OpenCore ISOs and macOS recovery images download automatically. No manual file placement.
  • Preflight gate (v0.4.0) — Host readiness check (qm, pvesm, /dev/kvm, root access) runs before live apply. Blocks mistakes early.
  • Tahoe stable (v0.5.0) — macOS Tahoe 26 is now fully stable. All three versions (Sonoma, Sequoia, Tahoe) use the lightweight osrecovery download (~0.9 GB).
  • Community scripts — A pure bash alternative is now available via community-scripts (no Python required).

What's New (v0.6.0)

  • AMD CPU support — Auto-detects Intel/AMD and applies the correct configuration (Cascadelake-Server emulation for AMD, native host passthrough for Intel). Zero config needed.
  • Graphical boot picker — OpenCore now shows Apple wallpaper-style icons per macOS version (Sonoma landscape, Sequoia mountains, etc.) with proper version names instead of "macOS Base System"
  • Community-scripts integration — Compatible with community-scripts
  • Hidden OPENCORE entry — Cleaner boot picker without the raw OpenCore disk showing

To upgrade:

bash <(curl -s https://raw.githubusercontent.com/lucid-fabrics/osx-proxmox-next/main/install.sh)
Enter fullscreen mode Exit fullscreen mode

What's New (v0.7.0)

  • macOS Ventura 13 support — Now supports all four modern macOS versions (Ventura, Sonoma, Sequoia, Tahoe)
  • Lightweight option — Ventura 13 is perfect for older hardware or resource-constrained hosts
  • Boot config improvements — More reliable recovery boot with DmgLoading=Any and SecureBootModel=Disabled

To upgrade:

bash <(curl -s https://raw.githubusercontent.com/lucid-fabrics/osx-proxmox-next/main/install.sh)
Enter fullscreen mode Exit fullscreen mode

What it does

TUI wizard that runs on your Proxmox 9 host. Five steps:

  1. Preflight checks for qm, pvesm, /dev/kvm, root access
  2. Configure auto-detects CPU, RAM, storage, picks a free VMID
  3. Review validates config, checks OpenCore + installer ISOs exist
  4. Download auto-downloads OpenCore ISO and macOS recovery image if missing
  5. Dry Run shows every qm command it will run. Nothing executes.
  6. Live Apply creates the VM

The dry run is the part I care about most. You see exactly what's going to happen before anything touches your system.

Step 1: OS Selection

Step 2: Storage Selection

Step 3: VM Configuration

Step 4: Review & Dry Run

SMBIOS generation

Every macOS VM needs a unique serial number, UUID, and board model or Apple Services won't work. Most guides make you generate these manually and edit OpenCore configs.

This tool generates them automatically via Proxmox's native --smbios1 flag. No OpenCore editing. Bring your own values if you want, or just let it handle it.

Install

bash -c "$(curl -fsSL https://raw.githubusercontent.com/wmehanna/osx-proxmox-next/main/install.sh)"
Enter fullscreen mode Exit fullscreen mode

Clones the repo, sets up a Python venv, launches the wizard.

CLI mode

If you prefer scripting over wizards:

# Download assets (OpenCore + recovery)
osx-next-cli download --macos sonoma

# Check host readiness
osx-next-cli preflight

# Preview commands (dry run)
osx-next-cli apply \
  --vmid 910 --name macos-sequoia --macos sequoia \
  --cores 8 --memory 16384 --disk 128 \
  --bridge vmbr0 --storage local-lvm

# Execute for real
osx-next-cli apply --execute \
  --vmid 910 --name macos-sequoia --macos sequoia \
  --cores 8 --memory 16384 --disk 128 \
  --bridge vmbr0 --storage local-lvm
Enter fullscreen mode Exit fullscreen mode

Supported versions

macOS Status
Sonoma 14 ✅ Stable
Sequoia 15 ✅ Stable
Tahoe 26 ✅ Stable

Performance profiles

Optional guest-side scripts you can run inside macOS to tune responsiveness:

Blazing disables animations, transparency, Spotlight, and sleep. Max snappiness.

Xcode same UI tweaks but keeps Spotlight on (needed for code completion).

Snapshot your VM before applying either of these.

What's next

Working on reusable VM templates, auto OpenCore updates, and a GPU passthrough wizard (that one's a stretch goal at 20 sponsors).

Links

GitHub: lucid-fabrics/osx-proxmox-next

Solo project, no company behind it. If it saves you time, a star or a coffee helps. You can also grab one on Buy Me a Coffee or sponsor on GitHub.

Top comments (0)