<!--
{
  "availability" : [
    "macOS: 12.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Virtualization",
  "identifier" : "/documentation/Virtualization/VZMacHardwareModel",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Virtualization"
    ],
    "preciseIdentifier" : "c:objc(cs)VZMacHardwareModel"
  },
  "title" : "VZMacHardwareModel"
}
-->

# VZMacHardwareModel

A specification for the hardware elements and configurations present in a particular Mac hardware model.

```
class VZMacHardwareModel
```

## Overview

The Mac hardware model abstracts a set of virtualized hardware elements and configurations.

A version of macOS may only run on certain hardware models. Additionally, the host may also only provide certain hardware models based on the version of macOS and the underlying hardware.

The [`isSupported`](/documentation/Virtualization/VZMacHardwareModel/isSupported) property allows you to discover if the current host supports a particular hardware model.

Choosing the hardware model starts from a restore image with [`VZMacOSRestoreImage`](/documentation/Virtualization/VZMacOSRestoreImage). A restore image describes its supported configuration requirements through its [`mostFeaturefulSupportedConfiguration`](/documentation/Virtualization/VZMacOSRestoreImage/mostFeaturefulSupportedConfiguration) property.

A configuration requirements object has a corresponding hardware model that you can use to configure a VM that meets the requirements. After obtaining the hardware model, use the platform configuration’s [`hardwareModel`](/documentation/Virtualization/VZMacPlatformConfiguration/hardwareModel) to configure the Mac platform object and use [`init(creatingStorageAt:hardwareModel:options:)`](/documentation/Virtualization/VZMacAuxiliaryStorage/init(creatingStorageAt:hardwareModel:options:)) to create its auxiliary storage.

After creating the VM, use [`VZMacOSInstaller`](/documentation/Virtualization/VZMacOSInstaller) to install macOS on it.

If you serialize the VM on disk, preserve the hardware model used for installation for subsequent boots. The [`dataRepresentation`](/documentation/Virtualization/VZMacHardwareModel/dataRepresentation) property provides a unique binary representation that you serialize to the file system. You can recreate the hardware model from the serialized binary representation with [`init(dataRepresentation:)`](/documentation/Virtualization/VZMacHardwareModel/init(dataRepresentation:)).

## Topics

### Creating the hardware model

[`init(dataRepresentation:)`](/documentation/Virtualization/VZMacHardwareModel/init(dataRepresentation:))

Creates an instance of the hardware model described by the specified data representation.

### Configuring the hardware model

[`dataRepresentation`](/documentation/Virtualization/VZMacHardwareModel/dataRepresentation)

Returns the opaque data representation of the hardware model.

[`isSupported`](/documentation/Virtualization/VZMacHardwareModel/isSupported)

A Boolean value that indicates whether the host supports this hardware model.

## See Also

[`VZMacOSInstaller`](/documentation/Virtualization/VZMacOSInstaller)

An object you use to install macOS on the specified virtual machine.

[`VZMacOSRestoreImage`](/documentation/Virtualization/VZMacOSRestoreImage)

An object that describes a version of macOS to install on to a virtual machine.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)