{ config, lib, pkgs, ... }: { environment.systemPackages = with pkgs; [ virt-manager ]; virtualisation.libvirtd = { enable = true; qemu.ovmf = { enable = true; packages = [ pkgs.OVMFFull ]; }; qemu.swtpm.enable = true; qemu.runAsRoot = false; onBoot = "ignore"; onShutdown = "shutdown"; qemu.vhostUserPackages = with pkgs; [ virtiofsd ]; hooks.qemu."qemu-hooks" = pkgs.writeShellScript "qemu-hooks" '' export PATH="${lib.makeBinPath [ pkgs.bash pkgs.xorg.xset pkgs.coreutils pkgs.util-linux pkgs.i3 pkgs.xorg.xrandr pkgs.ddcutil ]}:''$PATH" ${builtins.readFile ../../dotfiles/qemu/qemu-hooks } ''; }; virtualisation.spiceUSBRedirection.enable = true; programs.virt-manager.enable = true; users.groups.libvirtd.members = [ "${config.user}" ]; boot.kernelPackages = pkgs.linuxPackages_latest; boot.kernelParams = [ "amd_iommu=on" "pcie_aspm=off" ]; boot.kernelModules = [ "kvm-amd" ]; boot.initrd.availableKernelModules = [ "amdgpu" "vfio-pci" ]; boot.initrd.preDeviceCommands = '' DEVS="0000:06:00.0 0000:06:00.1" for DEV in $DEVS; do echo "vfio-pci" > /sys/bus/pci/devices/$DEV/driver_override done modprobe -i vfio-pci ''; }