Add NixVirt support and GPU passthrough configuration
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
# 14900k: RTX 2070 VFIO passthrough + Windows 11 gaming VM on Crucial MX500.
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
cfg = config.chiasson.system.gpuPassthru;
|
||||
in
|
||||
{
|
||||
chiasson.system.gpuPassthru = {
|
||||
enable = false;
|
||||
pciIds = [
|
||||
"10de:1f07" # RTX 2070 VGA
|
||||
"10de:10f9" # HDMI audio
|
||||
"10de:1ada" # USB 3.1
|
||||
"10de:1adb" # USB-C UCSI
|
||||
"14c3:7927" # MediaTek MT7927 WiFi (M.2, no Linux driver — Windows only)
|
||||
];
|
||||
windowsDisk = "/dev/disk/by-id/ata-CT1000MX500SSD1_1830E14B054A";
|
||||
lookingGlass = {
|
||||
enable = true;
|
||||
shmSizeMiB = 32;
|
||||
captureOnFocus = false;
|
||||
};
|
||||
vm = {
|
||||
enable = true;
|
||||
name = "win11";
|
||||
memoryGiB = 16;
|
||||
vcpus = 8;
|
||||
installMode = false;
|
||||
};
|
||||
libvirtUsers = [ "olivier" ];
|
||||
};
|
||||
|
||||
chiasson.desktop.niri.extraBinds = lib.mkIf (cfg.enable && cfg.lookingGlass.enable) {
|
||||
"Mod+J"."spawn-sh" = "looking-glass-toggle";
|
||||
};
|
||||
|
||||
# Applied last in configuration.nix imports — wins over system module defaults.
|
||||
virtualisation.libvirtd.qemu.verbatimConfig = lib.mkIf (cfg.lookingGlass.enable) (
|
||||
lib.mkForce ''
|
||||
namespaces = []
|
||||
seccomp_sandbox = 0
|
||||
security_driver = "none"
|
||||
security_default_confined = 0
|
||||
security_require_confined = 0
|
||||
cgroup_device_acl = [
|
||||
"/dev/null", "/dev/full", "/dev/zero",
|
||||
"/dev/random", "/dev/urandom",
|
||||
"/dev/ptmx", "/dev/kvm", "/dev/kqemu",
|
||||
"/dev/rtc", "/dev/hpet",
|
||||
"/dev/vfio/", "/dev/vfio/vfio",
|
||||
"/dev/kvmfr0", "c 234:* rwm",
|
||||
"/dev/disk/", "/dev/disk/by-id/",
|
||||
"/dev/bus/usb/",
|
||||
]
|
||||
''
|
||||
);
|
||||
|
||||
virtualisation.libvirt = lib.mkIf (cfg.enable && cfg.vm.enable) {
|
||||
enable = true;
|
||||
swtpm.enable = true;
|
||||
connections."qemu:///system".domains = [
|
||||
{
|
||||
definition =
|
||||
if cfg.vm.installMode then
|
||||
./win11-domain-install.xml
|
||||
else
|
||||
./win11-domain.xml;
|
||||
active = false;
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user