diff --git a/nixos/modules/hardware/video/nvidia.nix b/nixos/modules/hardware/video/nvidia.nix index eb2db48d6fcd..068e23aa3347 100644 --- a/nixos/modules/hardware/video/nvidia.nix +++ b/nixos/modules/hardware/video/nvidia.nix @@ -17,7 +17,7 @@ let offloadCfg = pCfg.offload; reverseSyncCfg = pCfg.reverseSync; primeEnabled = syncCfg.enable || reverseSyncCfg.enable || offloadCfg.enable; - busIDType = lib.types.strMatching "([[:print:]]+[:@][0-9]{1,3}:[0-9]{1,2}:[0-9])?"; + busIDType = lib.types.strMatching "([[:print:]]+:[0-9]{1,3}(@[0-9]{1,10})?:[0-9]{1,2}:[0-9])?"; ibtSupport = useOpenModules || (nvidia_x11.ibtSupport or false); settingsFormat = pkgs.formats.keyValue { }; in @@ -120,30 +120,48 @@ in prime.nvidiaBusId = lib.mkOption { type = busIDType; default = ""; - example = "PCI:1:0:0"; + example = "PCI:1@0:0:0"; description = '' Bus ID of the NVIDIA GPU. You can find it using lspci; for example if lspci - shows the NVIDIA GPU at "01:00.0", set this option to "PCI:1:0:0". + shows the NVIDIA GPU at "0001:02:03.4", set this option to "PCI:2@1:3:4". + + lspci might omit the PCI domain (0001 in above example) if it is zero. + In which case, use "@0" instead. + + Please be aware that this option takes decimal address while lspci reports + hexadecimal address. So for device at domain "10000", use "@65536". ''; }; prime.intelBusId = lib.mkOption { type = busIDType; default = ""; - example = "PCI:0:2:0"; + example = "PCI:0@0:2:0"; description = '' Bus ID of the Intel GPU. You can find it using lspci; for example if lspci - shows the Intel GPU at "00:02.0", set this option to "PCI:0:2:0". + shows the Intel GPU at "0001:02:03.4", set this option to "PCI:2@1:3:4". + + lspci might omit the PCI domain (0001 in above example) if it is zero. + In which case, use "@0" instead. + + Please be aware that this option takes decimal address while lspci reports + hexadecimal address. So for device at domain "10000", use "@65536". ''; }; prime.amdgpuBusId = lib.mkOption { type = busIDType; default = ""; - example = "PCI:4:0:0"; + example = "PCI:4@0:0:0"; description = '' Bus ID of the AMD APU. You can find it using lspci; for example if lspci - shows the AMD APU at "04:00.0", set this option to "PCI:4:0:0". + shows the AMD APU at "0001:02:03.4", set this option to "PCI:2@1:3:4". + + lspci might omit the PCI domain (0001 in above example) if it is zero. + In which case, use "@0" instead. + + Please be aware that this option takes decimal address while lspci reports + hexadecimal address. So for device at domain "10000", use "@65536". ''; };