From 2e5606634fb3700c5d42b514f95e923bcd7d573a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?PedroHLC=20=E2=98=AD?= Date: Mon, 1 Aug 2022 19:39:28 -0300 Subject: [PATCH 1/3] obs-gstreamer: 0.3.3 -> 0.3.4 --- pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix b/pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix index 20c49692b8d3..e4309afe15b6 100644 --- a/pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix +++ b/pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix @@ -10,13 +10,13 @@ stdenv.mkDerivation rec { pname = "obs-gstreamer"; - version = "0.3.3"; + version = "0.3.4"; src = fetchFromGitHub { owner = "fzwoch"; repo = "obs-gstreamer"; rev = "v${version}"; - hash = "sha256-KhSBZcV2yILTf5+aNoYWDfNwPiJoyYPeIOQMDFvOusg="; + hash = "sha256-CDtWe4bx1M06nfqvVmIZaLQoKAsXFnG0Xy/mhiSbMgU="; }; nativeBuildInputs = [ pkg-config meson ninja ]; From a035b1b5acd8caa4c8b13112e8b9f6a36133a95f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?PedroHLC=20=E2=98=AD?= Date: Wed, 3 Aug 2022 12:49:24 -0300 Subject: [PATCH 2/3] obs-gstreamer: add pedrohlc as maintainer --- pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix b/pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix index e4309afe15b6..b04bcd86dccb 100644 --- a/pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix +++ b/pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "An OBS Studio source, encoder and video filter plugin to use GStreamer elements/pipelines in OBS Studio"; homepage = "https://github.com/fzwoch/obs-gstreamer"; - maintainers = with maintainers; [ ahuzik ]; + maintainers = with maintainers; [ ahuzik pedrohlc ]; license = licenses.gpl2Plus; platforms = [ "x86_64-linux" "i686-linux" ]; }; From cc26a157cabe5991e7d2d8f58f5189881d1cd97b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?PedroHLC=20=E2=98=AD?= Date: Wed, 3 Aug 2022 13:19:32 -0300 Subject: [PATCH 3/3] obs-studio-wrapper: allow plugins' arguments --- .../obs-studio/plugins/obs-gstreamer.nix | 19 ++++++++++++++++++ .../applications/video/obs-studio/wrapper.nix | 20 +++++++++++++------ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix b/pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix index b04bcd86dccb..014a7ef2fbaa 100644 --- a/pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix +++ b/pkgs/applications/video/obs-studio/plugins/obs-gstreamer.nix @@ -22,6 +22,25 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ pkg-config meson ninja ]; buildInputs = with gst_all_1; [ gstreamer gst-plugins-base obs-studio ]; + # - We need "getLib" instead of default derivation, otherwise it brings gstreamer-bin; + # - without gst-plugins-base it won't even show proper errors in logs; + # - Without gst-plugins-bad it won't find element "h264parse"; + # - gst-vaapi adds "VA-API" to "Encoder type"; + # - gst-plugins-ugly adds "x264" to "Encoder type"; + # Tip: "could not link appsrc to videoconvert1" can mean a lot of things, enable GST_DEBUG=2 for help. + passthru.obsWrapperArguments = + let + gstreamerHook = package: "--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : ${lib.getLib package}/lib/gstreamer-1.0"; + in + with gst_all_1; builtins.map gstreamerHook [ + gstreamer + gst-plugins-base + gst-plugins-bad + + gst-plugins-ugly + gst-vaapi + ]; + meta = with lib; { description = "An OBS Studio source, encoder and video filter plugin to use GStreamer elements/pipelines in OBS Studio"; homepage = "https://github.com/fzwoch/obs-gstreamer"; diff --git a/pkgs/applications/video/obs-studio/wrapper.nix b/pkgs/applications/video/obs-studio/wrapper.nix index 3871151bbb28..80880d9318d9 100644 --- a/pkgs/applications/video/obs-studio/wrapper.nix +++ b/pkgs/applications/video/obs-studio/wrapper.nix @@ -1,4 +1,4 @@ -{ obs-studio, symlinkJoin, makeWrapper }: +{ lib, obs-studio, symlinkJoin, makeWrapper }: { plugins ? [] }: @@ -8,11 +8,19 @@ symlinkJoin { nativeBuildInputs = [ makeWrapper ]; paths = [ obs-studio ] ++ plugins; - postBuild = '' - wrapProgram $out/bin/obs \ - --set OBS_PLUGINS_PATH "$out/lib/obs-plugins" \ - --set OBS_PLUGINS_DATA_PATH "$out/share/obs/obs-plugins" - ''; + postBuild = with lib; + let + # Some plugins needs extra environment, see obs-gstreamer for an example. + pluginArguments = + lists.concatMap (plugin: plugin.obsWrapperArguments or []) plugins; + + wrapCommand = [ + "wrapProgram" + "$out/bin/obs" + ''--set OBS_PLUGINS_PATH "$out/lib/obs-plugins"'' + ''--set OBS_PLUGINS_DATA_PATH "$out/share/obs/obs-plugins"'' + ] ++ pluginArguments; + in concatStringsSep " " wrapCommand; inherit (obs-studio) meta; passthru = obs-studio.passthru // {