diff --git a/nixos/modules/hardware/video/nvidia.nix b/nixos/modules/hardware/video/nvidia.nix index 1e125eced2cb..73d3451c71c3 100644 --- a/nixos/modules/hardware/video/nvidia.nix +++ b/nixos/modules/hardware/video/nvidia.nix @@ -143,6 +143,15 @@ in ''; }; + hardware.nvidia.nvidiaSettings = mkOption { + default = true; + type = types.bool; + description = '' + Whether to add nvidia-settings, NVIDIA's GUI configuration tool, to + systemPackages. + ''; + }; + hardware.nvidia.nvidiaPersistenced = mkOption { default = false; type = types.bool; @@ -279,7 +288,8 @@ in hardware.opengl.extraPackages = optional offloadCfg.enable nvidia_x11.out; hardware.opengl.extraPackages32 = optional offloadCfg.enable nvidia_x11.lib32; - environment.systemPackages = [ nvidia_x11.bin nvidia_x11.settings ] + environment.systemPackages = [ nvidia_x11.bin ] + ++ optionals nvidiaSettings [ nvidia_x11.settings ] ++ optionals nvidiaPersistencedEnabled [ nvidia_x11.persistenced ]; systemd.packages = optional cfg.powerManagement.enable nvidia_x11.out; diff --git a/pkgs/os-specific/linux/nvidia-x11/builder.sh b/pkgs/os-specific/linux/nvidia-x11/builder.sh index 448e91986fc6..51bd4d725a8b 100755 --- a/pkgs/os-specific/linux/nvidia-x11/builder.sh +++ b/pkgs/os-specific/linux/nvidia-x11/builder.sh @@ -17,10 +17,8 @@ buildPhase() { # Create the module. echo "Building linux driver against kernel: $kernel"; cd kernel - sysSrc=$(echo $kernel/lib/modules/$kernelVersion/source) - sysOut=$(echo $kernel/lib/modules/$kernelVersion/build) unset src # used by the nv makefile - make IGNORE_PREEMPT_RT_PRESENCE=1 NV_BUILD_SUPPORTS_HMM=1 SYSSRC=$sysSrc SYSOUT=$sysOut module -j$NIX_BUILD_CORES + make $makeFlags -j $NIX_BUILD_CORES module cd .. fi diff --git a/pkgs/os-specific/linux/nvidia-x11/generic.nix b/pkgs/os-specific/linux/nvidia-x11/generic.nix index 2d325ab3d565..282d9728821e 100644 --- a/pkgs/os-specific/linux/nvidia-x11/generic.nix +++ b/pkgs/os-specific/linux/nvidia-x11/generic.nix @@ -75,6 +75,13 @@ let kernel = if libsOnly then null else kernel.dev; kernelVersion = if libsOnly then null else kernel.modDirVersion; + makeFlags = optionals (!libsOnly) (kernel.makeFlags ++ [ + "IGNORE_PREEMPT_RT_PRESENCE=1" + "NV_BUILD_SUPPORTS_HMM=1" + "SYSSRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source" + "SYSOUT=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" + ]); + hardeningDisable = [ "pic" "format" ]; dontStrip = true; diff --git a/pkgs/os-specific/linux/nvidia-x11/persistenced.nix b/pkgs/os-specific/linux/nvidia-x11/persistenced.nix index 9a3daa3d2705..5276dfd2aff4 100644 --- a/pkgs/os-specific/linux/nvidia-x11/persistenced.nix +++ b/pkgs/os-specific/linux/nvidia-x11/persistenced.nix @@ -21,6 +21,8 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ m4 ]; buildInputs = [ libtirpc ]; + inherit (nvidia_x11) makeFlags; + installFlags = [ "PREFIX=$(out)" ]; postFixup = '' diff --git a/pkgs/os-specific/linux/nvidia-x11/settings.nix b/pkgs/os-specific/linux/nvidia-x11/settings.nix index d5bbf40e2b8a..873e09df8dfb 100644 --- a/pkgs/os-specific/linux/nvidia-x11/settings.nix +++ b/pkgs/os-specific/linux/nvidia-x11/settings.nix @@ -24,7 +24,7 @@ let cd src/libXNVCtrl ''; - makeFlags = [ + makeFlags = nvidia_x11.makeFlags ++ [ "OUTPUTDIR=." # src/libXNVCtrl ]; @@ -51,7 +51,7 @@ stdenv.mkDerivation { ++ lib.optionals withGtk3 [ gtk3 librsvg wrapGAppsHook ]; enableParallelBuilding = true; - makeFlags = [ "NV_USE_BUNDLED_LIBJANSSON=0" ]; + makeFlags = nvidia_x11.makeFlags ++ [ "NV_USE_BUNDLED_LIBJANSSON=0" ]; installFlags = [ "PREFIX=$(out)" ]; postPatch = lib.optionalString nvidia_x11.useProfiles '' @@ -61,7 +61,7 @@ stdenv.mkDerivation { preBuild = '' if [ -e src/libXNVCtrl/libXNVCtrl.a ]; then ( cd src/libXNVCtrl - make + make $makeFlags ) fi '';