diff --git a/modules/assertions.nix b/modules/assertions.nix index 9b2a5ef..eed938b 100644 --- a/modules/assertions.nix +++ b/modules/assertions.nix @@ -182,6 +182,24 @@ in ) effectiveSharedDirs ) ) (lib.attrValues cfg.nixosVms) + # USB device assertions: no duplicate VID:PID+serial across VMs + ++ ( + let + allUsbDeviceKeys = lib.concatMap ( + vm: + map ( + dev: + "${dev.vendorId}:${dev.productId}:${toString (dev.serial or "")}" + ) vm.usbDevices + ) (lib.attrValues cfg.nixosVms); + in + [ + { + assertion = lib.length allUsbDeviceKeys == lib.length (lib.unique allUsbDeviceKeys); + message = "USB devices (VID:PID+serial) cannot be assigned to multiple VMs"; + } + ] + ) # netvm: network.netvm must reference a VM with isNetvm = true (skip for "host") ++ lib.concatMap ( vm: