diff --git a/nixos/modules/hardware/video/nvidia.nix b/nixos/modules/hardware/video/nvidia.nix index cf723d53269b..161ed9457af9 100644 --- a/nixos/modules/hardware/video/nvidia.nix +++ b/nixos/modules/hardware/video/nvidia.nix @@ -49,6 +49,10 @@ in Option "RandRRotation" "on" ''; + environment.etc."nvidia/nvidia-application-profiles-rc" = mkIf nvidia_x11.useProfiles { + source = "${nvidia_x11.bin}/share/nvidia/nvidia-application-profiles-rc"; + }; + hardware.opengl.package = nvidiaPackage nvidia_x11 pkgs; hardware.opengl.package32 = nvidiaPackage nvidia_libs32 pkgs_i686; diff --git a/pkgs/os-specific/linux/nvidia-x11/builder.sh b/pkgs/os-specific/linux/nvidia-x11/builder.sh index 7dee6b4776c1..24a2e2cf06ff 100755 --- a/pkgs/os-specific/linux/nvidia-x11/builder.sh +++ b/pkgs/os-specific/linux/nvidia-x11/builder.sh @@ -68,6 +68,13 @@ installPhase() { nuke-refs $i cp $i $bin/lib/modules/$kernelVersion/misc/ done + + # Install application profiles. + if [ "$useProfiles" = "1" ]; then + mkdir -p $bin/share/nvidia + cp nvidia-application-profiles-*-rc $bin/share/nvidia/nvidia-application-profiles-rc + cp nvidia-application-profiles-*-key-documentation $bin/share/nvidia/nvidia-application-profiles-key-documentation + fi fi # All libs except GUI-only are installed now, so fixup them. diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix index 204ef62138a1..5e26fef6e19d 100644 --- a/pkgs/os-specific/linux/nvidia-x11/default.nix +++ b/pkgs/os-specific/linux/nvidia-x11/default.nix @@ -37,6 +37,7 @@ in settingsSha256 = "0q92xw4fr9p5nbhj1plynm50d32881861daxfwrisywszqijhmlf"; persistencedSha256 = null; useGLVND = false; + useProfiles = false; }; legacy_173 = callPackage ./legacy173.nix { }; diff --git a/pkgs/os-specific/linux/nvidia-x11/generic.nix b/pkgs/os-specific/linux/nvidia-x11/generic.nix index 1398dae0e64f..9e39a6df09c1 100644 --- a/pkgs/os-specific/linux/nvidia-x11/generic.nix +++ b/pkgs/os-specific/linux/nvidia-x11/generic.nix @@ -4,6 +4,7 @@ , settingsSha256 , persistencedSha256 , useGLVND ? true +, useProfiles ? true , preferGtk2 ? false }: @@ -41,7 +42,7 @@ let } else throw "nvidia-x11 does not support platform ${stdenv.system}"; - inherit version useGLVND; + inherit version useGLVND useProfiles; inherit (stdenv) system; outputs = [ "out" ] ++ optional (!libsOnly) "bin"; diff --git a/pkgs/os-specific/linux/nvidia-x11/legacy173.nix b/pkgs/os-specific/linux/nvidia-x11/legacy173.nix index 19199579e77f..6e5b412a9b8f 100644 --- a/pkgs/os-specific/linux/nvidia-x11/legacy173.nix +++ b/pkgs/os-specific/linux/nvidia-x11/legacy173.nix @@ -42,6 +42,7 @@ stdenv.mkDerivation { settings = null; persistenced = null; useGLVND = false; + useProfiles = false; }; meta = { diff --git a/pkgs/os-specific/linux/nvidia-x11/settings.nix b/pkgs/os-specific/linux/nvidia-x11/settings.nix index abf208cff93b..f89997441649 100644 --- a/pkgs/os-specific/linux/nvidia-x11/settings.nix +++ b/pkgs/os-specific/linux/nvidia-x11/settings.nix @@ -24,6 +24,10 @@ stdenv.mkDerivation rec { makeFlags = [ "NV_USE_BUNDLED_LIBJANSSON=0" ]; installFlags = [ "PREFIX=$(out)" ]; + postPatch = lib.optionalString nvidia_x11.useProfiles '' + sed -i 's,/usr/share/nvidia/,${nvidia_x11.bin}/share/nvidia/,g' src/gtk+-2.x/ctkappprofile.c + ''; + preBuild = '' if [ -e src/libXNVCtrl/libXNVCtrl.a ]; then ( cd src/libXNVCtrl