Files
nixos/hosts/zeke/virt.nix
T

67 lines
1.4 KiB
Nix
Raw Normal View History

2025-01-07 10:58:24 -06:00
{
lib,
pkgs,
...
}:
2022-05-04 13:52:38 -05:00
2025-01-07 10:58:24 -06:00
let
passthru = [
"1002:164e" # Raphael - embedded GPU
"1002:1640" # Rembrandt - Audio
#"10de:2507" # RTX 3050 video
#"10de:228e" # RTX 3050 audio
];
in
2022-05-04 13:52:38 -05:00
{
2025-07-29 23:13:10 -05:00
greg.runner.enable = true;
2025-01-07 10:58:24 -06:00
# 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"
2025-01-08 08:05:24 -06:00
#"amdgpu"
2025-01-07 10:58:24 -06:00
#"nvidia"
#"nvidia_modeset"
#"nvidia_uvm"
#"nvidia_drm"
];
kernelParams = [
"amd_iommu=on"
2025-01-08 08:05:24 -06:00
"iommu=pt"
2025-01-07 10:58:24 -06:00
("vfio-pci.ids=" + (lib.concatStringsSep "," passthru))
];
};
2025-05-21 22:25:11 -05:00
hardware.graphics.enable = true;
2025-01-07 10:58:24 -06:00
systemd.services = {
2025-01-09 10:15:55 -06:00
"libvirt-nosleep@" = {
2025-01-08 08:05:24 -06:00
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
'';
};
};
2025-01-07 10:58:24 -06:00
};
virtualisation = {
2025-01-08 08:05:24 -06:00
libvirtd = {
extraConfig = ''
log_filters="1:qemu"
log_outputs="1:file:/var/log/libvirt/libvirtd.log"
'';
hooks.qemu = {
win10 = lib.getExe pkgs.qemu-hook;
2025-01-07 10:58:24 -06:00
};
2025-01-08 08:05:24 -06:00
};
2025-01-07 10:58:24 -06:00
spiceUSBRedirection.enable = true;
2024-12-10 09:57:19 -06:00
};
2022-05-04 13:52:38 -05:00
}