{ config, lib, pkgs, ... }: let cfg = config.custom.kernel.vfio; in { options.custom.kernel.vfio = { enable = lib.mkOption { type = lib.types.bool; default = true; }; }; config = lib.mkIf cfg.enable { boot = { extraModulePackages = [ config.boot.kernelPackages.kvmfr ]; extraModprobeConfig = '' options kvmfr static_size_mb=128 ''; kernelParams = [ "vfio-pci.ids=10de:2204,10de:1aef" ]; kernelModules = [ "kvmfr" ]; initrd.kernelModules = [ "kvmfr" "kvm-amd" "vfio_pci" "vfio_iommu_type1" "vfio" ]; }; services = { udev.extraRules = '' SUBSYSTEM=="kvmfr", OWNER="master", GROUP="kvm", MODE="0660" ''; }; environment.systemPackages = [ pkgs.looking-glass-client ]; }; }