Repository with Packer templates to build macOS Tart virtual machines to use with self-hosted GitHub Actions runners, Cirrus Runners or any other automation.
The following image variants are currently available:
macos-{golden-gate,tahoe,sequoia,sonoma}-vanilla— a vanilla macOS installation with helpful tweaks such as auto-login, but no additional software preinstalledmacos-{golden-gate,tahoe,sequoia,sonoma}-base— based onmacos-{golden-gate,tahoe,sequoia,sonoma}-vanillaimage, it comes withbrewand other useful software pre-installed, but without Xcodemacos-{tahoe,sequoia,sonoma}-xcode:N— based onmacos-{tahoe,sequoia,sonoma}-baseimage and hasXcode NwithFlutterpre-installedmacos-runner:{tahoe,sequoia,sonoma}— a variant ofxcode:Nwith several versions ofXcodepre-installed andxcodestool to switch between them.
See a full list of VMs available here.
Base images include the experimental Tart Metal shim,
based on the Lume team's work.
It is installed at /usr/local/lib/TartMetalCapabilities.dylib but is not
enabled by default, including for the guest agent or tart exec.
Before starting the VM, enable unrestricted virtual-GPU features on the host as the user running Tart:
defaults write com.apple.gpusw.ParavirtualizedGraphics ForceUnrestrictedDeviceFeatureLevel -bool trueRestart an already-running VM after changing that preference. To enable the shim for one command with Apple family 9 and 64 KiB of threadgroup memory:
tart exec my-vm /usr/bin/env \
DYLD_INSERT_LIBRARIES=/usr/local/lib/TartMetalCapabilities.dylib \
TART_METAL_APPLE_FAMILY_MAX=1009 \
/path/to/workloadOmit these environment variables to run normally. Each opted-in process gets
its own settings; TART_METAL_APPLE_FAMILY_MAX=0 disables the capability
override. Protected executables may reject injection, and GPU support depends
on the host, guest, and workload.
Once a new version of Xcode is released, we will initiate a GitHub release which will automatically build and push
a new version of the macos-{tahoe,sequoia}-xcode:N. This generally happens the next weekend after a release.
Please watch this repository releases to get notified about new images.
Some of the images are regularly getting rebuild in order to update the pre-installed packages.
This workflow defines images that are getting rebuilt monthly on the first Saturday of the month.