Conflicts may happen when installing the required packages on Arch Linux. The warnings will look like the below example in your terminal, about any number of packages.

iptables and iptables-nft are in conflict. Remove iptables? [y/N]

If you do encounter this kind of message, continue with Y and press enter to remove the conficting package and use the expected package instead.

To get started, we'll use the default Arch Linux package manager pacman to install varaious packages/software including but not limited to Virt-Manager and QEMU itself.

Package Description
tk GUI toolkit required by some Python submodules we will use.
git Version control system for managing repositories. This will be required to fetch DarwinKVM repository from Github.
ovmf UEFI firmware for virtual machines. Without this package, you cannot use UEFI on QEMU.
vde2 Virtual Distributed Ethernet for advanced networking.
dnsmasq Lightweight DHCP and DNS server for networking. Used by QEMU/libvirt for Networking.
nftables Next-generation packet filtering framework. Used by QEMU/libvirt for Networking.
ebtables Filtering tool for bridge and networking security. Used by QEMU/libvirt for Networking.
dosfstools Utilities for managing FAT/32 file systems. This is used for formatting our images.
bridge-utils Tools for configuring network bridges. Will be useful later on in advanced configurations.
qemu-tools Additional utilities for QEMU, and more specifically DiskProvision.
base-devel Essential development tools for building packages.
virt-manager GUI-based virtual machine manager for QEMU and remote VMMs.
python-tqdm Progress bar utility for scripts and CLI applications. Used by Submodule packages, like DarwinFetch.
python-click Python library for creating command-line interfaces. Used by Submodule packages.
iptables-nft Modern firewall management with nftables backend. Used by QEMU/libvirt for Networking.
qemu-full Complete QEMU package including all emulation capabilities by including every available QEMU binary.

You can install all the necessary packages, using pacman by running the following command

sudo pacman -S git base-devel python-click python-tqdm virt-manager qemu-full vde2 ebtables iptables-nft nftables dnsmasq bridge-utils ovmf qemu-tools dosfstools tk     
For those interested in running macOS Mojave (10.14) or older

If you're interested in working with OS X / macOS releases prior to macOS Mojave (10.14), You will need to install the following package to use DarwinUDK's fork of OVMF in Virt-Manager and QEMU CLI. This build of OVMF was modified by the DarwinKVM team with -D LINUX_LOADER at compile time. Acidanthera's AUDK source code implements a new PE/COFF loader which can prevent the loading/execution of HfsPlusLegacy.efi which is required to create the MacPro5,1 configuration that DarwinKVM provides. This issue is not present in non-Acidanthera UEFI firmware, but we do use it here as the fork is based on AUDK, so this is a required step for the most vanilla configuration of Legacy OS X / macOS when it comes to properly loading via QEMU.

The flag sets the image protection policy. If a bit is set, the image will be protected by DxeCore if it is aligned. The code section becomes read-only, and the data section becomes non-executable (or non-bootable), leading to issues when trying to boot older OS X / macOS. The Policy required to allow legacy, non-aligned, non-signed Apple images such as HfsPlusLegacy.efi can be set in the DSC under Ovmf, but DarwinUDK simply compiles with the flag and provides you a precompiled package to install for ease of use on any Linux distribution.

To get started, cd to the extras folder at the root of DarwinKVM, and under the appropriate distribution folder to find the required package file under the DUDK-Firmware submodule.

cd extras/DUDK-Firmware/Arch

You'll now be able to use pacman to install the DUDK-Firmware package.

sudo pacman -U DUDK-Firmware-1.0.0-1-x86_64.pkg.tar.zst

You'll now be able to successfully import LegacyDarwinKVM.xml and use DUDK-Firmware in Virt-Manager! For those using CLI QEMU, you can find the firmware file at /usr/share/DarwinUDK/DUDK_CODE.fd and NVRAM at /usr/share/DarwinUDK/DUDK_VARS.fd

If you use any other package manager on Arch Linux, and would like to contribute to this page, please request a PR review for accelerated addition. It's understandable that some people may already be on an existing Arch Linux installation for a while now, and use entirely different package managers.




DarwinKVM Logo
DarwinKVM Docs Version 3.0.0~prerelease
Copyright © 2023, 2024, 2025 RoyalGraphX
Copyright © 2025 Carnations Botanica
Distributed by a BSD 3-Clause License
Last Modified: Thu, 9 Apr 2025 15:45:02 CDT
Carnations Logo