52 lines
1.2 KiB
Nix
52 lines
1.2 KiB
Nix
{ pkgs, lib, pkgs-unstable, ... }: # https://olai.dev/blog/nvidia-vm-passthrough/
|
|
let
|
|
devices = [
|
|
"1002:7480" # Video
|
|
"1002:ab30" # Audio
|
|
];
|
|
in {
|
|
virtualisation.libvirtd = {
|
|
enable = true;
|
|
qemu.ovmf.enable = true;
|
|
onBoot = "ignore";
|
|
onShutdown = "shutdown";
|
|
};
|
|
|
|
programs.virt-manager.enable = true;
|
|
users.users.albert.extraGroups = [ "libvirtd" ];
|
|
environment.systemPackages = [
|
|
pkgs.virt-manager
|
|
pkgs.looking-glass-client
|
|
];
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"f /dev/shm/looking-glass 0660 albert libvirtd -"
|
|
];
|
|
|
|
boot.kernelParams = [
|
|
"vfio-pci.ids=${lib.concatStringsSep "," devices}"
|
|
"amd_iommu=on"
|
|
];
|
|
|
|
# Make the devices bind to VFIO
|
|
boot.initrd.kernelModules = [
|
|
"vfio_pci"
|
|
"vfio"
|
|
"vfio_iommu_type1"
|
|
];
|
|
|
|
# Blacklist the nvidia drivers to make sure they don't get loaded
|
|
boot.extraModprobeConfig = ''
|
|
softdep nvidia pre: vfio-pci
|
|
softdep drm pre: vfio-pci
|
|
softdep nouveau pre: vfio-pci
|
|
'';
|
|
boot.blacklistedKernelModules = [
|
|
"nouveau"
|
|
"nvidia"
|
|
"nvidia_drm"
|
|
"nvidia_modeset"
|
|
"i2c_nvidia_gpu"
|
|
];
|
|
virtualisation.spiceUSBRedirection.enable = true;
|
|
}
|