Let’s dig into some blogs first,

Setup

first pacman,

sudo pacman -S qemu-full virt-manager virt-viewer libvirt dnsmasq edk2-ovmf swtpm iptables-nft
PackagePurpose
qemu-fullComplete QEMU installation with all architecture support and features (x86, ARM, etc.)
virt-managerGTK-based graphical interface for creating and managing virtual machines
virt-viewerConsole viewer for connecting to VM displays (SPICE/VNC)
libvirtVirtualization management daemon and API – the glue that ties KVM and QEMU together
dnsmasqLightweight DHCP and DNS server for NAT-based VM networking
edk2-ovmfUEFI firmware for virtual machines – required for UEFI-boot VMs and Secure Boot
swtpmSoftware TPM 2.0 emulator – needed for Windows 11 VMs and TPM-dependent operating systems
iptables-nftFirewall backend that libvirt uses to set up NAT networking rules

One thing worth mentioning: the old bridge-utils package is no longer needed on current Arch installations. Bridge creation is handled by iproute2, which is already part of the base system.

then start the service,

sudo systemctl enable --now libvirtd

user to the group

sudo usermod -aG libvirt $(whoami)

Configure the Default NAT Network

well you sure can do it from the virtual machine manager as well, so it’s k inda optional

sudo virsh net-start default
sudo virsh net-autostart default

Enabling Nested Virtualization

Nested virtualization lets you run VMs inside VMs. This is useful for testing hypervisors, running Kubernetes clusters with KVM nodes, or developing virtualization-related software. To enable it permanently, create a modprobe configuration file.

For Intel CPUs:

echo "options kvm_intel nested=1" | sudo tee /etc/modprobe.d/kvm-intel.conf

For AMD CPUs:

echo "options kvm_amd nested=1" | sudo tee /etc/modprobe.d/kvm-amd.conf

Reboot for the change to take effect, then verify nested virtualization is enabled:

cat /sys/module/kvm_intel/parameters/nested

The output should be Y or 1, confirming nested virtualization is active.

Changing default storage pool

you can use virtual machine manager to do so with GUI