feat: kernel 6.13, emily's custom udev rule for passing through devices to vm, various app changes

This commit is contained in:
Evar 2025-01-31 22:38:03 -05:00
parent 9ac1768033
commit 3120f90b5d
8 changed files with 129 additions and 37 deletions

View file

@ -31,6 +31,41 @@ in {
config = let cfg = config.vfio;
in {
# Move me
services.udev.packages = [
(
let
virsh = "${config.virtualisation.libvirtd.package}/bin/virsh";
updateBin = pkgs.writeShellScript "vm-pass-usb-update.sh" ''
# todo param
vm_name="win10"
read -r -d ''\'''\' xml_template <<'EOF'
<hostdev mode='subsystem' type='usb' managed='no'>
<source>
<address bus='%s' device='%s'/>
</source>
</hostdev>
EOF
BUSNUM=$((10#$BUSNUM))
DEVNUM=$((10#$DEVNUM))
if test "$ACTION" = "add"
then
printf "$xml_template" "$BUSNUM" "$DEVNUM" | \
${virsh} attach-device --persistent -- "$vm_name" /dev/stdin
elif test "$ACTION" = "remove"
then
printf "$xml_template" "$BUSNUM" "$DEVNUM" | \
${virsh} detach-device --persistent -- "$vm_name" /dev/stdin
fi
'';
in
pkgs.writeTextDir "/lib/udev/rules.d/99-vm-attach-usb-anker-hub.rules" ''
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="5411", ATTR{idVendor}!="0bda", ATTR{idProduct}!="5411", RUN+="${updateBin}"
SUBSYSTEM=="usb", ACTION=="remove", RUN+="${updateBin}"
''
)
];
# Useful:
# https://nixos.mayflower.consulting/blog/2020/06/17/windows-vm-performance/