From 951601ccab7c3e8f9afa3ed78f2046863e6fa81d Mon Sep 17 00:00:00 2001 From: K900 Date: Sun, 16 Jun 2024 13:39:52 +0300 Subject: [PATCH 1/3] treewide: drop amdgpu-pro It's dead, Jim. --- .../manual/configuration/x-windows.chapter.md | 17 -- nixos/modules/hardware/video/amdgpu-pro.nix | 69 ------ nixos/modules/module-list.nix | 1 - nixos/modules/services/x11/xserver.nix | 2 +- pkgs/os-specific/linux/amdgpu-pro/default.nix | 222 ------------------ pkgs/top-level/linux-kernels.nix | 3 +- 6 files changed, 2 insertions(+), 312 deletions(-) delete mode 100644 nixos/modules/hardware/video/amdgpu-pro.nix delete mode 100644 pkgs/os-specific/linux/amdgpu-pro/default.nix diff --git a/nixos/doc/manual/configuration/x-windows.chapter.md b/nixos/doc/manual/configuration/x-windows.chapter.md index 31752330dd9a..172f29723b01 100644 --- a/nixos/doc/manual/configuration/x-windows.chapter.md +++ b/nixos/doc/manual/configuration/x-windows.chapter.md @@ -183,23 +183,6 @@ If you have an older card, you may have to use one of the legacy drivers: You may need to reboot after enabling this driver to prevent a clash with other kernel modules. -## Proprietary AMD drivers {#sec-x11--graphics-cards-amd} - -AMD provides a proprietary driver for its graphics cards that is not -enabled by default because it's not Free Software, is often broken in -nixpkgs and as of this writing doesn't offer more features or -performance. If you still want to use it anyway, you need to explicitly -set: - -```nix -{ - services.xserver.videoDrivers = [ "amdgpu-pro" ]; -} -``` - -You will need to reboot after enabling this driver to prevent a clash -with other kernel modules. - ## Touchpads {#sec-x11-touchpads} Support for Synaptics touchpads (found in many laptops such as the Dell diff --git a/nixos/modules/hardware/video/amdgpu-pro.nix b/nixos/modules/hardware/video/amdgpu-pro.nix deleted file mode 100644 index 2a86280eec8c..000000000000 --- a/nixos/modules/hardware/video/amdgpu-pro.nix +++ /dev/null @@ -1,69 +0,0 @@ -# This module provides the proprietary AMDGPU-PRO drivers. - -{ config, lib, pkgs, ... }: - -with lib; - -let - - drivers = config.services.xserver.videoDrivers; - - enabled = elem "amdgpu-pro" drivers; - - package = config.boot.kernelPackages.amdgpu-pro; - package32 = pkgs.pkgsi686Linux.linuxPackages.amdgpu-pro.override { kernel = null; }; - - opengl = config.hardware.opengl; - -in - -{ - - config = mkIf enabled { - services.xserver.drivers = singleton - { name = "amdgpu"; modules = [ package ]; display = true; }; - - hardware.opengl.package = package; - hardware.opengl.package32 = package32; - hardware.opengl.setLdLibraryPath = true; - - boot.extraModulePackages = [ package.kmod ]; - - boot.kernelPackages = pkgs.linuxKernel.packagesFor - (pkgs.linuxKernel.kernels.linux_5_10.override { - structuredExtraConfig = { - DEVICE_PRIVATE = kernel.yes; - KALLSYMS_ALL = kernel.yes; - }; - }); - - hardware.firmware = [ package.fw ]; - - systemd.tmpfiles.settings.amdgpu-pro = { - "/run/amdgpu"."L+".argument = "${package}/opt/amdgpu"; - "/run/amdgpu-pro"."L+".argument = "${package}/opt/amdgpu-pro"; - }; - - system.requiredKernelConfig = with config.lib.kernelConfig; [ - (isYes "DEVICE_PRIVATE") - (isYes "KALLSYMS_ALL") - ]; - - boot.initrd.extraUdevRulesCommands = mkIf (!config.boot.initrd.systemd.enable) '' - cp -v ${package}/etc/udev/rules.d/*.rules $out/ - ''; - boot.initrd.services.udev.packages = [ package ]; - - environment.systemPackages = - [ package.vulkan ] ++ - # this isn't really DRI, but we'll reuse this option for now - optional config.hardware.opengl.driSupport32Bit package32.vulkan; - - environment.etc = { - "modprobe.d/blacklist-radeon.conf".source = package + "/etc/modprobe.d/blacklist-radeon.conf"; - amd.source = package + "/etc/amd"; - }; - - }; - -} diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index b20e98a9f229..77b39c6db353 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -103,7 +103,6 @@ ./hardware/uni-sync.nix ./hardware/usb-modeswitch.nix ./hardware/usb-storage.nix - ./hardware/video/amdgpu-pro.nix ./hardware/video/bumblebee.nix ./hardware/video/capture/mwprocapture.nix ./hardware/video/displaylink.nix diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index 5a86d055c271..48cd8cef1347 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -302,7 +302,7 @@ in default = [ "modesetting" "fbdev" ]; example = [ "nvidia" - "amdgpu-pro" + "amdgpu" ]; # TODO(@oxij): think how to easily add the rest, like those nvidia things relatedPackages = concatLists diff --git a/pkgs/os-specific/linux/amdgpu-pro/default.nix b/pkgs/os-specific/linux/amdgpu-pro/default.nix deleted file mode 100644 index ade6da99810b..000000000000 --- a/pkgs/os-specific/linux/amdgpu-pro/default.nix +++ /dev/null @@ -1,222 +0,0 @@ -{ lib -, stdenv -, fetchurl -, elfutils -, xorg -, patchelf -, libxcb -, libxshmfence -, perl -, zlib -, expat -, libffi_3_3 -, libselinux -, libdrm -, udev -, kernel ? null -}: - -with lib; - -let - - bitness = if stdenv.is64bit then "64" else "32"; - - libArch = - if stdenv.hostPlatform.system == "i686-linux" then - "i386-linux-gnu" - else if stdenv.hostPlatform.system == "x86_64-linux" then - "x86_64-linux-gnu" - else throw "amdgpu-pro is Linux only. Sorry ${stdenv.hostPlatform.system}."; - -in stdenv.mkDerivation rec { - - version = "21.30"; - pname = "amdgpu-pro"; - build = "${version}-1290604"; - - src = fetchurl { - url = "https://drivers.amd.com/drivers/linux/amdgpu-pro-${build}-ubuntu-20.04.tar.xz"; - sha256 = "sha256-WECqxjo2WLP3kMWeVyJgYufkvHTzwGaj57yeMGXiQ4I="; - curlOpts = "--referer https://www.amd.com/en/support/kb/release-notes/rn-amdgpu-unified-linux-21-30"; - }; - - postUnpack = '' - mkdir root - pushd $sourceRoot - for deb in *_all.deb *_${if stdenv.is64bit then "amd64" else "i386"}.deb - do - ar p $deb data.tar.xz | tar -C ../root -xJ - done - popd - # if we don't use a short sourceRoot, compilation can fail due to command - # line length - sourceRoot=root - ''; - - passthru = optionalAttrs (kernel != null) { - kmod = stdenv.mkDerivation rec { - inherit version src postUnpack; - name = "${pname}-${version}-kmod-${kernel.dev.version}"; - - postPatch = '' - pushd usr/src/amdgpu-* - patchShebangs amd/dkms/*.sh - substituteInPlace amd/dkms/pre-build.sh --replace "./configure" "./configure --with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source --with-linux-obj=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" - popd - ''; - - preConfigure = '' - pushd usr/src/amdgpu-* - makeFlags="$makeFlags M=$(pwd)" - amd/dkms/pre-build.sh ${kernel.version} - popd - ''; - - postBuild = '' - pushd usr/src/amdgpu-* - find -name \*.ko -exec xz {} \; - popd - ''; - - makeFlags = optionalString (kernel != null) "-C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build modules"; - - installPhase = '' - runHook preInstall - - pushd usr/src/amdgpu-* - find -name \*.ko.xz -exec install -Dm444 {} $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/gpu/drm/{} \; - popd - - runHook postInstall - ''; - - # without this we get a collision with the ttm module from linux - meta.priority = 4; - }; - - fw = stdenv.mkDerivation rec { - inherit version src postUnpack; - name = "${pname}-${version}-fw"; - - installPhase = '' - runHook preInstall - - mkdir -p $out/lib - cp -r usr/src/amdgpu-*/firmware $out/lib/firmware - - runHook postInstall - ''; - }; - }; - - outputs = [ "out" "vulkan" ]; - - depLibPath = makeLibraryPath [ - stdenv.cc.cc.lib - zlib - libxcb - libxshmfence - elfutils - expat - libffi_3_3 - libselinux - # libudev is not listed in any dependencies, but is loaded dynamically - udev - xorg.libXext - xorg.libX11 - xorg.libXfixes - xorg.libXdamage - xorg.libXxf86vm - ]; - - installPhase = '' - runHook preInstall - - mkdir -p $out - - cp -r usr/lib/${libArch} $out/lib - cp -r usr/share $out/share - - mkdir -p $out/opt/amdgpu{,-pro} - cp -r opt/amdgpu-pro/lib/${libArch} $out/opt/amdgpu-pro/lib - cp -r opt/amdgpu/lib/${libArch} $out/opt/amdgpu/lib - - pushd $out/lib - ln -s ../opt/amdgpu-pro/lib/libGL.so* . - ln -s ../opt/amdgpu-pro/lib/libEGL.so* . - popd - - # short name to allow replacement below - ln -s lib/dri $out/dri - - '' + optionalString (stdenv.is64bit) '' - mkdir -p $out/etc - pushd etc - cp -r modprobe.d udev amd $out/etc - popd - - cp -r lib/udev/rules.d/* $out/etc/udev/rules.d - cp -r opt/amdgpu/lib/xorg $out/lib/xorg - cp -r opt/amdgpu-pro/lib/xorg/* $out/lib/xorg - cp -r opt/amdgpu/share $out/opt/amdgpu/share - '' + '' - - mkdir -p $vulkan/share/vulkan/icd.d - install opt/amdgpu-pro/etc/vulkan/icd.d/amd_icd${bitness}.json $vulkan/share/vulkan/icd.d - - runHook postInstall - ''; - - preFixup = (if stdenv.is64bit - # this could also be done with LIBGL_DRIVERS_PATH, but it would need to be - # set in the user session and for Xorg - then '' - expr1='s:/opt/amdgpu/lib/x86_64-linux-gnu/dri\0:/run/opengl-driver/lib/dri\0\0\0\0\0\0\0\0\0\0\0:g' - expr2='s:/usr/lib/x86_64-linux-gnu/dri[\0\:]:/run/opengl-driver/lib/dri\0\0\0\0:g' - perl -pi -e "$expr2" $out/lib/xorg/modules/extensions/libglx.so - '' - else '' - expr1='s:/opt/amdgpu/lib/i386-linux-gnu/dri\0:/run/opengl-driver-32/lib/dri\0\0\0\0\0\0:g' - # we replace a different path on 32-bit because it's the only one long - # enough to fit the target path :( - expr2='s:/usr/lib/i386-linux-gnu/dri[\0\:]:/run/opengl-driver-32/dri\0\0\0:g' - '') + '' - perl -pi -e "$expr1" \ - $out/opt/amdgpu/lib/libEGL.so.1.0.0 \ - $out/opt/amdgpu/lib/libgbm.so.1.0.0 \ - $out/opt/amdgpu/lib/libGL.so.1.2.0 - - perl -pi -e "$expr2" \ - $out/opt/amdgpu-pro/lib/libEGL.so.1 \ - $out/opt/amdgpu-pro/lib/libGL.so.1.2 \ - $out/opt/amdgpu-pro/lib/libGLX_amd.so.0 - - find $out -type f -exec perl -pi -e 's:/opt/amdgpu-pro/:/run/amdgpu-pro/:g' {} \; - find $out -type f -exec perl -pi -e 's:/opt/amdgpu/:/run/amdgpu/:g' {} \; - - substituteInPlace $vulkan/share/vulkan/icd.d/*.json --replace /opt/amdgpu-pro/lib/${libArch} "$out/opt/amdgpu-pro/lib" - ''; - - # doing this in post because shrinking breaks things that dynamically load - postFixup = '' - libPath="$out/opt/amdgpu/lib:$out/opt/amdgpu-pro/lib:$depLibPath" - find "$out" -name '*.so*' -type f -exec patchelf --set-rpath "$libPath" {} \; - ''; - - buildInputs = [ - libdrm - patchelf - perl - ]; - - enableParallelBuilding = true; - - meta = with lib; { - description = "AMDGPU-PRO drivers"; - homepage = "https://www.amd.com/en/support"; - license = licenses.unfree; - platforms = platforms.linux; - maintainers = with maintainers; [ corngood ]; - }; -} diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index 8f491dd848b5..db0c819e6993 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -318,8 +318,6 @@ in { akvcam = callPackage ../os-specific/linux/akvcam { }; - amdgpu-pro = callPackage ../os-specific/linux/amdgpu-pro { }; - apfs = callPackage ../os-specific/linux/apfs { }; ax99100 = callPackage ../os-specific/linux/ax99100 {}; @@ -605,6 +603,7 @@ in { rtl8723bs = throw "rtl8723bs was added in mainline kernel version 4.12"; # Added 2023-06-14 vm-tools = self.mm-tools; xmm7360-pci = throw "Support for the XMM7360 WWAN card was added to the iosm kmod in mainline kernel version 5.18"; + amdgpu-pro = throw "amdgpu-pro was removed due to lack of maintenance"; # Added 2024-06-16 }); hardenedPackagesFor = kernel: overrides: packagesFor (hardenedKernelFor kernel overrides); From 98cef4c27326d0f9e521654441929c1c7c64f8e9 Mon Sep 17 00:00:00 2001 From: K900 Date: Sun, 16 Jun 2024 13:50:18 +0300 Subject: [PATCH 2/3] treewide: big opengl cleanup - rename hardware.opengl to hardware.graphics - remove hardware.opengl.driSupport, which does nothing - remove hardware.opengl.setLdLibraryPath, which should never be done - rename hardware.opengl.driSupport32Bit to hardware.graphics.enable32Bit - lost of small docs / formatting cleanups --- .../manual/configuration/gpu-accel.chapter.md | 28 ++-- .../manual/configuration/x-windows.chapter.md | 2 +- nixos/modules/hardware/graphics.nix | 132 +++++++++++++++ nixos/modules/hardware/opengl.nix | 158 ------------------ nixos/modules/hardware/video/nvidia.nix | 4 +- nixos/modules/module-list.nix | 2 +- nixos/modules/programs/miriway.nix | 2 +- nixos/modules/programs/steam.nix | 7 +- nixos/modules/programs/turbovnc.nix | 4 +- .../programs/wayland/wayland-session.nix | 2 +- .../services/desktop-managers/lomiri.nix | 2 +- .../services/display-managers/default.nix | 4 +- nixos/modules/services/hardware/amdvlk.nix | 4 +- .../services/misc/graphical-desktop.nix | 2 +- nixos/modules/services/ttys/kmscon.nix | 2 +- nixos/modules/services/wayland/cage.nix | 2 +- .../services/x11/desktop-managers/phosh.nix | 2 +- nixos/modules/services/x11/xserver.nix | 5 +- nixos/modules/virtualisation/docker.nix | 4 +- nixos/tests/armagetronad.nix | 2 +- nixos/tests/cagebreak.nix | 6 +- nixos/tests/monado.nix | 2 +- nixos/tests/openarena.nix | 2 +- nixos/tests/quake3.nix | 2 +- nixos/tests/seatd.nix | 2 +- nixos/tests/tinywl.nix | 2 +- pkgs/games/steam/fhsenv.nix | 2 +- 27 files changed, 176 insertions(+), 212 deletions(-) create mode 100644 nixos/modules/hardware/graphics.nix delete mode 100644 nixos/modules/hardware/opengl.nix diff --git a/nixos/doc/manual/configuration/gpu-accel.chapter.md b/nixos/doc/manual/configuration/gpu-accel.chapter.md index 3b98bdd97c68..8afa2807b7b6 100644 --- a/nixos/doc/manual/configuration/gpu-accel.chapter.md +++ b/nixos/doc/manual/configuration/gpu-accel.chapter.md @@ -30,7 +30,7 @@ $ export \ ``` The second mechanism is to add the OpenCL driver package to -[](#opt-hardware.opengl.extraPackages). +[](#opt-hardware.graphics.extraPackages). This links the ICD file under `/run/opengl-driver`, where it will be visible to the ICD loader. @@ -51,12 +51,12 @@ Platform Vendor Advanced Micro Devices, Inc. Modern AMD [Graphics Core Next](https://en.wikipedia.org/wiki/Graphics_Core_Next) (GCN) GPUs are supported through the rocmPackages.clr.icd package. Adding this package to -[](#opt-hardware.opengl.extraPackages) +[](#opt-hardware.graphics.extraPackages) enables OpenCL support: ```nix { - hardware.opengl.extraPackages = [ + hardware.graphics.extraPackages = [ rocmPackages.clr.icd ]; } @@ -71,13 +71,13 @@ intel-compute-runtime package. The proprietary Intel OpenCL runtime, in the intel-ocl package, is an alternative for Gen7 GPUs. The intel-compute-runtime or intel-ocl package can be added to -[](#opt-hardware.opengl.extraPackages) +[](#opt-hardware.graphics.extraPackages) to enable OpenCL support. For example, for Gen8 and later GPUs, the following configuration can be used: ```nix { - hardware.opengl.extraPackages = [ + hardware.graphics.extraPackages = [ intel-compute-runtime ]; } @@ -90,8 +90,8 @@ compute API for GPUs. It is used directly by games or indirectly though compatibility layers like [DXVK](https://github.com/doitsujin/dxvk/wiki). -By default, if [](#opt-hardware.opengl.driSupport) -is enabled, mesa is installed and provides Vulkan for supported hardware. +By default, if [](#opt-hardware.graphics.enable) +is enabled, Mesa is installed and provides Vulkan for supported hardware. Similar to OpenCL, Vulkan drivers are loaded through the *Installable Client Driver* (ICD) mechanism. ICD files for Vulkan are JSON files that @@ -110,7 +110,7 @@ $ export \ ``` The second mechanism is to add the Vulkan driver package to -[](#opt-hardware.opengl.extraPackages). +[](#opt-hardware.graphics.extraPackages). This links the ICD file under `/run/opengl-driver`, where it will be visible to the ICD loader. @@ -140,18 +140,18 @@ Modern AMD [Graphics Core Next](https://en.wikipedia.org/wiki/Graphics_Core_Next) (GCN) GPUs are supported through either radv, which is part of mesa, or the amdvlk package. Adding the amdvlk package to -[](#opt-hardware.opengl.extraPackages) +[](#opt-hardware.graphics.extraPackages) makes amdvlk the default driver and hides radv and lavapipe from the device list. A specific driver can be forced as follows: ```nix { - hardware.opengl.extraPackages = [ + hardware.graphics.extraPackages = [ pkgs.amdvlk ]; # To enable Vulkan support for 32-bit applications, also add: - hardware.opengl.extraPackages32 = [ + hardware.graphics.extraPackages32 = [ pkgs.driversi686Linux.amdvlk ]; @@ -171,7 +171,7 @@ graphics hardware acceleration capabilities for video processing. VA-API drivers are loaded by `libva`. The version in nixpkgs is built to search the opengl driver path, so drivers can be installed in -[](#opt-hardware.opengl.extraPackages). +[](#opt-hardware.graphics.extraPackages). VA-API can be tested using: @@ -185,7 +185,7 @@ Modern Intel GPUs use the iHD driver, which can be installed with: ```nix { - hardware.opengl.extraPackages = [ + hardware.graphics.extraPackages = [ intel-media-driver ]; } @@ -195,7 +195,7 @@ Older Intel GPUs use the i965 driver, which can be installed with: ```nix { - hardware.opengl.extraPackages = [ + hardware.graphics.extraPackages = [ intel-vaapi-driver ]; } diff --git a/nixos/doc/manual/configuration/x-windows.chapter.md b/nixos/doc/manual/configuration/x-windows.chapter.md index 172f29723b01..362ae5d7e5df 100644 --- a/nixos/doc/manual/configuration/x-windows.chapter.md +++ b/nixos/doc/manual/configuration/x-windows.chapter.md @@ -79,7 +79,7 @@ Wine, you should also set the following: ```nix { - hardware.opengl.driSupport32Bit = true; + hardware.graphics.enable32Bit = true; } ``` diff --git a/nixos/modules/hardware/graphics.nix b/nixos/modules/hardware/graphics.nix new file mode 100644 index 000000000000..df41ee175d3d --- /dev/null +++ b/nixos/modules/hardware/graphics.nix @@ -0,0 +1,132 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.hardware.graphics; + + kernelPackages = config.boot.kernelPackages; + + videoDrivers = config.services.xserver.videoDrivers; + + driversEnv = pkgs.buildEnv { + name = "graphics-drivers"; + paths = [ cfg.package ] ++ cfg.extraPackages; + }; + + driversEnv32 = pkgs.buildEnv { + name = "graphics-drivers-32bit"; + paths = [ cfg.package32 ] ++ cfg.extraPackages32; + }; +in +{ + imports = [ + (lib.mkRenamedOptionModule [ "services" "xserver" "vaapiDrivers" ] [ "hardware" "opengl" "extraPackages" ]) + (lib.mkRemovedOptionModule [ "hardware" "opengl" "s3tcSupport" ] "S3TC support is now always enabled in Mesa.") + (lib.mkRemovedOptionModule [ "hardware" "opengl" "driSupport"] "The setting can be removed.") + + (lib.mkRenamedOptionModule [ "hardware" "opengl" "enable"] [ "hardware" "graphics" "enable" ]) + (lib.mkRenamedOptionModule [ "hardware" "opengl" "driSupport32Bit"] [ "hardware" "graphics" "enable32Bit" ]) + (lib.mkRenamedOptionModule [ "hardware" "opengl" "package"] [ "hardware" "graphics" "package" ]) + (lib.mkRenamedOptionModule [ "hardware" "opengl" "package32"] [ "hardware" "graphics" "package32" ]) + (lib.mkRenamedOptionModule [ "hardware" "opengl" "extraPackages"] [ "hardware" "graphics" "extraPackages" ]) + (lib.mkRenamedOptionModule [ "hardware" "opengl" "extraPackages32"] [ "hardware" "graphics" "extraPackages32" ]) + ]; + + options.hardware.graphics = { + enable = lib.mkOption { + description = '' + Whether to enable hardware accelerated graphics drivers. + + This is required to allow most graphical applications and + environments to use hardware rendering, video encode/decode + acceleration, etc. + + This option should be enabled by default by the corresponding modules, + so you do not usually have to set it yourself. + ''; + type = lib.types.bool; + default = false; + }; + + enable32Bit = lib.mkOption { + description = '' + On 64-bit systems, whether to also install 32-bit drivers for + 32-bit applications (such as Wine). + ''; + type = lib.types.bool; + default = false; + }; + + package = lib.mkOption { + description = '' + The package that provides the default driver set. + ''; + type = lib.types.package; + internal = true; + }; + + package32 = lib.mkOption { + description = '' + The package that provides the 32-bit driver set. Used when {option}`enable32Bit` is enabled. + set. + ''; + type = lib.types.package; + internal = true; + }; + + extraPackages = lib.mkOption { + description = '' + Additional packages to add to the default graphics driver lookup path. + This can be used to add OpenCL drivers, VA-API/VDPAU drivers, etc. + + ::: {.note} + intel-media-driver supports hardware Broadwell (2014) or newer. Older hardware should use the mostly unmaintained intel-vaapi-driver driver. + ::: + ''; + type = lib.types.listOf lib.types.package; + default = []; + example = lib.literalExpression "with pkgs; [ intel-media-driver intel-ocl intel-vaapi-driver ]"; + }; + + extraPackages32 = lib.mkOption { + description = '' + Additional packages to add to 32-bit graphics driver lookup path on 64-bit systems. + Used when {option}`enable32Bit` is set. This can be used to add OpenCL drivers, VA-API/VDPAU drivers, etc. + + ::: {.note} + intel-media-driver supports hardware Broadwell (2014) or newer. Older hardware should use the mostly unmaintained intel-vaapi-driver driver. + ::: + ''; + type = lib.types.listOf lib.types.package; + default = []; + example = lib.literalExpression "with pkgs.pkgsi686Linux; [ intel-media-driver intel-vaapi-driver ]"; + }; + }; + + config = lib.mkIf cfg.enable { + assertions = [ + { + assertion = cfg.enable32Bit -> pkgs.stdenv.isx86_64; + message = "`hardware.graphics.enable32Bit` only makes sense on a 64-bit system."; + } + { + assertion = cfg.enable32Bit -> (config.boot.kernelPackages.kernel.features.ia32Emulation or false); + message = "`hardware.graphics.enable32Bit` requires a kernel that supports 32-bit emulation"; + } + ]; + + systemd.tmpfiles.settings.graphics-driver = { + "/run/opengl-driver"."L+".argument = toString driversEnv; + "/run/opengl-driver-32" = + if pkgs.stdenv.isi686 then + { "L+".argument = "opengl-driver"; } + else if cfg.enable32Bit then + { "L+".argument = toString driversEnv32; } + else + { "r" = {}; }; + }; + + hardware.graphics.package = lib.mkDefault pkgs.mesa.drivers; + hardware.graphics.package32 = lib.mkDefault pkgs.pkgsi686Linux.mesa.drivers; + + boot.extraModulePackages = lib.optional (lib.elem "virtualbox" videoDrivers) kernelPackages.virtualboxGuestAdditions; + }; +} diff --git a/nixos/modules/hardware/opengl.nix b/nixos/modules/hardware/opengl.nix deleted file mode 100644 index 3ca9deec8961..000000000000 --- a/nixos/modules/hardware/opengl.nix +++ /dev/null @@ -1,158 +0,0 @@ -{ config, lib, pkgs, ... }: - -let - - cfg = config.hardware.opengl; - - kernelPackages = config.boot.kernelPackages; - - videoDrivers = config.services.xserver.videoDrivers; - - package = pkgs.buildEnv { - name = "opengl-drivers"; - paths = [ cfg.package ] ++ cfg.extraPackages; - }; - - package32 = pkgs.buildEnv { - name = "opengl-drivers-32bit"; - paths = [ cfg.package32 ] ++ cfg.extraPackages32; - }; - -in - -{ - - imports = [ - (lib.mkRenamedOptionModule [ "services" "xserver" "vaapiDrivers" ] [ "hardware" "opengl" "extraPackages" ]) - (lib.mkRemovedOptionModule [ "hardware" "opengl" "s3tcSupport" ] "S3TC support is now always enabled in Mesa.") - ]; - - options = { - - hardware.opengl = { - enable = lib.mkOption { - description = '' - Whether to enable OpenGL drivers. This is needed to enable - OpenGL support in X11 systems, as well as for Wayland compositors - like sway and Weston. It is enabled by default - by the corresponding modules, so you do not usually have to - set it yourself, only if there is no module for your wayland - compositor of choice. See services.xserver.enable and - programs.sway.enable. - ''; - type = lib.types.bool; - default = false; - }; - - driSupport = lib.mkOption { - type = lib.types.bool; - default = true; - description = '' - Whether to enable accelerated OpenGL rendering through the - Direct Rendering Interface (DRI). - ''; - }; - - driSupport32Bit = lib.mkOption { - type = lib.types.bool; - default = false; - description = '' - On 64-bit systems, whether to support Direct Rendering for - 32-bit applications (such as Wine). This is currently only - supported for the `nvidia` as well as - `Mesa`. - ''; - }; - - package = lib.mkOption { - type = lib.types.package; - internal = true; - description = '' - The package that provides the OpenGL implementation. - ''; - }; - - package32 = lib.mkOption { - type = lib.types.package; - internal = true; - description = '' - The package that provides the 32-bit OpenGL implementation on - 64-bit systems. Used when {option}`driSupport32Bit` is - set. - ''; - }; - - extraPackages = lib.mkOption { - type = lib.types.listOf lib.types.package; - default = []; - example = lib.literalExpression "with pkgs; [ intel-media-driver intel-ocl intel-vaapi-driver ]"; - description = '' - Additional packages to add to OpenGL drivers. - This can be used to add OpenCL drivers, VA-API/VDPAU drivers etc. - - ::: {.note} - intel-media-driver supports hardware Broadwell (2014) or newer. Older hardware should use the mostly unmaintained intel-vaapi-driver driver. - ::: - ''; - }; - - extraPackages32 =lib. mkOption { - type = lib.types.listOf lib.types.package; - default = []; - example = lib.literalExpression "with pkgs.pkgsi686Linux; [ intel-media-driver intel-vaapi-driver ]"; - description = '' - Additional packages to add to 32-bit OpenGL drivers on 64-bit systems. - Used when {option}`driSupport32Bit` is set. This can be used to add OpenCL drivers, VA-API/VDPAU drivers etc. - - ::: {.note} - intel-media-driver supports hardware Broadwell (2014) or newer. Older hardware should use the mostly unmaintained intel-vaapi-driver driver. - ::: - ''; - }; - - setLdLibraryPath = lib.mkOption { - type = lib.types.bool; - internal = true; - default = false; - description = '' - Whether the `LD_LIBRARY_PATH` environment variable - should be set to the locations of driver libraries. Drivers which - rely on overriding libraries should set this to true. Drivers which - support `libglvnd` and other dispatch libraries - instead of overriding libraries should not set this. - ''; - }; - }; - - }; - - config = lib.mkIf cfg.enable { - assertions = [ - { assertion = cfg.driSupport32Bit -> pkgs.stdenv.isx86_64; - message = "Option driSupport32Bit only makes sense on a 64-bit system."; - } - { assertion = cfg.driSupport32Bit -> (config.boot.kernelPackages.kernel.features.ia32Emulation or false); - message = "Option driSupport32Bit requires a kernel that supports 32bit emulation"; - } - ]; - - systemd.tmpfiles.settings.opengl = { - "/run/opengl-driver"."L+".argument = toString package; - "/run/opengl-driver-32" = - if pkgs.stdenv.isi686 then - { "L+".argument = "opengl-driver"; } - else if cfg.driSupport32Bit then - { "L+".argument = toString package32; } - else - { "r" = {}; }; - }; - - environment.sessionVariables.LD_LIBRARY_PATH = lib.mkIf cfg.setLdLibraryPath - ([ "/run/opengl-driver/lib" ] ++ lib.optional cfg.driSupport32Bit "/run/opengl-driver-32/lib"); - - hardware.opengl.package = lib.mkDefault pkgs.mesa.drivers; - hardware.opengl.package32 = lib.mkDefault pkgs.pkgsi686Linux.mesa.drivers; - - boot.extraModulePackages = lib.optional (lib.elem "virtualbox" videoDrivers) kernelPackages.virtualboxGuestAdditions; - }; -} diff --git a/nixos/modules/hardware/video/nvidia.nix b/nixos/modules/hardware/video/nvidia.nix index ae5c2aa7a034..0274dfcaa70f 100644 --- a/nixos/modules/hardware/video/nvidia.nix +++ b/nixos/modules/hardware/video/nvidia.nix @@ -297,7 +297,7 @@ in KERNEL=="nvidia_uvm", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-uvm c $$(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 0'" KERNEL=="nvidia_uvm", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-uvm-tools c $$(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 1'" ''; - hardware.opengl = { + hardware.graphics = { extraPackages = [ nvidia_x11.out ]; extraPackages32 = [ nvidia_x11.lib32 ]; }; @@ -467,7 +467,7 @@ in "egl/egl_external_platform.d".source = "/run/opengl-driver/share/egl/egl_external_platform.d/"; }; - hardware.opengl = { + hardware.graphics = { extraPackages = [ pkgs.nvidia-vaapi-driver ]; extraPackages32 = [ pkgs.pkgsi686Linux.nvidia-vaapi-driver ]; }; diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 77b39c6db353..8b5b6c148ec8 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -67,6 +67,7 @@ ./hardware/gkraken.nix ./hardware/glasgow.nix ./hardware/gpgsmartcards.nix + ./hardware/graphics.nix ./hardware/hackrf.nix ./hardware/i2c.nix ./hardware/infiniband.nix @@ -84,7 +85,6 @@ ./hardware/new-lg4ff.nix ./hardware/nitrokey.nix ./hardware/onlykey/default.nix - ./hardware/opengl.nix ./hardware/openrazer.nix ./hardware/opentabletdriver.nix ./hardware/pcmcia.nix diff --git a/nixos/modules/programs/miriway.nix b/nixos/modules/programs/miriway.nix index 00c1356ab083..418bb3dc4f2d 100644 --- a/nixos/modules/programs/miriway.nix +++ b/nixos/modules/programs/miriway.nix @@ -65,7 +65,7 @@ in { }; }; - hardware.opengl.enable = lib.mkDefault true; + hardware.graphics.enable = lib.mkDefault true; fonts.enableDefaultPackages = lib.mkDefault true; programs.dconf.enable = lib.mkDefault true; programs.xwayland.enable = lib.mkDefault true; diff --git a/nixos/modules/programs/steam.nix b/nixos/modules/programs/steam.nix index 5138588dbd3e..2ee464dc22d3 100644 --- a/nixos/modules/programs/steam.nix +++ b/nixos/modules/programs/steam.nix @@ -50,7 +50,7 @@ in { }) // (prev.extraEnv or {}); extraLibraries = pkgs: let prevLibs = if prev ? extraLibraries then prev.extraLibraries pkgs else [ ]; - additionalLibs = with config.hardware.opengl; + additionalLibs = with config.hardware.graphics; if pkgs.stdenv.hostPlatform.is64bit then [ package ] ++ extraPackages else [ package32 ] ++ extraPackages32; @@ -176,10 +176,9 @@ in { }; config = lib.mkIf cfg.enable { - hardware.opengl = { # this fixes the "glXChooseVisual failed" bug, context: https://github.com/NixOS/nixpkgs/issues/47932 + hardware.graphics = { # this fixes the "glXChooseVisual failed" bug, context: https://github.com/NixOS/nixpkgs/issues/47932 enable = true; - driSupport = true; - driSupport32Bit = true; + enable32Bit = true; }; security.wrappers = lib.mkIf (cfg.gamescopeSession.enable && gamescopeCfg.capSysNice) { diff --git a/nixos/modules/programs/turbovnc.nix b/nixos/modules/programs/turbovnc.nix index c28b7f7d7991..c7ab18a2e288 100644 --- a/nixos/modules/programs/turbovnc.nix +++ b/nixos/modules/programs/turbovnc.nix @@ -17,7 +17,7 @@ in Whether to set up NixOS such that TurboVNC's built-in software OpenGL implementation works. - This will enable {option}`hardware.opengl.enable` so that OpenGL + This will enable {option}`hardware.graphics.enable` so that OpenGL programs can find Mesa's llvmpipe drivers. Setting this option to `false` does not mean that software @@ -46,7 +46,7 @@ in # can find the llvmpipe `swrast.so` software rendering DRI lib via `libglvnd`. # This comment exists to explain why `hardware.` is involved, # even though 100% software rendering is used. - hardware.opengl.enable = true; + hardware.graphics.enable = true; }; } diff --git a/nixos/modules/programs/wayland/wayland-session.nix b/nixos/modules/programs/wayland/wayland-session.nix index 877b10668470..09fb2a5f14b2 100644 --- a/nixos/modules/programs/wayland/wayland-session.nix +++ b/nixos/modules/programs/wayland/wayland-session.nix @@ -11,7 +11,7 @@ pam.services.swaylock = {}; }; - hardware.opengl.enable = lib.mkDefault true; + hardware.graphics.enable = lib.mkDefault true; fonts.enableDefaultPackages = lib.mkDefault true; programs = { diff --git a/nixos/modules/services/desktop-managers/lomiri.nix b/nixos/modules/services/desktop-managers/lomiri.nix index eec33597dc71..0b871aa38183 100644 --- a/nixos/modules/services/desktop-managers/lomiri.nix +++ b/nixos/modules/services/desktop-managers/lomiri.nix @@ -63,7 +63,7 @@ in { ]; # Copy-pasted basic stuff - hardware.opengl.enable = lib.mkDefault true; + hardware.graphics.enable = lib.mkDefault true; fonts.enableDefaultPackages = lib.mkDefault true; programs.dconf.enable = lib.mkDefault true; diff --git a/nixos/modules/services/display-managers/default.nix b/nixos/modules/services/display-managers/default.nix index feba4b163ccd..9a7bd6c84b15 100644 --- a/nixos/modules/services/display-managers/default.nix +++ b/nixos/modules/services/display-managers/default.nix @@ -212,9 +212,7 @@ in after = [ "acpid.service" "systemd-logind.service" "systemd-user-sessions.service" ]; restartIfChanged = false; - environment = lib.optionalAttrs config.hardware.opengl.setLdLibraryPath { - LD_LIBRARY_PATH = lib.makeLibraryPath [ pkgs.addOpenGLRunpath.driverLink ]; - } // cfg.environment; + environment = cfg.environment; preStart = cfg.preStart; script = lib.mkIf (config.systemd.services.display-manager.enable == true) cfg.execCmd; diff --git a/nixos/modules/services/hardware/amdvlk.nix b/nixos/modules/services/hardware/amdvlk.nix index 20879f2f21b4..32d6fb3be21d 100644 --- a/nixos/modules/services/hardware/amdvlk.nix +++ b/nixos/modules/services/hardware/amdvlk.nix @@ -31,11 +31,9 @@ in { }; config = lib.mkIf cfg.enable { - hardware.opengl = { + hardware.graphics = { enable = true; - driSupport = true; extraPackages = [ cfg.package ]; - driSupport32Bit = cfg.support32Bit.enable; extraPackages32 = [ cfg.support32Bit.package ]; }; diff --git a/nixos/modules/services/misc/graphical-desktop.nix b/nixos/modules/services/misc/graphical-desktop.nix index a88c02e610bf..c8fe0d921c6a 100644 --- a/nixos/modules/services/misc/graphical-desktop.nix +++ b/nixos/modules/services/misc/graphical-desktop.nix @@ -38,7 +38,7 @@ in fonts.enableDefaultPackages = lib.mkDefault true; - hardware.opengl.enable = lib.mkDefault true; + hardware.graphics.enable = lib.mkDefault true; programs.gnupg.agent.pinentryPackage = lib.mkOverride 1100 pkgs.pinentry-gnome3; diff --git a/nixos/modules/services/ttys/kmscon.nix b/nixos/modules/services/ttys/kmscon.nix index 74314e1e76e4..031c5bbb383e 100644 --- a/nixos/modules/services/ttys/kmscon.nix +++ b/nixos/modules/services/ttys/kmscon.nix @@ -107,7 +107,7 @@ in { fonts = optional (cfg.fonts != null) "font-name=${lib.concatMapStringsSep ", " (f: f.name) cfg.fonts}"; in lib.concatStringsSep "\n" (render ++ fonts); - hardware.opengl.enable = mkIf cfg.hwRender true; + hardware.graphics.enable = mkIf cfg.hwRender true; fonts = mkIf (cfg.fonts != null) { fontconfig.enable = true; diff --git a/nixos/modules/services/wayland/cage.nix b/nixos/modules/services/wayland/cage.nix index 91949f197cfe..870ae58f8646 100644 --- a/nixos/modules/services/wayland/cage.nix +++ b/nixos/modules/services/wayland/cage.nix @@ -101,7 +101,7 @@ in { session required ${config.systemd.package}/lib/security/pam_systemd.so ''; - hardware.opengl.enable = mkDefault true; + hardware.graphics.enable = mkDefault true; systemd.targets.graphical.wants = [ "cage-tty1.service" ]; diff --git a/nixos/modules/services/x11/desktop-managers/phosh.nix b/nixos/modules/services/x11/desktop-managers/phosh.nix index e8494b2c017c..12b39f927c01 100644 --- a/nixos/modules/services/x11/desktop-managers/phosh.nix +++ b/nixos/modules/services/x11/desktop-managers/phosh.nix @@ -216,7 +216,7 @@ in security.pam.services.phosh = {}; - hardware.opengl.enable = mkDefault true; + hardware.graphics.enable = mkDefault true; services.gnome.core-shell.enable = true; services.gnome.core-os-services.enable = true; diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index 48cd8cef1347..57e83399eded 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -716,10 +716,7 @@ in restartIfChanged = false; - environment = - optionalAttrs config.hardware.opengl.setLdLibraryPath - { LD_LIBRARY_PATH = lib.makeLibraryPath [ pkgs.addOpenGLRunpath.driverLink ]; } - // config.services.displayManager.environment; + environment = config.services.displayManager.environment; preStart = '' diff --git a/nixos/modules/virtualisation/docker.nix b/nixos/modules/virtualisation/docker.nix index bcc649dcbec0..8a0894ed85c3 100644 --- a/nixos/modules/virtualisation/docker.nix +++ b/nixos/modules/virtualisation/docker.nix @@ -244,8 +244,8 @@ in }; assertions = [ - { assertion = cfg.enableNvidia && pkgs.stdenv.isx86_64 -> config.hardware.opengl.driSupport32Bit or false; - message = "Option enableNvidia on x86_64 requires 32bit support libraries"; + { assertion = cfg.enableNvidia && pkgs.stdenv.isx86_64 -> config.hardware.graphics.enable32Bit or false; + message = "Option enableNvidia on x86_64 requires 32-bit support libraries"; }]; virtualisation.docker.daemon.settings = { diff --git a/nixos/tests/armagetronad.nix b/nixos/tests/armagetronad.nix index d59827354b77..ca93ce8fb6c5 100644 --- a/nixos/tests/armagetronad.nix +++ b/nixos/tests/armagetronad.nix @@ -12,7 +12,7 @@ let { pkgs, ... }: { imports = [ ./common/user-account.nix ./common/x11.nix ]; - hardware.opengl.driSupport = true; + hardware.graphics.enable = true; virtualisation.memorySize = 256; environment = { systemPackages = [ pkgs.armagetronad ]; diff --git a/nixos/tests/cagebreak.nix b/nixos/tests/cagebreak.nix index 1fef7cb57cfc..4d7664c1505f 100644 --- a/nixos/tests/cagebreak.nix +++ b/nixos/tests/cagebreak.nix @@ -14,9 +14,7 @@ in }; nodes.machine = { config, ... }: - let - alice = config.users.users.alice; - in { + { # Automatically login on tty1 as a normal user: imports = [ ./common/user-account.nix ]; services.getty.autologinUser = "alice"; @@ -31,7 +29,7 @@ in fi ''; - hardware.opengl.enable = true; + hardware.graphics.enable = true; programs.xwayland.enable = true; security.polkit.enable = true; environment.systemPackages = [ pkgs.cagebreak pkgs.wayland-utils ]; diff --git a/nixos/tests/monado.nix b/nixos/tests/monado.nix index 8368950951e7..6f0d27ee4245 100644 --- a/nixos/tests/monado.nix +++ b/nixos/tests/monado.nix @@ -5,7 +5,7 @@ import ./make-test-python.nix ({ pkgs, ... }: { { pkgs, ... }: { - hardware.opengl.enable = true; + hardware.graphics.enable = true; users.users.alice = { isNormalUser = true; uid = 1000; diff --git a/nixos/tests/openarena.nix b/nixos/tests/openarena.nix index 63dc1b9a6857..4dfe71a9a1e9 100644 --- a/nixos/tests/openarena.nix +++ b/nixos/tests/openarena.nix @@ -5,7 +5,7 @@ let { pkgs, ... }: { imports = [ ./common/x11.nix ]; - hardware.opengl.driSupport = true; + hardware.graphics.enable = true; environment.systemPackages = [ pkgs.openarena ]; }; diff --git a/nixos/tests/quake3.nix b/nixos/tests/quake3.nix index 4b7ca03b365b..ff4025e56f4c 100644 --- a/nixos/tests/quake3.nix +++ b/nixos/tests/quake3.nix @@ -21,7 +21,7 @@ let { pkgs, ... }: { imports = [ ./common/x11.nix ]; - hardware.opengl.driSupport = true; + hardware.graphics.enable = true; environment.systemPackages = [ pkgs.quake3demo ]; nixpkgs.config.packageOverrides = overrides; nixpkgs.config.allowUnfreePredicate = unfreePredicate; diff --git a/nixos/tests/seatd.nix b/nixos/tests/seatd.nix index 138a6cb1cf44..9178492fdb0e 100644 --- a/nixos/tests/seatd.nix +++ b/nixos/tests/seatd.nix @@ -39,7 +39,7 @@ in dwl -s 'foot touch /tmp/foot_started' ''; - hardware.opengl.enable = true; + hardware.graphics.enable = true; virtualisation.qemu.options = [ "-vga none -device virtio-gpu-pci" ]; services.seatd.enable = true; }; diff --git a/nixos/tests/tinywl.nix b/nixos/tests/tinywl.nix index 9199866b57af..2dc354812a75 100644 --- a/nixos/tests/tinywl.nix +++ b/nixos/tests/tinywl.nix @@ -16,7 +16,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: systemPackages = with pkgs; [ tinywl foot wayland-utils ]; }; - hardware.opengl.enable = true; + hardware.graphics.enable = true; # Automatically start TinyWL when logging in on tty1: programs.bash.loginShellInit = '' diff --git a/pkgs/games/steam/fhsenv.nix b/pkgs/games/steam/fhsenv.nix index 559aee92c9f3..a2157da80d6b 100644 --- a/pkgs/games/steam/fhsenv.nix +++ b/pkgs/games/steam/fhsenv.nix @@ -280,7 +280,7 @@ in buildFHSEnv rec { WARNING: Steam is not set up. Add the following options to /etc/nixos/configuration.nix and then run \`sudo nixos-rebuild switch\`: { - hardware.opengl.driSupport32Bit = true; + hardware.graphics.enable32Bit = true; hardware.pulseaudio.support32Bit = true; } ** From 1e3c610b8442bb22be3ca39542894f16d3c94d5c Mon Sep 17 00:00:00 2001 From: K900 Date: Sun, 16 Jun 2024 13:53:41 +0300 Subject: [PATCH 3/3] nixos/hardware/video/virtualbox: move from generic opengl module --- nixos/modules/hardware/graphics.nix | 6 ------ nixos/modules/hardware/video/virtualbox.nix | 7 +++++++ nixos/modules/module-list.nix | 1 + 3 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 nixos/modules/hardware/video/virtualbox.nix diff --git a/nixos/modules/hardware/graphics.nix b/nixos/modules/hardware/graphics.nix index df41ee175d3d..99c122f75c2a 100644 --- a/nixos/modules/hardware/graphics.nix +++ b/nixos/modules/hardware/graphics.nix @@ -2,10 +2,6 @@ let cfg = config.hardware.graphics; - kernelPackages = config.boot.kernelPackages; - - videoDrivers = config.services.xserver.videoDrivers; - driversEnv = pkgs.buildEnv { name = "graphics-drivers"; paths = [ cfg.package ] ++ cfg.extraPackages; @@ -126,7 +122,5 @@ in hardware.graphics.package = lib.mkDefault pkgs.mesa.drivers; hardware.graphics.package32 = lib.mkDefault pkgs.pkgsi686Linux.mesa.drivers; - - boot.extraModulePackages = lib.optional (lib.elem "virtualbox" videoDrivers) kernelPackages.virtualboxGuestAdditions; }; } diff --git a/nixos/modules/hardware/video/virtualbox.nix b/nixos/modules/hardware/video/virtualbox.nix new file mode 100644 index 000000000000..31ed92b7d148 --- /dev/null +++ b/nixos/modules/hardware/video/virtualbox.nix @@ -0,0 +1,7 @@ +{ lib, config, ... }: +let + inherit (config.boot) kernelPackages; + inherit (config.services.xserver) videoDrivers; +in { + boot.extraModulePackages = lib.mkIf (lib.elem "virtualbox" videoDrivers) [ kernelPackages.virtualboxGuestAdditions ]; +} diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 8b5b6c148ec8..2590e8d0d131 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -110,6 +110,7 @@ ./hardware/video/nvidia.nix ./hardware/video/switcheroo-control.nix ./hardware/video/uvcvideo/default.nix + ./hardware/video/virtualbox.nix ./hardware/video/webcam/facetimehd.nix ./hardware/video/webcam/ipu6.nix ./hardware/wooting.nix