66 lines
1.3 KiB
Nix
66 lines
1.3 KiB
Nix
{
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
|
|
let
|
|
passthru = [
|
|
"1002:164e" # Raphael - embedded GPU
|
|
"1002:1640" # Rembrandt - Audio
|
|
#"10de:2507" # RTX 3050 video
|
|
#"10de:228e" # RTX 3050 audio
|
|
];
|
|
in
|
|
{
|
|
# These options enable sharing of the GPU with the VM
|
|
boot = {
|
|
# Order matters here, to prevent the AMD driver from getting to the driver before
|
|
# vfio-pci does
|
|
initrd.kernelModules = [
|
|
"vfio_pci"
|
|
"vfio"
|
|
"vfio_iommu_type1"
|
|
|
|
#"amdgpu"
|
|
#"nvidia"
|
|
#"nvidia_modeset"
|
|
#"nvidia_uvm"
|
|
#"nvidia_drm"
|
|
];
|
|
kernelParams = [
|
|
"amd_iommu=on"
|
|
"iommu=pt"
|
|
("vfio-pci.ids=" + (lib.concatStringsSep "," passthru))
|
|
];
|
|
};
|
|
|
|
hardware.graphics.enable = true;
|
|
|
|
systemd.services = {
|
|
"libvirt-nosleep@" = {
|
|
description = "Prevent sleep while %i is running";
|
|
serviceConfig = {
|
|
Type = "simple";
|
|
ExecStart = ''
|
|
${pkgs.systemd}/bin/systemd-inhibit --what=sleep --why="Libvirt domain %i is running" --who=%U --mode=block sleep infinity
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
|
|
virtualisation = {
|
|
libvirtd = {
|
|
extraConfig = ''
|
|
log_filters="1:qemu"
|
|
log_outputs="1:file:/var/log/libvirt/libvirtd.log"
|
|
'';
|
|
hooks.qemu = {
|
|
win10 = lib.getExe pkgs.qemu-hook;
|
|
};
|
|
};
|
|
|
|
spiceUSBRedirection.enable = true;
|
|
};
|
|
}
|