{ config, lib, pkgs, ... }: let gpuIDs = [ # 2080 super "10de:1e81" # Graphics "10de:10f8" # Audio "10de:1ad8" # Usb ???? "10de:1ad9" # Usb ???? ]; in { boot = { kernelParams = [ # enable iommu "amd_iommu=on" # Isolate the nvidia gpu ("vfio-pci.ids=" + lib.concatStringsSep "," gpuIDs) ]; # Modules needed initrd.kernelModules = [ "vfio_pci" "vfio" "vfio_iommu_type1" ]; }; environment.systemPackages = with pkgs; [ looking-glass-client ]; virtualisation.spiceUSBRedirection.enable = true; virtualisation.libvirtd = { qemu = { swtpm.enable = true; ovmf = { enable = true; packages = [ pkgs.OVMFFull.fd ]; }; }; }; systemd.tmpfiles.rules = [ "f /dev/shm/looking-glass 0660 nathan qemu-libvirtd -" ]; ## ## Networking ## # Setup bridge networking.bridges = { "qemu-br0" = { interfaces = [ "enp6s0" ]; }; }; networking.interfaces.qemu-br0 = { ipv4.addresses = [{ address = "10.0.0.247"; prefixLength = 21; }]; }; networking.defaultGateway = "10.0.4.1"; networking.nameservers = [ "10.0.0.10" ]; }