summary refs log tree commit diff
path: root/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix')
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix28
1 files changed, 26 insertions, 2 deletions
diff --git a/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix b/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix
index 9b216c9e4ce..0e61f4aaeca 100644
--- a/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix
+++ b/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix
@@ -2,13 +2,16 @@
 , stdenv
 , fetchFromGitHub
 , cmake
+, extra-cmake-modules
 , ninja
 , wayland
+, wayland-scanner
 , obs-studio
 , libX11
 , vulkan-headers
 , vulkan-loader
 , libGL
+, obs-vkcapture32
 }:
 
 stdenv.mkDerivation rec {
@@ -22,8 +25,29 @@ stdenv.mkDerivation rec {
     hash = "sha256-yaN0am24p9gC+s64Rop+jQ3952UOtZund/KttnVxP48=";
   };
 
-  nativeBuildInputs = [ cmake ninja ];
-  buildInputs = [ libGL libX11 obs-studio vulkan-headers vulkan-loader wayland ];
+  cmakeFlags = lib.optionals stdenv.isi686 [
+    # We don't want to build the plugin for 32bit. The library integrates with
+    # the 64bit plugin but it's necessary to be loaded into 32bit games.
+    "-DBUILD_PLUGIN=OFF"
+  ];
+
+  nativeBuildInputs = [ cmake extra-cmake-modules ninja wayland-scanner ];
+  buildInputs = [
+    libGL
+    libX11
+    vulkan-headers
+    vulkan-loader
+    wayland
+  ]
+  ++ lib.optionals (!stdenv.isi686) [
+    obs-studio
+  ];
+
+  # Support 32bit Vulkan applications by linking in the 32bit Vulkan layer
+  postInstall = lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux") ''
+    ln -s ${obs-vkcapture32}/share/vulkan/implicit_layer.d/obs_vkcapture_32.json \
+      "$out/share/vulkan/implicit_layer.d/"
+  '';
 
   meta = with lib; {
     description = "OBS Linux Vulkan/OpenGL game capture";