From d6be38280c48808937dfa8b03ae3b89e48f0ed0c Mon Sep 17 00:00:00 2001 From: Atemu Date: Mon, 29 Aug 2022 13:57:18 +0200 Subject: [PATCH] obs-studio-plugins.obs-vkcapture: enable 32bit support (#188699) --- .../video/obs-studio/plugins/default.nix | 6 +++-- .../obs-studio/plugins/obs-vkcapture.nix | 24 ++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/video/obs-studio/plugins/default.nix b/pkgs/applications/video/obs-studio/plugins/default.nix index 3d547b4c2dd4..a6a4ea572143 100644 --- a/pkgs/applications/video/obs-studio/plugins/default.nix +++ b/pkgs/applications/video/obs-studio/plugins/default.nix @@ -1,4 +1,4 @@ -{ callPackage, libsForQt5 }: +{ callPackage, libsForQt5, pkgsi686Linux }: { obs-gstreamer = callPackage ./obs-gstreamer.nix {}; @@ -10,6 +10,8 @@ looking-glass-obs = callPackage ./looking-glass-obs.nix {}; obs-nvfbc = callPackage ./obs-nvfbc.nix {}; obs-pipewire-audio-capture = callPackage ./obs-pipewire-audio-capture.nix {}; - obs-vkcapture = callPackage ./obs-vkcapture.nix {}; + obs-vkcapture = callPackage ./obs-vkcapture.nix { + obs-vkcapture32 = pkgsi686Linux.obs-studio-plugins.obs-vkcapture; + }; obs-backgroundremoval = callPackage ./obs-backgroundremoval.nix {}; } diff --git a/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix b/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix index 9b216c9e4ceb..7b151f0751b6 100644 --- a/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix +++ b/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix @@ -9,6 +9,7 @@ , vulkan-headers , vulkan-loader , libGL +, obs-vkcapture32 }: stdenv.mkDerivation rec { @@ -22,8 +23,29 @@ stdenv.mkDerivation rec { hash = "sha256-yaN0am24p9gC+s64Rop+jQ3952UOtZund/KttnVxP48="; }; + 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 ninja ]; - buildInputs = [ libGL libX11 obs-studio vulkan-headers vulkan-loader wayland ]; + 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";