lima-vm/lima · error
nested virtualization is not supported on %T
Error message
nested virtualization is not supported on %T
What it means
After confirming OS and hardware support, the driver type-asserts the VZ platform configuration to *vz.GenericPlatformConfiguration, the only configuration type that supports SetNestedVirtualizationEnabled. If the platformConfig built earlier is a different VZ configuration type (e.g. a macOS-specific platform config), the assertion fails and this error reports the actual Go type.
Source
Thrown at pkg/driver/vz/vm_darwin.go:364
// nested virt
if *inst.Config.NestedVirtualization {
macOSProductVersion, err := osutil.ProductVersion()
if err != nil {
return fmt.Errorf("failed to get macOS product version: %w", err)
}
if macOSProductVersion.LessThan(*semver.New("15.0.0")) {
return errors.New("nested virtualization requires macOS 15 or newer")
}
if !vz.IsNestedVirtualizationSupported() {
return errors.New("nested virtualization is not supported on this device")
}
genericPlatformConfig, ok := platformConfig.(*vz.GenericPlatformConfiguration)
if !ok {
return fmt.Errorf("nested virtualization is not supported on %T", platformConfig)
}
if err := genericPlatformConfig.SetNestedVirtualizationEnabled(true); err != nil {
return fmt.Errorf("cannot enable nested virtualization: %w", err)
}
}
vmConfig.SetPlatformVirtualMachineConfiguration(platformConfig)
return nil
}
func attachSerialPort(inst *limatype.Instance, config *vz.VirtualMachineConfiguration) error {
path := filepath.Join(inst.Dir, filenames.SerialVirtioLog)
serialPortAttachment, err := vz.NewFileSerialPortAttachment(path, false)
if err != nil {
return err
}
consoleConfig, err := vz.NewVirtioConsoleDeviceSerialPortConfiguration(serialPortAttachment)View on GitHub (pinned to dd909d0973)
Solutions
- Enable nested virtualization only for standard Linux guests (generic platform configuration).
- Don't combine nestedVirtualization: true with the macOS-installer VM flow.
- Check the %T in the message to see which platform config was built and adjust the instance config accordingly.
- If you need nested VMs inside macOS guests, that's not supported — use a Linux guest.
Defensive patterns
Strategy: type-guard
Validate before calling
// ensure the workload targets a Linux guest, not the macOS installer flow # only standard Linux instances use the generic platform config
Type guard
// Go: narrow the platform config type before enabling
generic, ok := platformConfig.(*vz.GenericPlatformConfiguration)
if !ok {
return fmt.Errorf("nested virtualization is not supported on %T", platformConfig)
}
_ = generic Try / catch
// Go: match on the concrete type before SetNestedVirtualizationEnabled
switch pc := platformConfig.(type) {
case *vz.GenericPlatformConfiguration:
_ = pc.SetNestedVirtualizationEnabled(true)
default:
// skip nested virt for non-generic configs
} Prevention
- Only enable nested virtualization for standard Linux guests
- Don't combine nestedVirtualization with macOS installer VMs
- Read the %T in the error to identify the actual config type
When it happens
Trigger: Enabling nestedVirtualization: true while the VM was configured with a non-generic platform configuration — notably when creating a VM via createVMForMacInstaller that uses a macOS platform configuration instead of the generic Linux one.
Common situations: Attempting nested virtualization on a macOS guest installer VM; future/alternative VZ platform configs where nested virt is not implemented in Lima.
Related errors
- failed to get macOS product version: %w
- nested virtualization requires macOS 15 or newer
- nested virtualization is not supported on this device
- cannot enable nested virtualization: %w
- nested virtualization requires macOS 15 or newer
AI-assisted analysis of lima-vm/lima@dd909d0973 (2026-09-01).
Data as JSON: /api/errors/5de55cfe89832ad4.
Report an issue: GitHub.