nixpkgs/nixos/modules/hardware
Edward Tjörnhammar 9b95f21cdb nvidia,nixos/nvidia: add datacenter drivers compatible with default cudaPkgs
For NVLink topology systems we need fabricmanager. Fabricmanager itself is
dependent on the datacenter driver set and not the regular x11 ones, it is also
tightly tied to the driver version. Furhtermore the current cudaPackages
defaults to version 11.8, which corresponds to the 520 datacenter drivers.

Future improvement should be to switch the main nvidia datacenter driver version
on the `config.cudaVersion` since these are well known from:

> https://docs.nvidia.com/deploy/cuda-compatibility/index.html#use-the-right-compat-package

This adds nixos configuration options `hardware.nvidia.datacenter.enable` and
`hardware.nvidia.datacenter.settings` (the settings configure fabricmanager)

Other interesting external links related to this commit are:

* Fabricmanager download site:
    - https://developer.download.nvidia.com/compute/cuda/redist/fabricmanager/linux-x86_64/
* Data Center drivers:
    - https://www.nvidia.com/Download/driverResults.aspx/193711/en-us/

Implementation specific details:

* Fabricmanager is added as a passthru package, similar to settings and
  presistenced.
* Adds `use{Settings,Persistenced,Fabricmanager}` with defaults to preserve x11
  expressions.
* Utilizes mkMerge to split the `hardware.nvidia` module into three comment
  delimited sections:
    1. Common
    2. X11/xorg
    3. Data Center
* Uses asserts to make the configurations mutualy exclusive.

Notes:

* Data Center Drivers are `x86_64` only.
* Reuses the `nvidia_x11` attribute in nixpkgs on enable, e.g. doesn't change it
  to `nvidia_driver` and sets that to either `nvidia_x11` or `nvidia_dc`.
* Should have a helper function which is switched on `config.cudaVersion` like
  `selectHighestVersion` but rather `selectCudaCompatibleVersion`.
2023-09-12 07:17:33 +02:00
..
cpu nixos/*: automatically convert option descriptions 2022-08-31 16:32:53 +02:00
keyboard nixos/hardware: clean up "with lib;" for keyboards 2023-02-15 11:34:22 +08:00
network treewide: automatically md-convert option descriptions 2022-07-30 15:16:34 +02:00
onlykey treewide: automatically md-convert option descriptions 2022-07-30 15:16:34 +02:00
raid nixos/*: automatically convert option descriptions 2022-08-31 16:32:53 +02:00
sensor nixos: fix typos 2023-05-19 22:31:04 -04:00
video nvidia,nixos/nvidia: add datacenter drivers compatible with default cudaPkgs 2023-09-12 07:17:33 +02:00
acpilight.nix treewide: automatically md-convert option descriptions 2022-07-30 15:16:34 +02:00
all-firmware.nix rtl8723bs-firmware: cleanup 2023-07-03 14:22:20 +00:00
bladeRF.nix treewide: automatically md-convert option descriptions 2022-07-30 15:16:34 +02:00
brillo.nix treewide: use mkEnableOption in nixos modules 2022-11-10 09:30:00 +01:00
ckb-next.nix maintainers: remove superherointj 2022-10-04 14:06:48 -03:00
corectrl.nix nixos/*: automatically convert option descriptions 2022-08-31 16:32:53 +02:00
decklink.nix nixos/decklink: init 2023-09-09 19:45:50 +02:00
device-tree.nix treewide: deprecate isNull 2023-03-06 22:40:04 +01:00
digitalbitbox.nix treewide: automatically md-convert option descriptions 2022-07-30 15:16:34 +02:00
flipperzero.nix nixos/flipperzero: init 2023-02-21 17:45:14 +01:00
flirc.nix nixos/*: automatically convert option descriptions 2022-08-31 16:32:53 +02:00
gkraken.nix nixos/*: automatically convert option descriptions 2022-08-31 16:32:53 +02:00
gpgsmartcards.nix nixos: fix typos 2022-12-17 19:31:14 -05:00
hackrf.nix treewide: automatically md-convert option descriptions 2022-07-30 15:16:34 +02:00
i2c.nix nixos/hardware/i2c: fix uaccess rule 2023-06-04 21:22:32 +02:00
infiniband.nix nixos/infiniband: add support for configurable guids 2023-09-07 19:59:33 +02:00
ksm.nix nixos/*: automatically convert option descriptions 2022-08-31 16:32:53 +02:00
ledger.nix nixos/*: automatically convert option descriptions 2022-08-31 16:32:53 +02:00
logitech.nix nixos/*: automatically convert option descriptions 2022-08-31 16:32:53 +02:00
mcelog.nix treewide: automatically md-convert option descriptions 2022-07-30 15:16:34 +02:00
new-lg4ff.nix treewide: automatically md-convert option descriptions 2022-07-30 15:16:34 +02:00
nitrokey.nix nitrokey-udev-rules: replace with libnitrokey 2023-03-27 04:02:13 +02:00
opengl.nix vaapiIntel: rename to intel-vaapi-driver 2023-05-31 15:05:32 +02:00
openrazer.nix nixos: fix typos 2022-12-17 19:31:14 -05:00
opentabletdriver.nix opentabletdriver: remove hardcoded config path 2023-01-05 15:15:08 +00:00
pcmcia.nix treewide: automatically md-convert option descriptions 2022-07-30 15:16:34 +02:00
printers.nix Merge pull request #203454 from rnhmjoj/pr-cups-socket 2022-12-21 23:06:00 +01:00
rtl-sdr.nix treewide: automatically md-convert option descriptions 2022-07-30 15:16:34 +02:00
saleae-logic.nix nixos/*: automatically convert option descriptions 2022-08-31 16:32:53 +02:00
sata.nix nixos/*: automatically convert option descriptions 2022-08-31 16:32:53 +02:00
steam-hardware.nix treewide: automatically md-convert option descriptions 2022-07-30 15:16:34 +02:00
system-76.nix nixos/*: automatically convert option descriptions 2022-08-31 16:32:53 +02:00
tuxedo-keyboard.nix nixos/*: convert options with listings 2022-08-31 17:27:36 +02:00
ubertooth.nix treewide: use mkEnableOption in nixos modules 2022-11-10 09:30:00 +01:00
uinput.nix nixos/*: automatically convert option descriptions 2022-08-31 16:32:53 +02:00
usb-modeswitch.nix nixos/usb-modeswitch: Rename module from usbWwan 2023-07-25 17:07:00 +02:00
usb-storage.nix nixos/usbStorage: add new option 2022-08-08 21:03:22 +03:00
wooting.nix wooting: clarify requirements for hardware option to work 2023-07-24 22:34:52 +02:00
xone.nix nixos/*: automatically convert option descriptions 2022-08-31 16:32:53 +02:00
xpadneo.nix linuxPackages.xpadneo: 0.9.4 -> 0.9.5 2022-09-20 18:52:46 -04:00