{"record":{"id":"06db6049c41739f9","repo":"lima-vm/lima","slug":"nested-virtualization-requires-macos-15-or-newer","errorCode":null,"errorMessage":"nested virtualization requires macOS 15 or newer","messagePattern":"nested virtualization requires macOS 15 or newer","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/driver/krunkit/krunkit_driver_darwin_arm64.go","lineNumber":244,"sourceCode":"\tif _, err := exec.LookPath(vmType); err != nil {\n\t\treturn errors.New(\"krunkit CLI not found in PATH. Install it via:\\nbrew tap slp/krun\\nbrew install krunkit\")\n\t}\n\t// Also check if krunkit version >= 1.2.1 because of the vsock forwarder feature\n\tif err := checkKrunkitVersion(); err != nil {\n\t\treturn err\n\t}\n\n\tif cfg.MountType != nil && (*cfg.MountType != limatype.VIRTIOFS && *cfg.MountType != limatype.REVSSHFS) {\n\t\treturn fmt.Errorf(\"field `mountType` must be %#q or %#q for krunkit driver, got %#q\", limatype.VIRTIOFS, limatype.REVSSHFS, *cfg.MountType)\n\t}\n\n\tif cfg.TPM != nil && *cfg.TPM {\n\t\treturn errors.New(\"field `tpm` is not supported in krunkit driver\")\n\t}\n\n\tif cfg.NestedVirtualization != nil && *cfg.NestedVirtualization {\n\t\tif macOSProductVersion.LessThan(*semver.New(\"15.0.0\")) {\n\t\t\treturn errors.New(\"nested virtualization requires macOS 15 or newer\")\n\t\t}\n\t}\n\n\tif cfg.OS != nil && *cfg.OS == limatype.WINDOWS {\n\t\treturn errors.New(\"currently Windows guest OS is only supported on QEMU\")\n\t}\n\n\treturn nil\n}\n\nfunc isFedoraConfigured(cfg *limatype.LimaYAML) bool {\n\tfor _, b := range cfg.Base {\n\t\tif strings.Contains(strings.ToLower(b.URL), \"fedora\") {\n\t\t\treturn true\n\t\t}\n\t}\n\tfor _, img := range cfg.Images {\n\t\tif strings.Contains(strings.ToLower(img.Location), \"fedora\") {","sourceCodeStart":226,"sourceCodeEnd":262,"githubUrl":"https://github.com/lima-vm/lima/blob/dd909d0973cd84fa35f9e1693181b4585ea616c1/pkg/driver/krunkit/krunkit_driver_darwin_arm64.go#L226-L262","documentation":"Nested virtualization under krunkit relies on a macOS feature only present on macOS 15 (Sequoia) and newer. validateConfig checks the detected macOS product version and rejects `nestedVirtualization: true` on older macOS releases.","triggerScenarios":"Setting `nestedVirtualization: true` with vmType krunkit on macOS 13 or 14, then running limactl validate or limactl start.","commonSituations":"Running nested VMs (e.g. VM-in-VM with VZ/krun) requested on an older macOS host; configs authored on a macOS 15 machine deployed to older hosts.","solutions":["Upgrade the host to macOS 15 or newer","Set `nestedVirtualization: false` or remove the field if nested virt is not required"],"exampleFix":"// before (lima.yaml on macOS 14)\nnestedVirtualization: true\n// after\nnestedVirtualization: false","handlingStrategy":"validation","validationCode":"if cfg[\"nestedVirtualization\"] == true {\n    ver, _ := macosProductVersion()\n    if ver.LessThan(semver.MustParse(\"15.0.0\")) {\n        return errors.New(\"nested virtualization needs macOS 15+\")\n    }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Check `sw_vers -productVersion` before enabling nested virtualization","Gate krunkit+nested-virt configs to macOS 15+ hosts","Keep nestedVirtualization false unless needed"],"tags":["krunkit","macos","nested-virtualization","version-check"],"backgroundTag":"host-os-version-too-old","analyzedSha":"dd909d0973cd84fa35f9e1693181b4585ea616c1","analyzedAt":"2026-09-01T14:24:59.842Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}