apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "docker-osx.fullname" . }}-boot-components
data:
  config.plist: |-
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
      <key>ACPI</key>
      <dict>
        <key>Add</key>
        <array>
          <dict>
            <key>Comment</key>
            <string>add DTGP method</string>
            <key>Enabled</key>
            <true/>
            <key>Path</key>
            <string>SSDT-DTGP.aml</string>
          </dict>
          <dict>
            <key>Comment</key>
            <string>Fake EC and USBX Power</string>
            <key>Enåabled</key>
            <true/>
            <key>Path</key>
            <string>SSDT-EC.aml</string>
          </dict>
          <dict>
            <key>Comment</key>
            <string>USB 2.0 Injection</string>
            <key>Enabled</key>
            <true/>
            <key>Path</key>
            <string>SSDT-EHCI.aml</string>
          </dict>
          <dict>
            <key>Comment</key>
            <string>CPU AGPM Plugin=1</string>
            <key>Enabled</key>
            <true/>
            <key>Path</key>
            <string>SSDT-PLUG.aml</string>
          </dict>
        </array>
        <key>Delete</key>
        <array>
          <dict>
            <key>All</key>
            <false/>
            <key>Comment</key>
            <string>Delete CpuPm</string>
            <key>Enabled</key>
            <false/>
            <key>OemTableId</key>
            <data>Q3B1UG0AAAA=</data>
            <key>TableLength</key>
            <integer>0</integer>
            <key>TableSignature</key>
            <data>U1NEVA==</data>
          </dict>
          <dict>
            <key>All</key>
            <false/>
            <key>Comment</key>
            <string>Delete Cpu0Ist</string>
            <key>Enabled</key>
            <false/>
            <key>OemTableId</key>
            <data>Q3B1MElzdAA=</data>
            <key>TableLength</key>
            <integer>0</integer>
            <key>TableSignature</key>
            <data>U1NEVA==</data>
          </dict>
        </array>
        <key>Patch</key>
        <array>
          <dict>
            <key>Comment</key>
            <string>_Q11 to XQ11</string>
            <key>Count</key>
            <integer>1</integer>
            <key>Enabled</key>
            <false/>
            <key>Find</key>
            <data>X1ExMQ==</data>
            <key>Limit</key>
            <integer>0</integer>
            <key>Mask</key>
            <data></data>
            <key>OemTableId</key>
            <data></data>
            <key>Replace</key>
            <data>WFExMQ==</data>
            <key>ReplaceMask</key>
            <data></data>
            <key>Skip</key>
            <integer>0</integer>
            <key>TableLength</key>
            <integer>0</integer>
            <key>TableSignature</key>
            <data></data>
          </dict>
          <dict>
            <key>Comment</key>
            <string>_Q12 to XQ12</string>
            <key>Count</key>
            <integer>1</integer>
            <key>Enabled</key>
            <false/>
            <key>Find</key>
            <data>X1ExMg==</data>
            <key>Limit</key>
            <integer>0</integer>
            <key>Mask</key>
            <data></data>
            <key>OemTableId</key>
            <data></data>
            <key>Replace</key>
            <data>WFExMg==</data>
            <key>ReplaceMask</key>
            <data></data>
            <key>Skip</key>
            <integer>0</integer>
            <key>TableLength</key>
            <integer>0</integer>
            <key>TableSignature</key>
            <data></data>
          </dict>
        </array>
        <key>Quirks</key>
        <dict>
          <key>FadtEnableReset</key>
          <false/>
          <key>NormalizeHeaders</key>
          <false/>
          <key>RebaseRegions</key>
          <false/>
          <key>ResetHwSig</key>
          <false/>
          <key>ResetLogoStatus</key>
          <false/>
        </dict>
      </dict>
      <key>Booter</key>
      <dict>
        <key>MmioWhitelist</key>
        <array/>
        <key>Quirks</key>
        <dict>
          <key>AvoidRuntimeDefrag</key>
          <true/>
          <key>DevirtualiseMmio</key>
          <false/>
          <key>DisableSingleUser</key>
          <false/>
          <key>DisableVariableWrite</key>
          <false/>
          <key>DiscardHibernateMap</key>
          <false/>
          <key>EnableSafeModeSlide</key>
          <true/>
          <key>EnableWriteUnprotector</key>
          <true/>
          <key>ForceExitBootServices</key>
          <false/>
          <key>ProtectMemoryRegions</key>
          <false/>
          <key>ProtectSecureBoot</key>
          <false/>
          <key>ProtectUefiServices</key>
          <false/>
          <key>ProvideCustomSlide</key>
          <true/>
          <key>ProvideMaxSlide</key>
          <integer>0</integer>
          <key>RebuildAppleMemoryMap</key>
          <false/>
          <key>SetupVirtualMap</key>
          <false/>
          <key>SignalAppleOS</key>
          <false/>
          <key>SyncRuntimePermissions</key>
          <false/>
        </dict>
      </dict>
      <key>DeviceProperties</key>
      <dict>
        <key>Add</key>
        <dict>
          <key>PciRoot(0x1)/Pci(0x1F,0x0)</key>
          <dict>
            <key>compatible</key>
            <string>pci8086,2916</string>
            <key>device-id</key>
            <data>
            FikA
            </data>
            <key>name</key>
            <string>pci8086,2916</string>
          </dict>
        </dict>
        <key>Delete</key>
        <dict>
          <key>PciRoot(0x0)/Pci(0x1b,0x0)</key>
          <array>
            <string>MaximumBootBeepVolume</string>
          </array>
        </dict>
      </dict>
      <key>Kernel</key>
      <dict>
        <key>Add</key>
        <array>
          {{- if .Values.qemu.hardwareGpu.enabled }}
          <dict>
            <key>BundlePath</key>
            <string>mXHCD.kext</string>
            <key>Comment</key>
            <string>Hello There</string>
            <key>Enabled</key>
            <true/>
            <key>ExecutablePath</key>
            <string>Contents/MacOS/mXHCD</string>
            <key>MaxKernel</key>
            <string></string>
            <key>MinKernel</key>
            <string></string>
            <key>PlistPath</key>
            <string>Contents/Info.plist</string>
          </dict>
          {{- end }}
          <dict>
            <key>Arch</key>
            <string>x86_64</string>
            <key>BundlePath</key>
            <string>VoodooHDA.kext</string>
            <key>Comment</key>
            <string>Patch engine</string>
            {{- if .Values.qemu.audio.enabled }}
            <key>Enabled</key>
            {{- else -}}
            <key>Disabled</key>
            {{- end }}
            <false/>
            <key>ExecutablePath</key>
            <string>Contents/MacOS/VoodooHDA</string>
            <key>MaxKernel</key>
            <string></string>
            <key>MinKernel</key>
            <string>12.0.0</string>
            <key>PlistPath</key>
            <string>Contents/Info.plist</string>
          </dict>
          <dict>
            <key>Arch</key>
            <string>x86_64</string>
            <key>BundlePath</key>
            <string>Lilu.kext</string>
            <key>Comment</key>
            <string>Patch engine</string>
            <key>Enabled</key>
            <true/>
            <key>ExecutablePath</key>
            <string>Contents/MacOS/Lilu</string>
            <key>MaxKernel</key>
            <string></string>
            <key>MinKernel</key>
            <string>12.0.0</string>
            <key>PlistPath</key>
            <string>Contents/Info.plist</string>
          </dict>
          <dict>
            <key>Arch</key>
            <string>x86_64</string>
            <key>BundlePath</key>
            <string>VirtualSMC.kext</string>
            <key>Comment</key>
            <string>SMC emulator</string>
            <key>Enabled</key>
            <false/>
            <key>ExecutablePath</key>
            <string>Contents/MacOS/VirtualSMC</string>
            <key>MaxKernel</key>
            <string></string>
            <key>MinKernel</key>
            <string>12.0.0</string>
            <key>PlistPath</key>
            <string>Contents/Info.plist</string>
          </dict>
          <dict>
            <key>Arch</key>
            <string>x86_64</string>
            <key>BundlePath</key>
            <string>WhateverGreen.kext</string>
            <key>Comment</key>
            <string>Video patches</string>
            <key>Enabled</key>
            <true/>
            <key>ExecutablePath</key>
            <string>Contents/MacOS/WhateverGreen</string>
            <key>MaxKernel</key>
            <string></string>
            <key>MinKernel</key>
            <string>12.0.0</string>
            <key>PlistPath</key>
            <string>Contents/Info.plist</string>
          </dict>
          <dict>
            <key>Arch</key>
            <string>x86_64</string>
            <key>BundlePath</key>
            <string>AppleALC.kext</string>
            <key>Comment</key>
            <string>Audio patches</string>
            <key>Enabled</key>
            <true/>
            <key>ExecutablePath</key>
            <string>Contents/MacOS/AppleALC</string>
            <key>MaxKernel</key>
            <string></string>
            <key>MinKernel</key>
            <string>12.0.0</string>
            <key>PlistPath</key>
            <string>Contents/Info.plist</string>
          </dict>
          <dict>
            <key>BundlePath</key>
            <string>AGPMInjector.kext</string>
            <key>Comment</key>
            <string></string>
            <key>Enabled</key>
            <true/>
            <key>ExecutablePath</key>
            <string></string>
            <key>MaxKernel</key>
            <string></string>
            <key>MinKernel</key>
            <string></string>
            <key>PlistPath</key>
            <string>Contents/Info.plist</string>
          </dict>
          <dict>
            <key>BundlePath</key>
            <string>USBPorts.kext</string>
            <key>Comment</key>
            <string></string>
            <key>Enabled</key>
            <true/>
            <key>ExecutablePath</key>
            <string></string>
            <key>MaxKernel</key>
            <string></string>
            <key>MinKernel</key>
            <string></string>
            <key>PlistPath</key>
            <string>Contents/Info.plist</string>
          </dict>
          <dict>
            <key>Arch</key>
            <string>x86_64</string>
            <key>BundlePath</key>
            <string>MCEReporterDisabler.kext</string>
            <key>Comment</key>
            <string>AppleMCEReporter disabler</string>
            <key>Enabled</key>
            <true/>
            <key>ExecutablePath</key>
            <string></string>
            <key>MaxKernel</key>
            <string></string>
            <key>MinKernel</key>
            <string>19.0.0</string>
            <key>PlistPath</key>
            <string>Contents/Info.plist</string>
          </dict>
          {{- if .Values.macos.kexts.add }} 
          {{- range .Values.macos.kexts.kextsToAdd }}
          <dict>
            <key>Arch</key>
            <string>Any</string>
            <key>BundlePath</key>
            <string>{{ .name }}</string>
            <key>Comment</key>
            <string></string>
            <key>Enabled</key>
            <true/>
            <key>ExecutablePath</key>
            <string>{{ .executablePath }}</string>
            <key>MaxKernel</key>
            <string></string>
            <key>MinKernel</key>
            <string></string>
            <key>PlistPath</key>
            <string>{{ .plistPath }}</string>
          </dict>
          {{- end }}
          {{- end }}
        </array>
        <key>Block</key>
        <array>
          <dict>
            <key>Arch</key>
            <string>Any</string>
            <key>Comment</key>
            <string></string>
            <key>Enabled</key>
            <false/>
            <key>Identifier</key>
            <string>com.apple.driver.AppleTyMCEDriver</string>
            <key>MaxKernel</key>
            <string></string>
            <key>MinKernel</key>
            <string></string>
          </dict>
        </array>
        <key>Emulate</key>
        <dict>
          {{- if .Values.qemu.hardwareGpu.enabled }}
          <key>Cpuid1Data</key>
          <data>
          VwYFAAAAAAAAAAAAAAAAAA==
          </data>
          <key>Cpuid1Mask</key>
          <data>
          /////wAAAAAAAAAAAAAAAA==
          </data>
          {{- else -}}
          <key>Cpuid1Data</key>
          <data>
          VAYFAAAAAAAAAAAAAAAAAA==
          </data>
          <key>Cpuid1Mask</key>
          <data>
          ////AAAAAAAAAAAAAAAAAA==
          </data>
          {{- end }}
        </dict>
        <key>Force</key>
        <array>
          {{- if .Values.qemu.hardwareGpu.enabled }}
          <dict>
            <key>Base</key>
            <string></string>
            <key>Comment</key>
            <string>algrey - cpuid_set_generic_info - disable check to allow leaf7</string>
            <key>Count</key>
            <integer>1</integer>
            <key>Enabled</key>
            <true/>
            <key>Find</key>
            <data>ADoPgg==</data>
            <key>Identifier</key>
            <string>kernel</string>
            <key>Limit</key>
            <integer>0</integer>
            <key>Mask</key>
            <data></data>
            <key>MaxKernel</key>
            <string>19.99.99</string>
            <key>MinKernel</key>
            <string>17.0.0</string>
            <key>Replace</key>
            <data>AAAPgg==</data>
            <key>ReplaceMask</key>
            <data></data>
            <key>Skip</key>
            <integer>0</integer>
          </dict>
          {{- else -}}
          <dict>
            <key>Arch</key>
            <string>Any</string>
            <key>BundlePath</key>
            <string>System/Library/Extensions/IONetworkingFamily.kext</string>
            <key>Comment</key>
            <string>Patch engine</string>
            <key>Enabled</key>
            <false/>
            <key>Identifier</key>
            <string>com.apple.iokit.IONetworkingFamily</string>
            <key>ExecutablePath</key>
            <string>Contents/MacOS/IONetworkingFamily</string>
            <key>MaxKernel</key>
            <string>13.99.99</string>
            <key>MinKernel</key>
            <string></string>
            <key>PlistPath</key>
            <string>Contents/Info.plist</string>
          </dict>
          {{- end }}
        </array>
        <key>Patch</key>
        <array>
          {{- if .Values.qemu.hardwareGpu.enabled }}
          <dict>
            <key>Base</key>
            <string>_cpu_topology_sort</string>
            <key>Comment</key>
            <string>algrey - cpu_topology_sort -disable _x86_validate_topology</string>
            <key>Count</key>
            <integer>1</integer>
            <key>Enabled</key>
            <true/>
            <key>Find</key>
            <data>6AAA//8=</data>
            <key>Identifier</key>
            <string>kernel</string>
            <key>Limit</key>
            <integer>0</integer>
            <key>Mask</key>
            <data>/wAA//8=</data>
            <key>MaxKernel</key>
            <string>19.99.99</string>
            <key>MinKernel</key>
            <string>17.0.0</string>
            <key>Replace</key>
            <data>Dx9EAAA=</data>
            <key>ReplaceMask</key>
            <data></data>
            <key>Skip</key>
            <integer>0</integer>
          </dict>
          {{- else -}}
          <dict>
            <key>Base</key>
            <string>_cpu_topology_sort</string>
            <key>Comment</key>
            <string>algrey - cpu_topology_sort -disable _x86_validate_topology</string>
            <key>Count</key>
            <integer>1</integer>
            <key>Enabled</key>
            <true/>
            <key>Find</key>
            <data>
            6AAA//8=
            </data>
            <key>Identifier</key>
            <string>kernel</string>
            <key>Limit</key>
            <integer>0</integer>
            <key>Mask</key>
            <data>
            /wAA//8=
            </data>
            <key>MaxKernel</key>
            <string>20.99.99</string>
            <key>MinKernel</key>
            <string>17.0.0</string>
            <key>Replace</key>
            <data>
            Dx9EAAA=
            </data>
            <key>ReplaceMask</key>
            <data>
            </data>
            <key>Skip</key>
            <integer>0</integer>
          </dict>
          {{- end }}
          <dict>
            <key>Base</key>
            <string></string>
            <key>Comment</key>
            <string>algrey - cpuid_set_cpufamily - force CPUFAMILY_INTEL_PENRYN</string>
            <key>Count</key>
            <integer>1</integer>
            <key>Enabled</key>
            <true/>
            {{- if .Values.qemu.hardwareGpu.enabled }}
            <key>Find</key>
            <data>
            MduAPQAAAAAGdQA=
            </data>
            <key>Identifier</key>
            <string>kernel</string>
            <key>Limit</key>
            <integer>0</integer>
            <key>Mask</key>
            <data>
            /////wAAAP///wA=
            </data>
            {{- else -}}
            <key>Find</key>
            <data>
            MduAPQAAAAAGdQA=
            </data>
            <key>Identifier</key>
            <string>kernel</string>
            <key>Limit</key>
            <integer>0</integer>
            <key>Mask</key>
            <data>
            /////wAAAP///wA=
            </data>
            {{- end }}
            <key>MaxKernel</key>
            <string>20.99.99</string>
            <key>MinKernel</key>
            <string>17.0.0</string>
            <key>Replace</key>
            <data>
            u7xP6njpXQAAAJA=
            </data>
            <key>ReplaceMask</key>
            <data>
            </data>
            <key>Skip</key>
            <integer>0</integer>
          </dict>
          {{- if .Values.qemu.hardwareGpu.enabled }}
          <dict>
            <key>Base</key>
            <string></string>
            <key>Comment</key>
            <string>algrey - - skip cpuid_cores_per_package test -10.15</string>
            <key>Count</key>
            <integer>0</integer>
            <key>Enabled</key>
            <true/>
            <key>Find</key>
            <data>gz0AAAAAAA8AAAAAAItdvA==</data>
            <key>Identifier</key>
            <string>kernel</string>
            <key>Limit</key>
            <integer>0</integer>
            <key>Mask</key>
            <data>//8AAAD///8AAAAA/////w==</data>
            <key>MaxKernel</key>
            <string>19.99.99</string>
            <key>MinKernel</key>
            <string>19.0.0</string>
            <key>Replace</key>
            <data>AAAAAAAAAQAAAAAAAAAAAA==</data>
            <key>ReplaceMask</key>
            <data>AAAAAAAADwAAAAAAAAAAAA==</data>
            <key>Skip</key>
            <integer>0</integer>
          </dict>
          <dict>
            <key>Base</key>
            <string></string>
            <key>Comment</key>
            <string>algrey - - skip cpuid_cores_per_package test</string>
            <key>Count</key>
            <integer>0</integer>
            <key>Enabled</key>
            <true/>
            <key>Find</key>
            <data>gz0AAAAAAHQAi128</data>
            <key>Identifier</key>
            <string>kernel</string>
            <key>Limit</key>
            <integer>0</integer>
            <key>Mask</key>
            <data>//8AAAD///8A////</data>
            <key>MaxKernel</key>
            <string>18.99.99</string>
            <key>MinKernel</key>
            <string>17.0.0</string>
            <key>Replace</key>
            <data>AAAAAAAAAQAAAAAA</data>
            <key>ReplaceMask</key>
            <data>AAAAAAAADwAAAAAA</data>
            <key>Skip</key>
            <integer>0</integer>
          </dict>
          {{- end }}
        </array>
        <key>Quirks</key>
        <dict>
          <key>AppleCpuPmCfgLock</key>
          <false/>
          <key>AppleXcpmCfgLock</key>
          <false/>
          <key>AppleXcpmExtraMsrs</key>
          <false/>
          <key>AppleXcpmForceBoost</key>
          <false/>
          <key>CustomSMBIOSGuid</key>
          <false/>
          <key>DisableIoMapper</key>
          <false/>
          <key>DisableLinkeditJettison</key>
          <true/>
          <key>DisableRtcChecksum</key>
          <false/>
          <key>DummyPowerManagement</key>
          <true/>
          <key>ExternalDiskIcons</key>
          <false/>
          <key>IncreasePciBarSize</key>
          <false/>
          <key>LapicKernelPanic</key>
          <false/>
          <key>PanicNoKextDump</key>
          <false/>
          <key>PowerTimeoutKernelPanic</key>
          <false/>
          <key>ThirdPartyDrives</key>
          <false/>
          <key>XhciPortLimit</key>
          <false/>
        </dict>
        <key>Scheme</key>
        {{- if not .Values.qemu.hardwareGpu.enabled }}
        <dict>
          <key>FuzzyMatch</key>
          <true/>
          <key>KernelArch</key>
          <string>x86_64</string>
          <key>KernelCache</key>
          <string>Auto</string>
        </dict>
        {{- end }}
      </dict>
      <key>Misc</key>
      <dict>
        <key>BlessOverride</key>
        <array/>
        <key>Boot</key>
        <dict>
          <key>ConsoleAttributes</key>
          <integer>0</integer>
          <key>HibernateMode</key>
          <string>Auto</string>
          <key>HideAuxiliary</key>
          <false/>
          <key>PickerAttributes</key>
          <integer>1</integer>
          <key>PickerVariant</key>
          <string>Modern</string>
          <key>PickerAudioAssist</key>
          <false/>
          <key>PickerMode</key>
          <string>External</string>
          <key>PollAppleHotKeys</key>
          <true/>
          <key>ShowPicker</key>
          <true/>
          <key>TakeoffDelay</key>
          <integer>0</integer>
          <key>Timeout</key>
          <integer>{{ .Values.macos.openCore.boot.timeout }}</integer>
        </dict>
        <key>Debug</key>
        <dict>
          <key>AppleDebug</key>
          <false/>
          <key>ApplePanic</key>
          <false/>
          <key>DisableWatchDog</key>
          <false/>
          <key>DisplayDelay</key>
          <integer>0</integer>
          <key>DisplayLevel</key>
          <integer>2147483650</integer>
          <key>SerialInit</key>
          <false/>
          <key>SysReport</key>
          <false/>
          <key>Target</key>
          <integer>3</integer>
        </dict>
        <key>Entries</key>
        <array/>
        <key>Security</key>
        <dict>
          <key>AllowNvramReset</key>
          <true/>
          <key>AllowSetDefault</key>
          <false/>
          <key>ApECID</key>
          <integer>0</integer>
          <key>AuthRestart</key>
          <false/>
          <key>BootProtect</key>
          <string>None</string>
          <key>DmgLoading</key>
          <string>Signed</string>
          <key>EnablePassword</key>
          <false/>
          <key>ExposeSensitiveData</key>
          <integer>6</integer>
          <key>HaltLevel</key>
          <integer>2147483648</integer>
          <key>PasswordHash</key>
          <data></data>
          <key>PasswordSalt</key>
          <data></data>
          <key>ScanPolicy</key>
          <integer>0</integer>
          <key>SecureBootModel</key>
          <string>Disabled</string>
          <key>Vault</key>
          <string>Optional</string>
        </dict>
        <key>Tools</key>
        <array>
          <dict>
            <key>Arguments</key>
            <string></string>
            <key>Auxiliary</key>
            <false/>
            <key>Comment</key>
            <string>Not signed for security reasons</string>
            <key>Enabled</key>
            <true/>
            <key>Name</key>
            <string>UEFI Shell</string>
            <key>Path</key>
            <string>OpenShell.efi</string>
          </dict>
          <dict>
            <key>Arguments</key>
            <string>Shutdown</string>
            <key>Auxiliary</key>
            <true/>
            <key>Comment</key>
            <string>Perform shutdown</string>
            <key>Enabled</key>
            <true/>
            <key>Name</key>
            <string>Shutdown</string>
            <key>Path</key>
            <string>ResetSystem.efi</string>
          </dict>
        </array>
      </dict>
      <key>NVRAM</key>
      <dict>
        <key>Add</key>
        <dict>
          <key>4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14</key>
          <dict>
            <key>DefaultBackgroundColor</key>
            <data>AAAAAA==</data>
            <key>UIScale</key>
            <data>AQ==</data>
          </dict>
          <key>4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
          <dict>
            <key>rtc-blacklist</key>
            <data></data>
          </dict>
          <key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
          <dict>
            <key>SystemAudioVolume</key>
            <data>Rg==</data>
            <key>boot-args</key>
            <string>{{ .Values.macos.configPlist.bootArgs }}</string>
            <key>run-efi-updater</key>
            <string>No</string>
            <key>csr-active-config</key>
            <data>ZwAAAA==</data>
            <key>prev-lang:kbd</key>
            <data>ZW4tVVM6MA==</data>
          </dict>
        </dict>
        <key>Delete</key>
        <dict>
          <key>4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14</key>
          <array>
            <string>UIScale</string>
            <string>DefaultBackgroundColor</string>
          </array>
          <key>4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
          <array>
            <string>rtc-blacklist</string>
          </array>
          <key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
          <array>
            <string>boot-args</string>
          </array>
        </dict>
        <key>LegacyEnable</key>
        <false/>
        <key>LegacyOverwrite</key>
        <false/>
        <key>LegacySchema</key>
        <dict>
          <key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
          <array>
            <string>EFILoginHiDPI</string>
            <string>EFIBluetoothDelay</string>
            <string>LocationServicesEnabled</string>
            <string>SystemAudioVolume</string>
            <string>SystemAudioVolumeDB</string>
            <string>SystemAudioVolumeSaved</string>
            <string>bluetoothActiveControllerInfo</string>
            <string>bluetoothInternalControllerInfo</string>
            <string>flagstate</string>
            <string>fmm-computer-name</string>
            <string>nvda_drv</string>
            <string>prev-lang:kbd</string>
          </array>
          <key>8BE4DF61-93CA-11D2-AA0D-00E098032B8C</key>
          <array>
            <string>Boot0080</string>
            <string>Boot0081</string>
            <string>Boot0082</string>
            <string>BootNext</string>
            <string>BootOrder</string>
          </array>
        </dict>
        <key>WriteFlash</key>
        <true/>
      </dict>
      <key>PlatformInfo</key>
      <dict>
        <key>Automatic</key>
        <true/>
        <key>Generic</key>
        <dict>
          <key>AdviseWindows</key>
          <false/>
          <key>MLB</key>
          <string>{{ .Values.macos.configPlist.MLB }}</string>
          <key>ROM</key>
          <data>
          m7zhIYfl
          </data>
          <key>SpoofVendor</key>
          <true/>
          <key>SystemProductName</key>
          <string>{{ .Values.macos.configPlist.SystemProductName }}</string>
          <key>SystemSerialNumber</key>
          <string>{{ .Values.macos.configPlist.SystemSerialNumber }}</string>
          <key>SystemUUID</key>
          <string>{{ .Values.macos.configPlist.SystemUUID }}</string>
        </dict>
        <key>UpdateDataHub</key>
        <true/>
        <key>UpdateNVRAM</key>
        <true/>
        <key>UpdateSMBIOS</key>
        <true/>
        <key>UpdateSMBIOSMode</key>
        <string>Create</string>
      </dict>
      <key>UEFI</key>
      <dict>
        <key>APFS</key>
        <dict>
          <key>EnableJumpstart</key>
          <true/>
          <key>GlobalConnect</key>
          <false/>
          <key>HideVerbose</key>
          <true/>
          <key>JumpstartHotPlug</key>
          <false/>
          <key>MinDate</key>
          <integer>-1</integer>
          <key>MinVersion</key>
          <integer>-1</integer>
        </dict>
        <key>Audio</key>
        <dict>
          <key>AudioCodec</key>
          <integer>0</integer>
          <key>AudioDevice</key>
          <string>PciRoot(0x1)/Pci(0x1,0x0)/Pci(0x0,0x1)</string>
          <key>AudioOut</key>
          <integer>0</integer>
          <key>AudioSupport</key>
          <false/>
          <key>MinimumVolume</key>
          <integer>20</integer>
          <key>PlayChime</key>
          <false/>
          <key>VolumeAmplifier</key>
          <integer>0</integer>
        </dict>
        <key>ConnectDrivers</key>
        <true/>
        <key>Drivers</key>
        <array>
          <string>VBoxHfs.efi</string>
          <string>OpenRuntime.efi</string>
          <string>OpenCanopy.efi</string>
          <string>#AudioDxe.efi</string>
          <string>#OpenUsbKbDxe.efi</string>
          <string>#UsbMouseDxe.efi</string>
          <string>#Ps2KeyboardDxe.efi</string>
          <string>#Ps2MouseDxe.efi</string>
          <string>#HiiDatabase.efi</string>
          <string>#NvmExpressDxe.efi</string>
          <string>#XhciDxe.efi</string>
          <string>#ExFatDxe.efi</string>
          <string>#PartitionDxe.efi</string>
          <string>#CrScreenshotDxe.efi</string>
        </array>
        <key>Input</key>
        <dict>
          <key>KeyFiltering</key>
          <false/>
          <key>KeyForgetThreshold</key>
          <integer>5</integer>
          <key>KeyMergeThreshold</key>
          <integer>2</integer>
          <key>KeySupport</key>
          <true/>
          <key>KeySupportMode</key>
          <string>Auto</string>
          <key>KeySwap</key>
          <false/>
          <key>PointerSupport</key>
          <false/>
          <key>PointerSupportMode</key>
          <string>ASUS</string>
          <key>TimerResolution</key>
          <integer>50000</integer>
        </dict>
        <key>Output</key>
        <dict>
          <key>ClearScreenOnModeSwitch</key>
          <false/>
          <key>ConsoleMode</key>
          <string></string>
          <key>DirectGopRendering</key>
          <false/>
          <key>IgnoreTextInGraphics</key>
          <false/>
          <key>ProvideConsoleGop</key>
          <true/>
          <key>ReconnectOnResChange</key>
          <false/>
          <key>ReplaceTabWithSpace</key>
          <false/>
          <key>Resolution</key>
          <string>{{ .Values.vnc.resolution }}</string>
          <key>SanitiseClearScreen</key>
          <false/>
          <key>TextRenderer</key>
          <string>BuiltinGraphics</string>
          <key>UgaPassThrough</key>
          <false/>
        </dict>
        <key>ProtocolOverrides</key>
        <dict>
          <key>AppleAudio</key>
          <false/>
          <key>AppleBootPolicy</key>
          <false/>
          <key>AppleDebugLog</key>
          <false/>
          <key>AppleEvent</key>
          <false/>
          <key>AppleFramebufferInfo</key>
          <false/>
          <key>AppleImageConversion</key>
          <false/>
          <key>AppleImg4Verification</key>
          <false/>
          <key>AppleKeyMap</key>
          <false/>
          <key>AppleRtcRam</key>
          <false/>
          <key>AppleSecureBoot</key>
          <false/>
          <key>AppleSmcIo</key>
          <false/>
          <key>AppleUserInterfaceTheme</key>
          <false/>
          <key>DataHub</key>
          <false/>
          <key>DeviceProperties</key>
          <false/>
          <key>FirmwareVolume</key>
          <false/>
          <key>HashServices</key>
          <false/>
          <key>OSInfo</key>
          <false/>
          <key>UnicodeCollation</key>
          <false/>
        </dict>
        <key>Quirks</key>
        <dict>
          <key>DeduplicateBootOrder</key>
          <true/>
          <key>ExitBootServicesDelay</key>
          <integer>0</integer>
          <key>IgnoreInvalidFlexRatio</key>
          <false/>
          <key>ReleaseUsbOwnership</key>
          <false/>
          <key>RequestBootVarRouting</key>
          <true/>
          <key>TscSyncTimeout</key>
          <integer>0</integer>
          <key>UnblockFsConnect</key>
          <false/>
        </dict>
      </dict>
    </dict>
    </plist>
  Launch_custom.sh: |-
    #/bin/sh

    # Add extra kexts to EFI/OC/kexts
    {{- if .Values.macos.kexts.add }}
    {{- range .Values.macos.kexts.kextsToAdd }}
    {{- $rangeItem := . -}}
    {{- with $ }}
    echo 'Installing kext {{ $rangeItem.name }}..'
    cp -r "{{ .Values.macos.kexts.path }}/{{ $rangeItem.name }}" /home/{{ .Values.image.userName }}/OSX-KVM/OpenCore-Catalina/EFI/OC/Kexts/
    sudo chmod 755 /home/{{ .Values.image.userName }}/OSX-KVM/OpenCore-Catalina/EFI/OC/Kexts/{{ $rangeItem.name }} 
    {{- end }}
    {{- end }}
    {{- end }}

    # Rebuild Opencore.qcow2 after making changes to config.plist and etc..
    {{- if .Values.macos.openCore.rebuild }}
    echo 'Building new Opencore.qcow2..'
    pushd OpenCore-Catalina/
    mkdir -p EFI/OC/Resources
    rm -f OpenCore.qcow2
    sudo ./opencore-image-ng.sh \
      --cfg config.plist \
      --img OpenCore.qcow2
    sudo chown {{ .Values.image.userName }}:{{ .Values.image.userName }} OpenCore.qcow2
    popd
    {{- end }}

    if ! [ -d "{{ .Values.macos.installerSettings.path }}" ]; then
      mkdir -p {{ .Values.macos.installerSettings.path }}
    fi

    if ! [ -d "/system_image/{{ .Values.serverName }}" ]; then
      mkdir -p "/system_image/{{ .Values.serverName }}"
    fi

    # Download and build installer image if no system drive found..
    if ! [ -f "{{ .Values.macos.installerSettings.path }}/BaseSystem{{ .Values.macos.installerSettings.version }}.img" ]; then
      echo "Downloading {{ .Values.macos.installerSettings.version }} base image.."
      python fetch-macOS.py --version {{ .Values.macos.installerSettings.version }}
      echo 'Converting downloaded BaseSystem.dmg into BaseSystem{{ .Values.macos.installerSettings.version }}.img and saving in {{ .Values.qemu.systemInstaller.path }}'
      qemu-img convert BaseSystem.dmg -O qcow2 -p -c {{ .Values.macos.installerSettings.path }}/BaseSystem{{ .Values.qemu.systemInstaller.version }}.img
      rm -f BaseSystem.dmg
    else
      echo 'Base Image downloaded and converted into img already..'
    fi

    if ! [ -f "/system_image/{{ .Values.serverName }}/mac_hdd_ng.img" ]; then
      echo "Creating a {{ .Values.qemu.systemDisk.size }} /system_image/{{ .Values.serverName }}/mac_hdd_ng.img for system partition.."
      qemu-img create -f qcow2 /system_image/{{ .Values.serverName }}/mac_hdd_ng.img "{{ .Values.qemu.systemDisk.size }}"
      echo 'Finished creating system partition!'
    else
      echo 'Image already created. Skipping creation..'
    fi

    # # Fix permissions on usb devices..
    # {{- if .Values.qemu.usb }}
    # {{- range .Values.qemu.usb }}
    # echo "Updating permissions to r/w for /dev/bus/usb/$(lsusb | grep {{ .vendorId}}:{{ .productId }} | grep -o -P 'Bus.{0,4}' | tail -c 4)/$(lsusb | grep {{ .vendorId}}:{{ .productId }} | grep -o -P 'Device.{0,4}' | tail -c 4).."
    # sudo chmod 666 /dev/bus/usb/$(lsusb | grep {{ .vendorId}}:{{ .productId }} | grep -o -P 'Bus.{0,4}' | tail -c 4)/$(lsusb | grep {{ .vendorId}}:{{ .productId }} | grep -o -P 'Device.{0,4}' | tail -c 4)
    # {{- end }}
    # {{- end }}

    # Start VNC..
    {{- if .Values.vnc.enabled }}
    echo 'geometry={{ .Values.vnc.resolution }}
    localhost
    alwaysshared' > ~/.vnc/config

    sudo rm -f /tmp/.X99-lock
    export DISPLAY=:99
    vncpasswd -f < vncpasswd_file > ${HOME}/.vnc/passwd
    /usr/bin/Xvnc -geometry {{ .Values.vnc.resolution }} -rfbauth "${HOME}/.vnc/passwd" :99 &\
    sudo chmod 600 ~/.vnc/passwd
    {{- end }}

    sudo chown {{ .Values.image.userName }}:{{ .Values.image.userName }} /dev/kvm
    {{- if .Values.qemu.hardwareGpu.enabled }}
    sudo chown {{ .Values.image.userName }}:{{ .Values.image.userName }} -R /dev/vfio
    {{- end }}

    # Start QEMU..
    echo 'Starting QEMU..'
    set -eu
    sudo chown    $(id -u):$(id -g) /dev/kvm 2>/dev/null || true
    sudo chown -R $(id -u):$(id -g) /dev/snd 2>/dev/null || true
    exec qemu-system-x86_64 -m {{ .Values.resources.requests.memory | trimSuffix "i" }} \
      -cpu {{ .Values.qemu.cpu }} \
      -machine q35,accel=kvm:tcg \
      {{- if .Values.qemu.hardwareGpu.enabled }}
          -device pcie-root-port,bus=pcie.0,multifunction=on,port=1,chassis=1,id=port.1 \
          {{- if .Values.qemu.hardwareGpu.romfile }}
            -device vfio-pci,host={{ .Values.qemu.hardwareGpu.hardwareId }}.0,bus=port.1,multifunction=on,romfile={{ .Values.qemu.hardwareGpu.romfile}} \
          {{- else -}}
            -device vfio-pci,host={{ .Values.qemu.hardwareGpu.hardwareId }}.0,multifunction=on \
          {{- end }}
          -device vfio-pci,host={{ .Values.qemu.hardwareGpu.hardwareId }}.1,bus=port.1 \
        {{- else -}}
          -vga {{ .Values.qemu.softwareGpu }} \
      {{- end }}
      -smp {{ .Values.resources.requests.cpu }},cores={{ .Values.resources.requests.cpu }} \
      {{- if .Values.vnc.enabled }}
        -usb -device usb-kbd -device usb-tablet \
      {{- else -}}
        -vga none \
        -display none \
      {{- end }}
      -device isa-applesmc,osk=ourhardworkbythesewordsguardedpleasedontsteal\(c\)AppleComputerInc \
      -drive if=pflash,format=raw,readonly,file=/home/{{ .Values.image.userName }}/OSX-KVM/OVMF_CODE.fd \
      -drive if=pflash,format=raw,file=/home/{{ .Values.image.userName }}/OSX-KVM/OVMF_VARS-1024x768.fd \
      -smbios type=2 \
      {{- if .Values.qemu.audio.enabled }}
        -audiodev {{ .Values.qemu.audio.driver }},id=hda \
        -device ich9-intel-hda \
        -device hda-duplex,audiodev=hda \
      {{- end }}
      -device ich9-ahci,id=sata \
      -drive id=OpenCoreBoot,if=none,snapshot=on,format=qcow2,file=/home/{{ .Values.image.userName }}/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2 \
      -device ide-hd,bus=sata.2,drive=OpenCoreBoot \
      {{- if .Values.qemu.systemInstaller.enabled }}
        -device ide-hd,bus=sata.3,drive=InstallMedia \
        -drive id=InstallMedia,if=none,file={{ .Values.macos.installerSettings.path }}/BaseSystem{{ .Values.macos.installerSettings.version }}.img,format=qcow2 \
      {{- end }}
      -drive id=MacHDD,if=none,file=/system_image/{{ .Values.serverName }}/mac_hdd_ng.img,format=qcow2 \
      -device ide-hd,bus=sata.4,drive=MacHDD \
      -netdev user,id=net0,hostfwd=tcp::${INTERNAL_SSH_PORT:-10022}-:22,hostfwd=tcp::${SCREEN_SHARE_PORT:-5900}-:5900,{{ .Values.qemu.netdev.extraPortForwarding }} \
      -device e1000-82545em,netdev=net0,id=net0,mac=52:54:00:09:49:17 \
      {{- range .Values.qemu.usb }}
        -usb -device usb-host,productid=0x{{ .productId }},vendorid=0x{{ .vendorId }} \
      {{- end }}
      {{- range .Values.qemu.extraArgs }}
        {{ . }} \
      {{- end }}
      ${EXTRA:-}
  vncpasswd_file: |-
    {{ .Values.vnc.password }}
  limits.conf: |-
    #This file sets the resource limits for the users logged in via PAM.
    #It does not affect resource limits of the system services.
    #
    #Also note that configuration files in /etc/security/limits.d directory,
    #which are read in alphabetical order, override the settings in this
    #file in case the domain is the same or more specific.
    #That means, for example, that setting a limit for wildcard domain here
    #can be overriden with a wildcard setting in a config file in the
    #subdirectory, but a user specific setting here can be overriden only
    #with a user specific setting in the subdirectory.
    #
    #Each line describes a limit for a user in the form:
    #
    #<domain>        <type>  <item>  <value>
    #
    #Where:
    #<domain> can be:
    #        - a user name
    #        - a group name, with @group syntax
    #        - the wildcard *, for default entry
    #        - the wildcard %, can be also used with %group syntax,
    #                 for maxlogin limit
    #
    #<type> can have the two values:
    #        - "soft" for enforcing the soft limits
    #        - "hard" for enforcing hard limits
    #
    #<item> can be one of the following:
    #        - core - limits the core file size (KB)
    #        - data - max data size (KB)
    #        - fsize - maximum filesize (KB)
    #        - memlock - max locked-in-memory address space (KB)
    #        - nofile - max number of open file descriptors
    #        - rss - max resident set size (KB)
    #        - stack - max stack size (KB)
    #        - cpu - max CPU time (MIN)
    #        - nproc - max number of processes
    #        - as - address space limit (KB)
    #        - maxlogins - max number of logins for this user
    #        - maxsyslogins - max number of logins on the system
    #        - priority - the priority to run user process with
    #        - locks - max number of file locks the user can hold
    #        - sigpending - max number of pending signals
    #        - msgqueue - max memory used by POSIX message queues (bytes)
    #        - nice - max nice priority allowed to raise to values: [-20, 19]
    #        - rtprio - max realtime priority
    #
    #<domain>      <type>  <item>         <value>
    #

    #*               soft    core            0
    #*               hard    rss             10000
    #@student        hard    nproc           20
    #@faculty        soft    nproc           20
    #@faculty        hard    nproc           50
    #ftp             hard    nproc           0
    #@student        -       maxlogins       4
    @{{ .Values.image.userName }}            soft    memlock         unlimited
    @{{ .Values.image.userName }}            hard    memlock         unlimited

    # End of file
