diff options
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio')
6 files changed, 120 insertions, 57 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/default.nix index c8d70c72fbac..cdecde6b869a 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/default.nix @@ -32,6 +32,7 @@ , alsaLib , pulseaudioSupport ? config.pulseaudio or stdenv.isLinux , libpulseaudio +, libcef }: let @@ -39,13 +40,14 @@ let in mkDerivation rec { pname = "obs-studio"; - version = "26.0.0"; + version = "26.0.2"; src = fetchFromGitHub { owner = "obsproject"; repo = "obs-studio"; - rev = version; - sha256 = "09y57b3c88szl3wyx3cxq8jrm3pfnyg2n25hxl1ynkq3rgaavdq2"; + rev = "refs/tags/${version}"; + sha256 = "1bf56z2yb7gq1knqwcqj369c3wl9jr3wll5vlngmfy2gwqrczjmw"; + fetchSubmodules = true; }; nativeBuildInputs = [ addOpenGLRunpath cmake pkgconfig ]; @@ -55,6 +57,7 @@ in mkDerivation rec { fdk_aac ffmpeg jansson + libcef libjack2 libv4l libxkbcommon @@ -73,6 +76,18 @@ in mkDerivation rec { ++ optional alsaSupport alsaLib ++ optional pulseaudioSupport libpulseaudio; + # Copied from the obs-linuxbrowser + postUnpack = '' + mkdir -p cef/Release cef/Resources cef/libcef_dll_wrapper/ + for i in ${libcef}/share/cef/*; do + cp -r $i cef/Release/ + cp -r $i cef/Resources/ + done + cp -r ${libcef}/lib/libcef.so cef/Release/ + cp -r ${libcef}/lib/libcef_dll_wrapper.a cef/libcef_dll_wrapper/ + cp -r ${libcef}/include cef/ + ''; + # obs attempts to dlopen libobs-opengl, it fails unless we make sure # DL_OPENGL is an explicit path. Not sure if there's a better way # to handle this. @@ -80,6 +95,9 @@ in mkDerivation rec { "-DCMAKE_CXX_FLAGS=-DDL_OPENGL=\\\"$(out)/lib/libobs-opengl.so\\\"" "-DOBS_VERSION_OVERRIDE=${version}" "-Wno-dev" # kill dev warnings that are useless for packaging + # Add support for browser source + "-DBUILD_BROWSER=ON" + "-DCEF_ROOT_DIR=../../cef" ]; postInstall = '' diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/linuxbrowser.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/linuxbrowser.nix deleted file mode 100644 index a33383937fb8..000000000000 --- a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/linuxbrowser.nix +++ /dev/null @@ -1,49 +0,0 @@ -# We don't have a wrapper which can supply obs-studio plugins so you have to -# somewhat manually install this: - -# nix-env -f . -iA obs-linuxbrowser -# mkdir -p ~/.config/obs-studio/plugins -# ln -s ~/.nix-profile/share/obs/obs-plugins/obs-linuxbrowser ~/.config/obs-studio/plugins/ - -{ stdenv, fetchFromGitHub, obs-studio, cmake, libcef }: - -stdenv.mkDerivation rec { - pname = "obs-linuxbrowser"; - version = "0.6.1-6-gf86dba6"; - - src = fetchFromGitHub { - owner = "bazukas"; - repo = "obs-linuxbrowser"; - rev = version; - sha256 = "08d7qz0721va88bcyia8p0ycw50f6x3yk97s3vzhsc9xpq691kpi"; - }; - - nativeBuildInputs = [ cmake ]; - buildInputs = [ obs-studio ]; - postUnpack = '' - mkdir -p cef/Release cef/Resources cef/libcef_dll_wrapper/ - for i in ${libcef}/share/cef/*; do - ln -s $i cef/Release/ - ln -s $i cef/Resources/ - done - ln -s ${libcef}/lib/libcef.so cef/Release/ - ln -s ${libcef}/lib/libcef_dll_wrapper.a cef/libcef_dll_wrapper/ - ln -s ${libcef}/include cef/ - ''; - cmakeFlags = [ - "-DCEF_ROOT_DIR=../../cef" - "-DOBS_INCLUDE_SEARCH_DIR=${obs-studio}/include/obs" - ]; - installPhase = '' - mkdir -p $out/share/obs/obs-plugins - cp -r build/obs-linuxbrowser $out/share/obs/obs-plugins/ - ''; - - meta = with stdenv.lib; { - description = "Browser source plugin for obs-studio based on Chromium Embedded Framework"; - homepage = "https://github.com/bazukas/obs-linuxbrowser"; - maintainers = with maintainers; [ puffnfresh ]; - license = licenses.gpl2; - platforms = with platforms; linux; - }; -} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/obs-move-transition.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/obs-move-transition.nix new file mode 100644 index 000000000000..70985b438c6b --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/obs-move-transition.nix @@ -0,0 +1,60 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchpatch +, fetchurl +, cmake +, obs-studio +}: + +stdenv.mkDerivation rec { + pname = "obs-move-transition"; + version = "2.0.2"; + + src = fetchFromGitHub { + owner = "exeldro"; + repo = "obs-move-transition"; + rev = version; + sha256 = "0kr868lxlanq0y98f2hb70y92ac2nla8khsj879kjf3z6dqdpd66"; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ obs-studio ]; + + cmakeFlags = with lib; [ + "-DLIBOBS_INCLUDE_DIR=${obs-studio.src}/libobs" + "-Wno-dev" + ]; + + preConfigure = '' + cp ${obs-studio.src}/cmake/external/FindLibobs.cmake FindLibobs.cmake + ''; + + patches = [ ./rename-obs-move-transition-cmake.patch ]; + + postPatch = '' + substituteInPlace move-source-filter.c --replace '<../UI/obs-frontend-api/obs-frontend-api.h>' '<obs-frontend-api.h>' + substituteInPlace move-value-filter.c --replace '<../UI/obs-frontend-api/obs-frontend-api.h>' '<obs-frontend-api.h>' + substituteInPlace move-transition.c --replace '<../UI/obs-frontend-api/obs-frontend-api.h>' '<obs-frontend-api.h>' + ''; + + # obs-studio expects the shared object to be located in bin/32bit or bin/64bit + # https://github.com/obsproject/obs-studio/blob/d60c736cb0ec0491013293c8a483d3a6573165cb/libobs/obs-nix.c#L48 + postInstall = let + pluginPath = { + i686-linux = "bin/32bit"; + x86_64-linux = "bin/64bit"; + }.${stdenv.targetPlatform.system} or (throw "Unsupported system: ${stdenv.targetPlatform.system}"); + in '' + mkdir -p $out/share/obs/obs-plugins/move-transition/${pluginPath} + ln -s $out/lib/obs-plugins/move-transition.so $out/share/obs/obs-plugins/move-transition/${pluginPath} + ''; + + meta = with lib; { + description = "Plugin for OBS Studio to move source to a new position during scene transition"; + homepage = "https://github.com/exeldro/obs-move-transition"; + maintainers = with maintainers; [ starcraft66 ]; + license = licenses.gpl2Plus; + platforms = [ "x86_64-linux" "i686-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/obs-ndi.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/obs-ndi.nix index f22ddd39ee4b..a250a365ac63 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/obs-ndi.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/obs-ndi.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { pname = "obs-ndi"; - version = "4.7.1"; + version = "4.9.1"; nativeBuildInputs = [ cmake ]; buildInputs = [ obs-studio qtbase ndi ]; @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { owner = "Palakis"; repo = "obs-ndi"; rev = version; - sha256 = "040fkbf3f3qgqcrd3072y3zrjb4fwga8zr10jym744xd7bgyylqh"; + sha256 = "1y3xdqp55jayhg4sinwiwpk194zc4f4jf0abz647x2fprsk9jz7s"; }; patches = [ ./fix-search-path.patch ./hardcode-ndi-path.patch ]; @@ -34,7 +34,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Network A/V plugin for OBS Studio"; homepage = "https://github.com/Palakis/obs-ndi"; - maintainers = with maintainers; [ peti ]; + maintainers = with maintainers; [ peti jshcmpbll ]; license = licenses.gpl2; platforms = with platforms; linux; }; diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/rename-obs-move-transition-cmake.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/rename-obs-move-transition-cmake.patch new file mode 100644 index 000000000000..24c1848c10ba --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/rename-obs-move-transition-cmake.patch @@ -0,0 +1,34 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index d116619..a1366ce 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,6 +1,17 @@ ++if (POLICY CMP0048) ++ cmake_policy(SET CMP0048 NEW) ++endif (POLICY CMP0048) ++ + project(move-transition VERSION 2.0.2) + set(PROJECT_FULL_NAME "Move Transition") + ++include(FindLibobs.cmake) ++find_package(LibObs REQUIRED) ++ ++include_directories( ++ "${LIBOBS_INCLUDE_DIR}/../plugins/obs-transitions" ++ "${LIBOBS_INCLUDE_DIR}/../UI/obs-frontend-api") ++ + set(move-transition_HEADERS + move-transition.h + easing.h) +@@ -34,4 +45,10 @@ target_link_libraries(move-transition + libobs) + + set_target_properties(move-transition PROPERTIES FOLDER "plugins/exeldro") +-install_obs_plugin_with_data(move-transition data) ++set_target_properties(move-transition PROPERTIES PREFIX "") ++ ++install(TARGETS move-transition ++ LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/obs-plugins) ++ ++install(DIRECTORY data/locale/ ++ DESTINATION "${CMAKE_INSTALL_PREFIX}/share/obs/obs-plugins/move-transition/locale") diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/wlrobs.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/wlrobs.nix index 99486a9ccc0c..14bc80dd3880 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/wlrobs.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/wlrobs.nix @@ -7,7 +7,7 @@ # ln -s ~/.nix-profile/share/obs/obs-plugins/wlrobs/bin/64bit/libwlrobs.so ~/.config/obs-studio/plugins/wlrobs/bin/64bit { stdenv, fetchhg, wayland, obs-studio , meson, ninja, pkgconfig, libX11 -, dmabufSupport ? false, libdrm ? null, libGL ? null}: +, dmabufSupport ? false, libdrm ? null, libGL ? null, lib}: assert dmabufSupport -> libdrm != null && libGL != null; @@ -29,7 +29,7 @@ stdenv.mkDerivation { ''; mesonFlags = [ - "-Duse_dmabuf=${if dmabufSupport then "true" else "false"}" + "-Duse_dmabuf=${lib.boolToString dmabufSupport}" ]; meta = with stdenv.lib; { |