push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,94 @@
{
lib,
fetchFromGitHub,
nix-update-script,
cmake,
ninja,
alsa-lib,
asio,
curl,
libremidi,
nlohmann_json,
obs-studio,
opencv,
procps,
qtbase,
stdenv,
websocketpp,
libXScrnSaver,
libusb1,
pkg-config,
# #FIXME: Could not get cmake to pick up on these dependencies
# Ommiting them prevents cmake from building the OCR video capabilities
# Everything else should work it's just missing this one plugin
# tesseract,
# leptonica,
}:
let
httplib-src = fetchFromGitHub {
owner = "yhirose";
repo = "cpp-httplib";
rev = "v0.13.3";
hash = "sha256-ESaH0+n7ycpOKM+Mnv/UgT16UEx86eFMQDHB3RVmgBw=";
};
in
stdenv.mkDerivation rec {
pname = "advanced-scene-switcher";
version = "1.31.0";
src = fetchFromGitHub {
owner = "WarmUpTill";
repo = "SceneSwitcher";
rev = version;
hash = "sha256-9gCGzIvVMQewphThdNJKUVgJYzrfkn18A97RL+4IHM8=";
};
nativeBuildInputs = [
cmake
ninja
pkg-config
];
buildInputs = [
alsa-lib
asio
curl
libremidi
nlohmann_json
obs-studio
opencv
# tesseract
# leptonica
procps
qtbase
websocketpp
libXScrnSaver
libusb1
];
dontWrapQtApps = true;
postUnpack = ''
cp -r ${httplib-src}/* $sourceRoot/deps/cpp-httplib
cp -r ${libremidi.src}/* $sourceRoot/deps/libremidi
chmod -R +w $sourceRoot/deps/cpp-httplib
chmod -R +w $sourceRoot/deps/libremidi
'';
# PipeWire support currently disabled in libremidi dependency.
# see https://github.com/NixOS/nixpkgs/pull/374469
cmakeFlags = [ (lib.cmakeBool "LIBREMIDI_NO_PIPEWIRE" true) ];
env.NIX_CFLAGS_COMPILE = "-Wno-error=stringop-overflow -Wno-error=deprecated-declarations";
passthru.updateScript = nix-update-script { };
meta = with lib; {
description = "Automated scene switcher for OBS Studio";
homepage = "https://github.com/WarmUpTill/SceneSwitcher";
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = with lib.maintainers; [ patrickdag ];
};
}

View File

@@ -0,0 +1,116 @@
{
callPackage,
qt6Packages,
pkgsi686Linux,
}:
# When adding new plugins:
# - Respect alphabetical order. On diversion, file a PR.
# - Plugin name should reflect upstream's name. Including or excluding "obs" prefix/suffix.
# - Add plugin to it's own directory (because of future patches).
{
advanced-scene-switcher = qt6Packages.callPackage ./advanced-scene-switcher { };
droidcam-obs = callPackage ./droidcam-obs { };
distroav = qt6Packages.callPackage ./distroav { };
input-overlay = qt6Packages.callPackage ./input-overlay.nix { };
looking-glass-obs = callPackage ./looking-glass-obs.nix { };
obs-3d-effect = callPackage ./obs-3d-effect.nix { };
obs-advanced-masks = callPackage ./obs-advanced-masks.nix { };
obs-aitum-multistream = qt6Packages.callPackage ./obs-aitum-multistream.nix { };
obs-backgroundremoval = callPackage ./obs-backgroundremoval { };
obs-browser-transition = callPackage ./obs-browser-transition.nix { };
obs-color-monitor = qt6Packages.callPackage ./obs-color-monitor.nix { };
obs-command-source = callPackage ./obs-command-source.nix { };
obs-composite-blur = callPackage ./obs-composite-blur.nix { };
obs-dir-watch-media = callPackage ./obs-dir-watch-media.nix { };
obs-dvd-screensaver = callPackage ./obs-dvd-screensaver.nix { };
obs-freeze-filter = qt6Packages.callPackage ./obs-freeze-filter.nix { };
obs-gradient-source = callPackage ./obs-gradient-source.nix { };
obs-gstreamer = callPackage ./obs-gstreamer.nix { };
obs-hyperion = qt6Packages.callPackage ./obs-hyperion/default.nix { };
obs-livesplit-one = callPackage ./obs-livesplit-one { };
obs-markdown = callPackage ./obs-markdown.nix { };
obs-media-controls = qt6Packages.callPackage ./obs-media-controls.nix { };
obs-move-transition = callPackage ./obs-move-transition.nix { };
obs-multi-rtmp = qt6Packages.callPackage ./obs-multi-rtmp { };
obs-mute-filter = callPackage ./obs-mute-filter.nix { };
obs-noise = callPackage ./obs-noise.nix { };
obs-pipewire-audio-capture = callPackage ./obs-pipewire-audio-capture.nix { };
obs-recursion-effect = callPackage ./obs-recursion-effect.nix { };
obs-replay-source = qt6Packages.callPackage ./obs-replay-source.nix { };
obs-retro-effects = callPackage ./obs-retro-effects.nix { };
obs-rgb-levels = callPackage ./obs-rgb-levels.nix { };
obs-scale-to-sound = callPackage ./obs-scale-to-sound.nix { };
obs-scene-as-transition = callPackage ./obs-scene-as-transition.nix { };
obs-shaderfilter = qt6Packages.callPackage ./obs-shaderfilter.nix { };
obs-source-clone = callPackage ./obs-source-clone.nix { };
obs-source-record = callPackage ./obs-source-record.nix { };
obs-source-switcher = callPackage ./obs-source-switcher.nix { };
obs-stroke-glow-shadow = callPackage ./obs-stroke-glow-shadow.nix { };
obs-teleport = callPackage ./obs-teleport { };
obs-text-pthread = callPackage ./obs-text-pthread.nix { };
obs-transition-table = qt6Packages.callPackage ./obs-transition-table.nix { };
obs-tuna = qt6Packages.callPackage ./obs-tuna { };
obs-vaapi = callPackage ./obs-vaapi { };
obs-vertical-canvas = qt6Packages.callPackage ./obs-vertical-canvas.nix { };
obs-vintage-filter = callPackage ./obs-vintage-filter.nix { };
obs-vkcapture = callPackage ./obs-vkcapture.nix {
obs-vkcapture32 = pkgsi686Linux.obs-studio-plugins.obs-vkcapture;
};
obs-vnc = callPackage ./obs-vnc.nix { };
obs-websocket = qt6Packages.callPackage ./obs-websocket.nix { }; # Websocket 4.x compatibility for OBS Studio 28+
pixel-art = callPackage ./pixel-art.nix { };
wlrobs = callPackage ./wlrobs.nix { };
waveform = callPackage ./waveform { };
}

View File

@@ -0,0 +1,61 @@
{
lib,
stdenv,
fetchFromGitHub,
obs-studio,
cmake,
qtbase,
ndi-6,
curl,
}:
stdenv.mkDerivation rec {
pname = "distroav";
version = "6.1.1";
nativeBuildInputs = [
cmake
qtbase
];
buildInputs = [
obs-studio
qtbase
ndi-6
curl
];
src = fetchFromGitHub {
owner = "DistroAV";
repo = "DistroAV";
tag = version;
hash = "sha256-nbXh6bjpiKbvuntZSnuTWWpmhfAcep7Krjjq8FvbENk=";
};
# Modify plugin-main.cpp file to fix ndi libs path
patches = [ ./hardcode-ndi-path.patch ];
postPatch = ''
# Add path (variable added in hardcode-ndi-path.patch
substituteInPlace src/plugin-main.cpp --replace-fail "@NDI@" "${ndi-6}"
# Replace bundled NDI SDK with the upstream version
# (This fixes soname issues)
rm -rf lib/ndi
ln -s ${ndi-6}/include lib/ndi
'';
cmakeFlags = [ "-DENABLE_QT=ON" ];
env.NIX_CFLAGS_COMPILE = "-Wno-deprecated-declarations";
dontWrapQtApps = true;
meta = {
description = "Network A/V plugin for OBS Studio (formerly obs-ndi)";
homepage = "https://github.com/DistroAV/DistroAV";
license = with lib.licenses; [ gpl2 ];
maintainers = with lib.maintainers; [ globule655 ];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,20 @@
diff --git a/src/plugin-main.cpp b/src/plugin-main.cpp
index 43f0e28..5e393c6 100644
--- a/src/plugin-main.cpp
+++ b/src/plugin-main.cpp
@@ -412,14 +412,7 @@ const NDIlib_v5 *load_ndilib()
if (!temp_path.isEmpty()) {
locations << temp_path;
}
-#if defined(Q_OS_LINUX) || defined(Q_OS_MACOS)
- // Linux, MacOS
- // https://github.com/DistroAV/DistroAV/blob/master/lib/ndi/NDI%20SDK%20Documentation.pdf
- // "6.1 LOCATING THE LIBRARY
- // ... the redistributable on MacOS is installed within `/usr/local/lib` ..."
- locations << "/usr/lib";
- locations << "/usr/local/lib";
-#endif
+ locations << "@NDI@/lib";
auto lib_path = QString();
#if defined(Q_OS_LINUX)
// Linux

View File

@@ -0,0 +1,75 @@
{
lib,
stdenv,
fetchFromGitHub,
obs-studio,
ffmpeg,
libjpeg,
libimobiledevice,
libusbmuxd,
libplist,
pkg-config,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "droidcam-obs";
version = "2.4.1";
src = fetchFromGitHub {
owner = "dev47apps";
repo = "droidcam-obs-plugin";
tag = finalAttrs.version;
sha256 = "sha256-hxG/v15Q4D+6LU4BNV6ErSa1WvPk4kMPl07pIqiMcc4=";
};
preBuild = ''
mkdir ./build
'';
buildInputs = [
libjpeg
libimobiledevice
libusbmuxd
libplist
obs-studio
ffmpeg
];
nativeBuildInputs = [
pkg-config
];
# Flag reference in regard to:
# https://github.com/dev47apps/droidcam-obs-plugin/blob/master/linux/linux.mk
makeFlags = [
"ALLOW_STATIC=no"
"JPEG_DIR=${lib.getDev libjpeg}"
"JPEG_LIB=${lib.getLib libjpeg}/lib"
"IMOBILEDEV_DIR=${lib.getDev libimobiledevice}"
"IMOBILEDEV_DIR=${lib.getLib libimobiledevice}"
"LIBOBS_INCLUDES=${obs-studio}/include/obs"
"FFMPEG_INCLUDES=${lib.getLib ffmpeg}"
"LIBUSBMUXD=libusbmuxd-2.0"
"LIBIMOBILEDEV=libimobiledevice-1.0"
];
installPhase = ''
runHook preInstall
mkdir -p $out/share/obs/obs-plugins/droidcam-obs
mkdir -p $out/lib/obs-plugins
cp build/droidcam-obs.so $out/lib/obs-plugins
cp -R ./data/locale $out/share/obs/obs-plugins/droidcam-obs/locale
runHook postInstall
'';
doCheck = false;
meta = {
description = "DroidCam OBS";
homepage = "https://github.com/dev47apps/droidcam-obs-plugin";
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ NotAShelf ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,72 @@
{
stdenv,
lib,
fetchFromGitHub,
cmake,
pkg-config,
ninja,
obs-studio,
qtbase,
xorg,
libxkbcommon,
libxkbfile,
sdl3,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "obs-input-overlay";
version = "5.1.0-unstable-2025-09-23";
src = fetchFromGitHub {
owner = "univrsal";
repo = "input-overlay";
rev = "4d62e7d0c55f8ff62c3a0e7b1a8f3092086b23b7";
hash = "sha256-cUULaOoV4fffEvsHkcG3lnFCIHSvnv3LHg+SDuuVLao=";
fetchSubmodules = true;
};
nativeBuildInputs = [
cmake
pkg-config
ninja
];
buildInputs = [
obs-studio
qtbase
sdl3
xorg.libX11
xorg.libXau
xorg.libXdmcp
xorg.libXtst
xorg.libXext
xorg.libXi
xorg.libXt
xorg.libXinerama
libxkbcommon
libxkbfile
];
cmakeFlags = lib.optionals stdenv.hostPlatform.isx86 [
"-DCMAKE_CXX_FLAGS=-msse4.1"
];
postUnpack = ''
sed -i '/set(CMAKE_CXX_FLAGS "-march=native")/d' 'source/CMakeLists.txt'
'';
preFixup = ''
# Remove broken uiohook development files
rm -r $out/lib/cmake $out/lib/pkgconfig
'';
dontWrapQtApps = true;
meta = {
description = "Show keyboard, gamepad and mouse input on stream";
homepage = "https://github.com/univrsal/input-overlay";
maintainers = with lib.maintainers; [ glittershark ];
license = lib.licenses.gpl2;
inherit (obs-studio.meta) platforms;
};
})

View File

@@ -0,0 +1,43 @@
{
lib,
stdenv,
cmake,
libbfd,
SDL2,
libGL,
obs-studio,
looking-glass-client,
}:
stdenv.mkDerivation {
pname = "looking-glass-obs";
version = looking-glass-client.version;
src = looking-glass-client.src;
sourceRoot = "${looking-glass-client.src.name}/obs";
nativeBuildInputs = [ cmake ];
buildInputs = [
obs-studio
libbfd
SDL2
libGL
];
env.NIX_CFLAGS_COMPILE = "-mavx";
installPhase = ''
mkdir -p $out/lib/obs-plugins/
mv liblooking-glass-obs.so $out/lib/obs-plugins/
'';
meta = with lib; {
description = "Plugin for OBS Studio for efficient capturing of looking-glass";
homepage = "https://looking-glass.io/docs/stable/obs/";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ babbaj ];
# Hard coded x86_64 support
platforms = [ "x86_64-linux" ];
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-3d-effect";
version = "0.1.4";
src = fetchFromGitHub {
owner = "exeldro";
repo = "obs-3d-effect";
rev = version;
sha256 = "sha256-5cPXfEcKIATFQktjIN5lmYjvakYe/k26aHKlJz5FqPE=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
cmakeFlags = [
"-DBUILD_OUT_OF_TREE=On"
];
postInstall = ''
rm -rf $out/obs-plugins $out/data
'';
meta = with lib; {
description = "Plugin for OBS Studio adding 3D effect filter";
homepage = "https://github.com/exeldro/obs-3d-effect";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
stdenv,
fetchFromGitHub,
obs-studio,
cmake,
}:
stdenv.mkDerivation rec {
pname = "obs-advanced-masks";
version = "1.1.0";
src = fetchFromGitHub {
owner = "FiniteSingularity";
repo = "obs-advanced-masks";
rev = "refs/tags/v${version}";
hash = "sha256-NtmOWKk3eZeRa3TvclZpg4sj8lbOoY8hUhxs1z6kEW4=";
};
buildInputs = [
obs-studio
];
nativeBuildInputs = [
cmake
];
postInstall = ''
rm -rf "$out/share"
mkdir -p "$out/share/obs"
mv "$out/data/obs-plugins" "$out/share/obs"
rm -rf "$out/obs-plugins" "$out/data"
'';
meta = {
description = "Advanced Masking Plugin for OBS";
homepage = "https://github.com/FiniteSingularity/obs-advanced-masks";
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [ rytswd ];
mainProgram = "obs-advanced-masks";
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,14 @@
diff --color -urpN obs-aitum-multistream.bak/file-updater.c obs-aitum-multistream/file-updater.c
--- obs-aitum-multistream.bak/file-updater.c 2025-07-18 17:41:35.605779462 -0400
+++ obs-aitum-multistream/file-updater.c 2025-07-18 17:45:29.485046420 -0400
@@ -83,8 +83,8 @@ static bool do_http_request(struct updat
curl_easy_setopt(info->curl, CURLOPT_ERRORBUFFER, info->error);
curl_easy_setopt(info->curl, CURLOPT_WRITEFUNCTION, http_write);
curl_easy_setopt(info->curl, CURLOPT_WRITEDATA, info);
- curl_easy_setopt(info->curl, CURLOPT_FAILONERROR, true);
- curl_easy_setopt(info->curl, CURLOPT_NOSIGNAL, 1);
+ curl_easy_setopt(info->curl, CURLOPT_FAILONERROR, 1L);
+ curl_easy_setopt(info->curl, CURLOPT_NOSIGNAL, 1L);
curl_easy_setopt(info->curl, CURLOPT_ACCEPT_ENCODING, "");
curl_obs_set_revoke_setting(info->curl);

View File

@@ -0,0 +1,51 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
curl,
obs-studio,
qtbase,
}:
stdenv.mkDerivation rec {
pname = "obs-aitum-multistream";
version = "1.0.7";
src = fetchFromGitHub {
owner = "Aitum";
repo = "obs-aitum-multistream";
tag = version;
hash = "sha256-TqddyTBRWLyfwYi9I0nQE8Z19YL2RwkZqUwi7F9XpwQ=";
};
# Remove after https://github.com/Aitum/obs-aitum-multistream/pull/15 is released :)
patches = [ ./obs-aitum-multistream.diff ];
# Fix FTBFS with Qt >= 6.8
prePatch = ''
substituteInPlace CMakeLists.txt \
--replace-fail 'find_qt(COMPONENTS Widgets Core)' 'find_package(Qt6 REQUIRED COMPONENTS Core Widgets)'
'';
nativeBuildInputs = [ cmake ];
buildInputs = [
curl
obs-studio
qtbase
];
dontWrapQtApps = true;
cmakeFlags = [
# Prevent deprecation warnings from failing the build
(lib.cmakeOptionType "string" "CMAKE_CXX_FLAGS" "-Wno-error=deprecated-declarations")
];
meta = {
description = "Plugin to stream everywhere from a single instance of OBS";
homepage = "https://github.com/Aitum/obs-aitum-multistream";
maintainers = with lib.maintainers; [ flexiondotorg ];
license = lib.licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,63 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
ninja,
obs-studio,
onnxruntime,
opencv,
qt6,
curl,
}:
stdenv.mkDerivation rec {
pname = "obs-backgroundremoval";
version = "1.1.13";
src = fetchFromGitHub {
owner = "occ-ai";
repo = "obs-backgroundremoval";
rev = version;
hash = "sha256-QoC9/HkwOXMoFNvcOxQkGCLLAJmsja801LKCNT9O9T0=";
};
nativeBuildInputs = [
cmake
ninja
];
buildInputs = [
obs-studio
onnxruntime
opencv.cxxdev
qt6.qtbase
curl
];
dontWrapQtApps = true;
cmakeFlags = [
"--preset linux-x86_64"
"-DCMAKE_MODULE_PATH:PATH=${src}/cmake"
"-DUSE_SYSTEM_ONNXRUNTIME=ON"
"-DUSE_SYSTEM_OPENCV=ON"
"-DDISABLE_ONNXRUNTIME_GPU=ON"
];
buildPhase = ''
cd ..
cmake --build build_x86_64 --parallel
'';
installPhase = ''
cmake --install build_x86_64 --prefix "$out"
'';
meta = with lib; {
description = "OBS plugin to replace the background in portrait images and video";
homepage = "https://github.com/royshil/obs-backgroundremoval";
maintainers = with maintainers; [ zahrun ];
license = licenses.mit;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
stdenv,
fetchFromGitHub,
nix-update-script,
cmake,
obs-studio,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "obs-browser-transition";
version = "0.1.3";
src = fetchFromGitHub {
owner = "exeldro";
repo = "obs-browser-transition";
tag = finalAttrs.version;
hash = "sha256-m5UDqnqipkybXAZqS7c2Sj/mJKrDBkXElyc0I+c1BmE=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
postInstall = ''
rm -rf $out/obs-plugins $out/data
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Plugin for OBS Studio to show a browser source during scene transition";
homepage = "https://github.com/exeldro/obs-browser-transition";
maintainers = with lib.maintainers; [ flexiondotorg ];
license = lib.licenses.gpl2Only;
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,43 @@
{
stdenv,
lib,
fetchFromGitHub,
cmake,
obs-studio,
qtbase,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "obs-color-monitor";
version = "0.9.3";
src = fetchFromGitHub {
owner = "norihiro";
repo = "obs-color-monitor";
tag = finalAttrs.version;
hash = "sha256-TwsEIOgQjj1wza7i8nne63oBM3FB6GmMjCq8/PuiWHs=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [
obs-studio
qtbase
];
postInstall = ''
mkdir $out/lib $out/share
mv $out/obs-plugins/64bit $out/lib/obs-plugins
mv $out/data $out/share/obs
rm -rf $out/obs-plugins
'';
dontWrapQtApps = true;
meta = {
description = "Color Monitor plugin for OBS Studio";
homepage = "https://github.com/norihiro/obs-color-monitor";
license = lib.licenses.gpl2Only;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ hlad ];
};
})

View File

@@ -0,0 +1,37 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-command-source";
version = "0.5.0";
src = fetchFromGitHub {
owner = "norihiro";
repo = "obs-command-source";
rev = version;
sha256 = "sha256-yrzY4pHSupkkdRlx725oSVtQTH1Ci9zFolHN3i2Vm28=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
postInstall = ''
mkdir $out/lib $out/share
mv $out/obs-plugins/64bit $out/lib/obs-plugins
rm -rf $out/obs-plugins
mv $out/data $out/share/obs
'';
meta = with lib; {
description = "OBS Studio plugin that provides a dummy source to execute arbitrary commands when a scene is switched";
homepage = "https://github.com/norihiro/command-source";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
stdenv,
fetchFromGitHub,
obs-studio,
cmake,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "obs-composite-blur";
version = "1.5.2";
src = fetchFromGitHub {
owner = "FiniteSingularity";
repo = "obs-composite-blur";
tag = "v${finalAttrs.version}";
hash = "sha256-wT49bCxik8mrg+YleNelOPQQzqcYQR7ZSnzvPXA5D3g=";
};
buildInputs = [
obs-studio
];
nativeBuildInputs = [
cmake
];
postInstall = ''
rm -rf "$out/share"
mkdir -p "$out/share/obs"
mv "$out/data/obs-plugins" "$out/share/obs"
rm -rf "$out/obs-plugins" "$out/data"
'';
meta = {
description = "Comprehensive blur plugin for OBS that provides several different blur algorithms, and proper compositing";
homepage = "https://github.com/FiniteSingularity/obs-composite-blur";
changelog = "https://github.com/FiniteSingularity/obs-composite-blur/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [ GaetanLepage ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,34 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-dir-watch-media";
version = "0.7.0";
src = fetchFromGitHub {
owner = "exeldro";
repo = "obs-dir-watch-media";
rev = version;
sha256 = "sha256-zvg8Bu5wlcQe91ggteEj7G9Kx+mY1R6EN64T13vp7pc=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
postInstall = ''
rm -rf $out/obs-plugins $out/data
'';
meta = with lib; {
description = "Plugin for OBS Studio adding a filter that can watch a directory for media files";
homepage = "https://github.com/exeldro/obs-dir-watch-media";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Only;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,30 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "obs-dvd-screensaver";
version = "0.1.0";
src = fetchFromGitHub {
owner = "wimpysworld";
repo = "obs-dvd-screensaver";
tag = "${finalAttrs.version}";
hash = "sha256-eUfy3m0r/sLrGLbp3en1ofcVVWZ+t2rZ4knjwfrorhw=";
};
strictDeps = true;
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
meta = {
description = "DVD screen saver for OBS Studio";
homepage = "https://github.com/wimpysworld/obs-dvd-screensaver";
maintainers = with lib.maintainers; [ flexiondotorg ];
license = lib.licenses.gpl2Only;
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,44 @@
{
stdenv,
lib,
fetchFromGitHub,
cmake,
obs-studio,
qtbase,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "obs-freeze-filter";
version = "0.3.5";
src = fetchFromGitHub {
owner = "exeldro";
repo = "obs-freeze-filter";
rev = finalAttrs.version;
hash = "sha256-1x2r3Hdvx3y8reTWNUOgMqnOPaaUB75ibL6RuwEubQQ=";
fetchSubmodules = true;
};
nativeBuildInputs = [ cmake ];
buildInputs = [
obs-studio
qtbase
];
postInstall = ''
rm -rf "$out/share"
mkdir -p "$out/share/obs"
mv "$out/data/obs-plugins" "$out/share/obs"
rm -rf "$out/obs-plugins" "$out/data"
'';
dontWrapQtApps = true;
meta = with lib; {
description = "Plugin for OBS Studio to freeze a source using a filter";
homepage = "https://github.com/exeldro/obs-freeze-filter";
license = licenses.gpl2Only;
platforms = platforms.linux;
maintainers = with maintainers; [ pschmitt ];
};
})

View File

@@ -0,0 +1,38 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-gradient-source";
version = "0.3.2";
src = fetchFromGitHub {
owner = "exeldro";
repo = "obs-gradient-source";
rev = version;
sha256 = "sha256-5pll84UZYOTESrid2UuC1aWlaLrWf1LpXqlV09XKLug=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
cmakeFlags = [
"-DBUILD_OUT_OF_TREE=On"
];
postInstall = ''
rm -rf $out/obs-plugins $out/data
'';
meta = with lib; {
description = "Plugin for adding a gradient Source to OBS Studio";
homepage = "https://github.com/exeldro/obs-gradient-source";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,73 @@
{
lib,
stdenv,
fetchFromGitHub,
gst_all_1,
pkg-config,
meson,
ninja,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-gstreamer";
version = "0.4.1";
src = fetchFromGitHub {
owner = "fzwoch";
repo = "obs-gstreamer";
rev = "v${version}";
hash = "sha256-23LyxN1Vgol9uA7rDdfZXcmfhG4l0RfMYGbofbhObBE=";
};
postPatch = ''
substituteInPlace meson.build \
--replace-fail "'git', 'rev-parse', '--short', 'HEAD'" "'echo', '${version}'"
'';
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-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;
map gstreamerHook [
gstreamer
gst-plugins-base
gst-plugins-bad
gst-plugins-ugly
];
# Fix output directory
postInstall = ''
mkdir $out/lib/obs-plugins
mv $out/lib/obs-gstreamer.so $out/lib/obs-plugins/
'';
meta = with lib; {
description = "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
pedrohlc
];
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,13 @@
diff --git a/src/HyperionProperties.cpp b/src/HyperionProperties.cpp
index b585702..3fd308c 100644
--- a/src/HyperionProperties.cpp
+++ b/src/HyperionProperties.cpp
@@ -59,7 +59,7 @@ HyperionProperties::HyperionProperties(QWidget *parent)
signal_handler_connect(handler, "log", logger_message, this);
connect(ui->ButtonStart, &QPushButton::clicked, this, &HyperionProperties::saveSettings);
- connect(ui->AutoStart, &QCheckBox::stateChanged, this, &HyperionProperties::saveSettings);
+ connect(ui->AutoStart, &QCheckBox::checkStateChanged, this, &HyperionProperties::saveSettings);
connect(ui->ButtonStart, &QPushButton::clicked, this, &HyperionProperties::onStart);
connect(ui->ButtonStop, &QPushButton::clicked, this, &HyperionProperties::onStop);

View File

@@ -0,0 +1,59 @@
{
stdenv,
lib,
fetchFromGitHub,
cmake,
pkg-config,
obs-studio,
libGL,
qtbase,
flatbuffers,
}:
stdenv.mkDerivation rec {
pname = "obs-hyperion";
version = "1.0.2";
src = fetchFromGitHub {
owner = "hyperion-project";
repo = "hyperion-obs-plugin";
rev = version;
sha256 = "sha256-UAfjafoZhhhHRSo+eUBLhHaCmn2GYFcYyRb9wHIp/9I=";
};
nativeBuildInputs = [
cmake
flatbuffers
pkg-config
];
buildInputs = [
obs-studio
flatbuffers
libGL
qtbase
];
dontWrapQtApps = true;
patches = [ ./check-state-changed.patch ];
cmakeFlags = [
"-DOBS_SOURCE=${obs-studio.src}"
"-DGLOBAL_INSTALLATION=ON"
"-DUSE_SYSTEM_FLATBUFFERS_LIBS=ON"
];
NIX_CFLAGS_COMPILE = [ "-Wno-error" ];
preConfigure = ''
rm -rf external/flatbuffers
'';
meta = with lib; {
description = "OBS Studio plugin to connect to a Hyperion.ng server";
homepage = "https://github.com/hyperion-project/hyperion-obs-plugin";
license = licenses.mit;
maintainers = with maintainers; [ algram ];
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
fetchFromGitHub,
rustPlatform,
cmake,
fontconfig,
obs-studio,
pkg-config,
}:
rustPlatform.buildRustPackage rec {
pname = "obs-livesplit-one";
version = "0.4.1";
src = fetchFromGitHub {
owner = "LiveSplit";
repo = "obs-livesplit-one";
rev = "v${version}";
sha256 = "sha256-4Ar4ChSl226BVFyAnqpWDLxsZF63bxl++sWD+6aENW8=";
};
cargoHash = "sha256-e0FDa72vzRb5AMVmtkvAkiQ5GUXsq0LekqF+wDYDsr8=";
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [
fontconfig
obs-studio
];
postInstall = ''
mkdir $out/lib/obs-plugins/
mv $out/lib/libobs_livesplit_one.so $out/lib/obs-plugins/obs-livesplit-one.so
'';
meta = with lib; {
description = "OBS Studio plugin for adding LiveSplit One as a source";
homepage = "https://github.com/LiveSplit/obs-livesplit-one";
license = with licenses; [
asl20
mit
];
maintainers = [ maintainers.Bauke ];
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,34 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-markdown";
version = "0.2.7";
src = fetchFromGitHub {
owner = "exeldro";
repo = "obs-markdown";
rev = version;
sha256 = "sha256-5ajX/cEa0n12Putx1k3ctl1v9wRzJRhyJNDlmjSMbeU=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
postInstall = ''
rm -rf $out/obs-plugins $out/data
'';
meta = with lib; {
description = "Plugin for OBS Studio to add Markdown sources";
homepage = "https://github.com/exeldro/obs-markdown";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Only;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,40 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
qtbase,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "obs-media-controls";
version = "0.4.1";
src = fetchFromGitHub {
owner = "exeldro";
repo = "obs-media-controls";
tag = "${finalAttrs.version}";
hash = "sha256-r9fqpg0G9rzGSqq5FUS8ul58rj0796aGZIND8PCJ9jk=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [
obs-studio
qtbase
];
dontWrapQtApps = true;
postInstall = ''
rm -rf $out/obs-plugins $out/data
'';
meta = {
description = "Plugin for OBS Studio to add a Media Controls dock";
homepage = "https://github.com/exeldro/obs-media-controls";
maintainers = with lib.maintainers; [ flexiondotorg ];
license = lib.licenses.gpl2Only;
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,34 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-move-transition";
version = "3.1.5";
src = fetchFromGitHub {
owner = "exeldro";
repo = "obs-move-transition";
rev = version;
sha256 = "sha256-MelIMAy+9LiSlYwDdS8mbgttyZ6rvGFS5TKMas8LzCM=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
postInstall = ''
rm -rf $out/obs-plugins $out/data
'';
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;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,61 @@
{
lib,
stdenv,
fetchFromGitHub,
obs-studio,
cmake,
qtbase,
fetchpatch,
}:
stdenv.mkDerivation rec {
pname = "obs-multi-rtmp";
version = "0.6.0.1";
src = fetchFromGitHub {
owner = "sorayuki";
repo = "obs-multi-rtmp";
rev = version;
sha256 = "sha256-MRBQY9m6rj8HVdn58mK/Vh07FSm0EglRUaP20P3FFO4=";
};
patches = [
# Fix finding QT. Remove after next release.
(fetchpatch {
url = "https://github.com/sorayuki/obs-multi-rtmp/commit/a1289fdef404b08a7acbbf0d6d0f93da4c9fc087.patch";
hash = "sha256-PDkR315y0iem1+LAqGmiqBFUiMBeEgnFW/xd1W2bAu4=";
includes = [ "CMakeLists.txt" ];
})
];
nativeBuildInputs = [ cmake ];
buildInputs = [
obs-studio
qtbase
];
cmakeFlags = [
(lib.cmakeBool "ENABLE_QT" true)
(lib.cmakeBool "ENABLE_FRONTEND_API" true)
(lib.cmakeBool "CMAKE_COMPILE_WARNING_AS_ERROR" false)
];
dontWrapQtApps = true;
# install dirs changed after 0.5.0.3-OBS30
postInstall = ''
mkdir -p $out/{lib,share/obs/obs-plugins/}
mv $out/dist/obs-multi-rtmp/data $out/share/obs/obs-plugins/obs-multi-rtmp
mv $out/dist/obs-multi-rtmp/bin/64bit $out/lib/obs-plugins
rm -rf $out/dist
'';
meta = {
homepage = "https://github.com/sorayuki/obs-multi-rtmp/";
changelog = "https://github.com/sorayuki/obs-multi-rtmp/releases/tag/${version}";
description = "Multi-site simultaneous broadcast plugin for OBS Studio";
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [ jk ];
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-mute-filter";
version = "0.3.0";
src = fetchFromGitHub {
owner = "norihiro";
repo = "obs-mute-filter";
rev = version;
sha256 = "sha256-UVYN9R7TnwD3a+KIYTXvxOQWfNUtR8cSWUoKZuNoBJc=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
postInstall = ''
mkdir $out/lib $out/share
mv $out/obs-plugins/64bit $out/lib/obs-plugins
rm -rf $out/obs-plugins
mv $out/data $out/share/obs
'';
meta = with lib; {
description = "OBS Studio plugin to mute audio of a source";
homepage = "https://github.com/norihiro/obs-mute-filter";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-noise";
version = "1.0.0";
src = fetchFromGitHub {
owner = "FiniteSingularity";
repo = "obs-noise";
rev = "v${version}";
sha256 = "sha256-D9vGXCrmQ8IDRmL8qZ1ZBiOz9AjhKm45W37zC16kRCk=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
postFixup = ''
mv $out/data/obs-plugins/${pname}/shaders $out/share/obs/obs-plugins/${pname}/
rm -rf $out/data $out/obs-plugins
'';
meta = with lib; {
description = "Plug-in for noise generation and noise effects for OBS";
homepage = "https://github.com/FiniteSingularity/obs-noise";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Only;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,47 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
ninja,
obs-studio,
pipewire,
pkg-config,
}:
stdenv.mkDerivation rec {
pname = "obs-pipewire-audio-capture";
version = "1.2.1";
src = fetchFromGitHub {
owner = "dimtpap";
repo = "obs-pipewire-audio-capture";
rev = version;
sha256 = "sha256-GrfogPsqpQ976Gcc4JVdslAAWTj49PdspwVp/JXYXSQ=";
};
nativeBuildInputs = [
cmake
ninja
pkg-config
];
buildInputs = [
obs-studio
pipewire
];
cmakeFlags = [
"-DCMAKE_INSTALL_LIBDIR=./lib"
"-DCMAKE_INSTALL_DATADIR=./share"
];
meta = with lib; {
description = "Audio device and application capture for OBS Studio using PipeWire";
homepage = "https://github.com/dimtpap/obs-pipewire-audio-capture";
maintainers = with maintainers; [
Elinvention
fazzi
];
license = licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
cmake,
obs-studio,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "obs-recursion-effect";
version = "0.1.0";
src = fetchFromGitHub {
owner = "exeldro";
repo = "obs-recursion-effect";
tag = "${finalAttrs.version}";
hash = "sha256-PeWJy423QbX4NULuS15LJ/IR/W+tXCJD9TjZdJOGk6A=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
# Fix OBS API deprecations warnings
patches = [
(fetchpatch {
url = "https://github.com/exeldro/obs-recursion-effect/commit/889a8484d5c0eb33267b44ccda545a8fadc189a5.diff";
hash = "sha256-J2GnsoPUTqvEkuBuAae2TrxXMQg0Sm3dq75ZjGN65IE=";
})
];
postInstall = ''
rm -rf $out/obs-plugins $out/data
'';
meta = {
description = "Plugin for OBS Studio to add recursion effect to a source using a filter";
homepage = "https://github.com/exeldro/obs-recursion-effect";
maintainers = with lib.maintainers; [ flexiondotorg ];
license = lib.licenses.gpl2Only;
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,37 @@
{
stdenv,
lib,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-replay-source";
version = "1.8.1";
src = fetchFromGitHub {
owner = "exeldro";
repo = "obs-replay-source";
rev = version;
sha256 = "sha256-+PSALDqHXPyR0J7YnLn3QgPN6eIoH3yTIm1Bp7Li8c8=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
postInstall = ''
rm -rf $out/obs-plugins $out/data
'';
meta = with lib; {
description = "Replay source for OBS studio";
homepage = "https://github.com/exeldro/obs-replay-source";
license = licenses.gpl2Only;
platforms = platforms.linux;
maintainers = with maintainers; [
flexiondotorg
pschmitt
];
};
}

View File

@@ -0,0 +1,36 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-retro-effects";
version = "1.0.1";
src = fetchFromGitHub {
owner = "FiniteSingularity";
repo = "obs-retro-effects";
rev = "${version}";
sha256 = "sha256-bWUGuCgCNAaSc0+NRRYsx/8EhrlWuPcipkuUlQZvWDk=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
postFixup = ''
mv $out/data/obs-plugins/${pname}/shaders $out/share/obs/obs-plugins/${pname}/
rm -rf $out/obs-plugins
rm -rf $out/data
'';
meta = with lib; {
description = "Collection of OBS filters to give your stream that retro feel";
homepage = "https://github.com/FiniteSingularity/obs-retro-effects";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,30 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-rgb-levels";
version = "1.0.3";
src = fetchFromGitHub {
owner = "wimpysworld";
repo = "obs-rgb-levels";
rev = version;
sha256 = "sha256-DXrDyIBe2tp+9M39PLDf/AmX7lBa2teduBC8FG0IK7Y=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
meta = with lib; {
description = "Simple OBS Studio filter to adjust RGB levels";
homepage = "https://github.com/wimpysworld/obs-rgb-levels";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Only;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-scale-to-sound";
version = "1.2.5";
src = fetchFromGitHub {
owner = "dimtpap";
repo = "obs-scale-to-sound";
tag = version;
hash = "sha256-El5lwQfc33H9KvjttJyjakzRizjLoGz2MbkiRm4zm8E=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
cmakeFlags = [
"-DBUILD_OUT_OF_TREE=On"
];
meta = {
description = "OBS filter plugin that scales a source reactively to sound levels";
homepage = "https://github.com/dimtpap/obs-scale-to-sound";
maintainers = with lib.maintainers; [ flexiondotorg ];
license = lib.licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,34 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-scene-as-transition";
version = "1.1.1";
src = fetchFromGitHub {
owner = "andilippi";
repo = "obs-scene-as-transition";
rev = "v${version}";
sha256 = "sha256-qeiJR68MqvhpzvY7yNnR6w77SvavlZTdbnGBWrd7iZM=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
postInstall = ''
rm -rf $out/obs-plugins $out/data
'';
meta = with lib; {
description = "OBS Studio plugin that will allow you to use a Scene as a transition";
homepage = "https://github.com/andilippi/obs-scene-as-transition";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,45 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
qtbase,
}:
stdenv.mkDerivation rec {
pname = "obs-shaderfilter";
version = "2.5.1";
src = fetchFromGitHub {
owner = "exeldro";
repo = "obs-shaderfilter";
rev = version;
sha256 = "sha256-1RRGXAzP7BIwJJMmXSknPDtHxXZex9SqDDVbWOE43Yk=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [
obs-studio
qtbase
];
cmakeFlags = [
"-DBUILD_OUT_OF_TREE=On"
];
dontWrapQtApps = true;
postInstall = ''
rm -rf $out/obs-plugins
mv $out/data $out/share/obs
'';
meta = with lib; {
description = "OBS Studio filter for applying an arbitrary shader to a source";
homepage = "https://github.com/exeldro/obs-shaderfilter";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,39 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "obs-source-clone";
version = "0.1.5";
src = fetchFromGitHub {
owner = "exeldro";
repo = "obs-source-clone";
tag = finalAttrs.version;
hash = "sha256-0rBtFPfqVvB333eeWRpVe4TgrJTiBTIzsV/SSe3EgOc=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
cmakeFlags = [
(lib.cmakeBool "BUILD_OUT_OF_TREE" true)
];
postInstall = ''
rm -rf $out/obs-plugins $out/data
'';
meta = {
description = "Plugin for OBS Studio to clone sources";
homepage = "https://github.com/exeldro/obs-source-clone";
maintainers = with lib.maintainers; [ flexiondotorg ];
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,41 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-source-record";
version = "0.4.6";
src = fetchFromGitHub {
owner = "exeldro";
repo = "obs-source-record";
rev = version;
sha256 = "sha256-mlPLZ9n0F4K1tRx9xPuNMGzupRGLmyVsqKS12A4X5vw=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
NIX_CFLAGS_COMPILE = [ "-Wno-error=deprecated-declarations" ];
cmakeFlags = [ "-DBUILD_OUT_OF_TREE=On" ];
postInstall = ''
rm -rf $out/{data,obs-plugins}
'';
meta = with lib; {
description = "OBS Studio plugin to make sources available to record via a filter";
homepage = "https://github.com/exeldro/obs-source-record";
maintainers = with maintainers; [
robbins
shackra
];
license = licenses.gpl2Only;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation {
pname = "obs-source-switcher";
version = "0.4.3";
src = fetchFromGitHub {
owner = "exeldro";
repo = "obs-source-switcher";
rev = "b229f40faceb0bb39cea41ce0ce2f2f236c0cbd1";
hash = "sha256-5io2uMvPdHQAWFDqLyXLC6nxTEjkrk8v4v8XwGsPF7U=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
cmakeFlags = [ "-DBUILD_OUT_OF_TREE=On" ];
postInstall = ''
rm -rf $out/obs-plugins $out/data
'';
meta = {
description = "Plugin for OBS Studio to switch between a list of sources";
homepage = "https://github.com/exeldro/obs-source-switcher";
maintainers = with lib.maintainers; [ flexiondotorg ];
license = lib.licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-stroke-glow-shadow";
version = "v1.5.2";
src = fetchFromGitHub {
owner = "FiniteSingularity";
repo = "obs-stroke-glow-shadow";
rev = version;
sha256 = "sha256-+2hb4u+6UG7IV9pAvPjp4wvDYhYnxe98U5QQjUcdD/k=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
postFixup = ''
rm -rf $out/obs-plugins
rm -rf $out/data
'';
meta = with lib; {
description = "OBS plugin to provide efficient Stroke, Glow, and Shadow effects on masked sources";
homepage = "https://github.com/FiniteSingularity/obs-stroke-glow-shadow";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Only;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,58 @@
{
buildGoModule,
fetchFromGitHub,
lib,
libjpeg,
nix-update-script,
obs-studio,
}:
buildGoModule rec {
pname = "obs-teleport";
version = "0.7.5";
src = fetchFromGitHub {
owner = "fzwoch";
repo = "obs-teleport";
rev = version;
sha256 = "sha256-r1CB9wzw1tuRHWpx5PXyuh1y3Tue34Wpgys7LSEh62s=";
};
vendorHash = "sha256-o7PL3qnZ13L8+7mVx2yyDIlw/0s+NHNwy9DaRZxVKLc=";
buildInputs = [
libjpeg
obs-studio
];
ldflags = [
"-s"
"-w"
];
CGO_CFLAGS = "-I${obs-studio}/include/obs";
CGO_LDFLAGS = "-L${obs-studio}/lib -lobs -lobs-frontend-api";
buildPhase = ''
runHook preBuild
go build -buildmode=c-shared -o obs-teleport.so .
runHook postBuild
'';
postInstall = ''
mkdir -p $out/lib/obs-plugins
mv obs-teleport.so $out/lib/obs-plugins
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "OBS Studio plugin for an open NDI-like replacement";
homepage = "https://github.com/fzwoch/obs-teleport";
maintainers = [ ];
license = lib.licenses.gpl2Plus;
platforms = obs-studio.meta.platforms;
};
}

View File

@@ -0,0 +1,47 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
cairo,
obs-studio,
pango,
pkg-config,
}:
stdenv.mkDerivation rec {
pname = "obs-text-pthread";
version = "2.0.7";
src = fetchFromGitHub {
owner = "norihiro";
repo = "obs-text-pthread";
rev = version;
sha256 = "sha256-YjMZfDSO5VRIY+HBGniNV3HG5vs+zbiqfbrPKs9v804=";
};
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [
cairo
obs-studio
pango
];
postInstall = ''
mkdir $out/lib $out/share
mv $out/obs-plugins/64bit $out/lib/obs-plugins
rm -rf $out/obs-plugins
mv $out/data $out/share/obs
'';
meta = with lib; {
description = "Rich text source plugin for OBS Studio";
homepage = "https://github.com/norihiro/obs-text-pthread";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,40 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
qtbase,
}:
stdenv.mkDerivation {
pname = "obs-transition-table";
version = "0.2.7-unstable-2024-11-27";
src = fetchFromGitHub {
owner = "exeldro";
repo = "obs-transition-table";
rev = "976fe236dac7082b6c953f950fcb9e50495ce624";
sha256 = "sha256-TPRqKjEXdvjv+RfHTaeeO4GHur2j/+onehcu0I/HdD0=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [
obs-studio
qtbase
];
dontWrapQtApps = true;
postInstall = ''
rm -rf $out/obs-plugins $out/data
'';
meta = with lib; {
description = "Plugin for OBS Studio to add a Transition Table to the tools menu";
homepage = "https://github.com/exeldro/obs-transition-table";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,49 @@
{
lib,
stdenv,
fetchFromGitHub,
obs-studio,
cmake,
zlib,
curl,
dbus,
pkg-config,
qtbase,
wrapQtAppsHook,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "obs-tuna";
version = "1.9.11";
nativeBuildInputs = [
cmake
pkg-config
wrapQtAppsHook
];
buildInputs = [
obs-studio
qtbase
zlib
curl
dbus
];
src = fetchFromGitHub {
owner = "univrsal";
repo = "tuna";
rev = "v${finalAttrs.version}";
hash = "sha256-XB2qQ96HhZRpONE8EOYHbKWvI52EZwkNCyfBv6UkRjU=";
fetchSubmodules = true;
};
dontWrapQtApps = true;
meta = {
description = "Song information plugin for obs-studio";
homepage = "https://github.com/univrsal/tuna";
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [ shortcord ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,71 @@
{
lib,
stdenv,
fetchFromGitHub,
gst_all_1,
pciutils,
pkg-config,
meson,
ninja,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-vaapi";
version = "0.4.2";
src = fetchFromGitHub {
owner = "fzwoch";
repo = "obs-vaapi";
rev = version;
hash = "sha256-ykiLsHL3hoe0ibxMxp4zrqeSeQfgnJfNg7Yb5i9HDJQ=";
};
nativeBuildInputs = [
pkg-config
meson
ninja
];
buildInputs = with gst_all_1; [
gstreamer
gst-plugins-base
obs-studio
pciutils
];
# - 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 "vapostproc";
# - gst-vaapi adds "VA-API" 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;
map gstreamerHook [
gstreamer
gst-plugins-base
gst-plugins-bad
gst-vaapi
];
# Fix output directory
postInstall = ''
mkdir $out/lib/obs-plugins
mv $out/lib/obs-vaapi.so $out/lib/obs-plugins/
'';
meta = {
description = "OBS Studio VAAPI support via GStreamer";
homepage = "https://github.com/fzwoch/obs-vaapi";
changelog = "https://github.com/fzwoch/obs-vaapi/releases/tag/${version}";
maintainers = with lib.maintainers; [
ahuzik
pedrohlc
];
license = lib.licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,17 @@
diff --color -urpN obs-vertical-canvas.bak/file-updater.c obs-vertical-canvas/file-updater.c
--- obs-vertical-canvas.bak/file-updater.c 2025-07-18 18:32:13.239718611 -0400
+++ obs-vertical-canvas/file-updater.c 2025-07-18 18:32:30.732020377 -0400
@@ -67,10 +67,10 @@ static bool do_http_request(struct updat
curl_easy_setopt(info->curl, CURLOPT_ERRORBUFFER, info->error);
curl_easy_setopt(info->curl, CURLOPT_WRITEFUNCTION, http_write);
curl_easy_setopt(info->curl, CURLOPT_WRITEDATA, info);
- curl_easy_setopt(info->curl, CURLOPT_FAILONERROR, true);
- curl_easy_setopt(info->curl, CURLOPT_NOSIGNAL, 1);
+ curl_easy_setopt(info->curl, CURLOPT_FAILONERROR, 1L);
+ curl_easy_setopt(info->curl, CURLOPT_NOSIGNAL, 1L);
curl_easy_setopt(info->curl, CURLOPT_ACCEPT_ENCODING, "");
- curl_easy_setopt(info->curl, CURLOPT_SSL_OPTIONS, CURLSSLOPT_REVOKE_BEST_EFFORT);
+ curl_easy_setopt(info->curl, CURLOPT_SSL_OPTIONS, (long)CURLSSLOPT_REVOKE_BEST_EFFORT);
code = curl_easy_perform(info->curl);
if (code != CURLE_OK) {

View File

@@ -0,0 +1,52 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
curl,
obs-studio,
qtbase,
}:
stdenv.mkDerivation rec {
pname = "obs-vertical-canvas";
version = "1.4.10";
src = fetchFromGitHub {
owner = "Aitum";
repo = "obs-vertical-canvas";
rev = version;
sha256 = "sha256-0XfJ8q8n2ANO0oDtLZhZjRunZ5S1EouQ6Ak/pxEQYOQ=";
};
# Remove after https://github.com/Aitum/obs-vertical-canvas/pull/25 is released :)
patches = [ ./obs-vertical-canvas.diff ];
nativeBuildInputs = [ cmake ];
buildInputs = [
curl
obs-studio
qtbase
];
cmakeFlags = [
"-DBUILD_OUT_OF_TREE=On"
''-DCMAKE_CXX_FLAGS="-Wno-error=deprecated-declarations"''
];
dontWrapQtApps = true;
postInstall = ''
rm -rf $out/data
rm -rf $out/obs-plugins
'';
meta = {
description = "Plugin for OBS Studio to add vertical canvas";
homepage = "https://github.com/Aitum/obs-vertical-canvas";
maintainers = with lib.maintainers; [ flexiondotorg ];
license = lib.licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "obs-vintage-filter";
version = "1.0.0";
src = fetchFromGitHub {
owner = "cg2121";
repo = "obs-vintage-filter";
rev = version;
sha256 = "sha256-K7AxvwVLe4G+75aY430lygSRB7rMtsGi17pGzdygEac=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
postInstall = ''
mkdir $out/lib $out/share
mv $out/obs-plugins/64bit $out/lib/obs-plugins
rm -rf $out/obs-plugins
mv $out/data $out/share/obs
'';
meta = with lib; {
description = "OBS Studio filter where the source can be set to be black & white or sepia";
homepage = "https://github.com/cg2121/obs-vintage-filter";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,94 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
pkg-config,
ninja,
wayland,
wayland-scanner,
obs-studio,
libffi,
libX11,
libXau,
libXdmcp,
libxcb,
vulkan-headers,
vulkan-loader,
libGL,
obs-vkcapture32,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "obs-vkcapture";
version = "1.5.3";
src = fetchFromGitHub {
owner = "nowrep";
repo = "obs-vkcapture";
rev = "v${finalAttrs.version}";
hash = "sha256-zra7fwYnUfPKS4AA6Z9FIPP3p/uR5O1wB6Z76aivtZI=";
};
cmakeFlags = lib.optionals stdenv.hostPlatform.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
pkg-config
wayland-scanner
];
buildInputs = [
libGL
libffi
libX11
libXau
libXdmcp
libxcb
vulkan-headers
vulkan-loader
wayland
]
++ lib.optionals (!stdenv.hostPlatform.isi686) [
obs-studio
];
postPatch = ''
substituteInPlace src/glinject.c \
--replace "libGLX.so.0" "${lib.getLib libGL}/lib/libGLX.so.0" \
--replace "libX11.so.6" "${lib.getLib libX11}/lib/libX11.so.6" \
--replace "libX11-xcb.so.1" "${lib.getLib libX11}/lib/libX11-xcb.so.1" \
--replace "libxcb-dri3.so.0" "${lib.getLib libxcb}/lib/libxcb-dri3.so.0" \
--replace "libEGL.so.1" "${lib.getLib libGL}/lib/libEGL.so.1" \
--replace "libvulkan.so.1" "${lib.getLib vulkan-loader}/lib/libvulkan.so.1"
'';
# Support 32bit Vulkan applications by linking in the 32bit Vulkan layer and
# the wrapper executables. Note that vkcapture and glcapture are themselves
# wrapper scripts that simply exec gamecapture and print a warning but because
# they take gamecapture from PATH, we must link them to the 32 bit gamecapture
# directly.
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/"
for bin in ${obs-vkcapture32}/bin/* ; do
ln -s ${obs-vkcapture32}/bin/obs-gamecapture "$out/bin/$(basename "$bin")32"
done
'';
meta = with lib; {
description = "OBS Linux Vulkan/OpenGL game capture";
homepage = "https://github.com/nowrep/obs-vkcapture";
changelog = "https://github.com/nowrep/obs-vkcapture/releases/tag/v${finalAttrs.version}";
maintainers = with maintainers; [
atila
pedrohlc
];
license = licenses.gpl2Only;
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,45 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
pkg-config,
libvncserver,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "obs-vnc";
version = "0.6.1";
src = fetchFromGitHub {
owner = "norihiro";
repo = "obs-vnc";
tag = "${finalAttrs.version}";
hash = "sha256-eTvKACeVFFw6DOFAiWaG/m14jYyzZc61e79S8oVWrCs=";
};
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [
libvncserver
obs-studio
];
postInstall = ''
mkdir $out/lib $out/share
mv $out/obs-plugins/64bit $out/lib/obs-plugins
rm -rf $out/obs-plugins
mv $out/data $out/share/obs
'';
meta = {
description = "VNC viewer integrated into OBS Studio as a source plugin";
homepage = "https://github.com/norihiro/obs-vnc";
maintainers = with lib.maintainers; [ flexiondotorg ];
license = lib.licenses.gpl2Only;
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,47 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
asio,
obs-studio,
qtbase,
websocketpp,
}:
stdenv.mkDerivation rec {
pname = "obs-websocket";
version = "4.9.1-compat";
src = fetchFromGitHub {
owner = "obsproject";
repo = "obs-websocket";
rev = version;
sha256 = "sha256-cHsJxoQjwbWLxiHgIa3Es0mu62vyLCAd1wULeZqZsJM=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [
asio
obs-studio
qtbase
websocketpp
];
dontWrapQtApps = true;
postInstall = ''
mkdir $out/lib $out/share
mv $out/obs-plugins/64bit $out/lib/obs-plugins
rm -rf $out/obs-plugins
mv $out/data $out/share/obs
'';
meta = with lib; {
description = "Legacy websocket 4.9.1 protocol support for OBS Studio 28 or above";
homepage = "https://github.com/obsproject/obs-websocket";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Plus;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,30 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
obs-studio,
}:
stdenv.mkDerivation rec {
pname = "pixel-art";
version = "0.0.4";
src = fetchFromGitHub {
owner = "dspstanky";
repo = "pixel-art";
rev = version;
sha256 = "sha256-7o63e7nK/JsK2SQg0AzUYcc4ZsPx0lt8gtAQm8Zy+9w=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ obs-studio ];
meta = with lib; {
description = "OBS Plugin that can be used to create retro-inspired pixel art visuals";
homepage = "https://github.com/dspstanky/pixel-art";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Only;
inherit (obs-studio.meta) platforms;
};
}

View File

@@ -0,0 +1,55 @@
{
stdenv,
lib,
fetchFromGitHub,
cmake,
obs-studio,
pkg-config,
fftwFloat,
}:
stdenv.mkDerivation rec {
pname = "waveform";
version = "1.8.1";
src = fetchFromGitHub {
fetchSubmodules = true;
owner = "phandasm";
repo = "waveform";
rev = "v${version}";
hash = "sha256-Bg1n1yV4JzNFEXFNayNa1exsSZhmRJ0RLHDjLWmqGZE=";
};
postPatch = ''
substituteInPlace \
src/source.hpp src/source.cpp src/source_generic.cpp \
src/source_avx2.cpp src/source_avx.cpp \
--replace circlebuf deque
'';
nativeBuildInputs = [
cmake
pkg-config
];
postFixup = ''
mkdir -p $out/lib $out/share/obs/obs-plugins
mv $out/${pname}/bin/64bit $out/lib/obs-plugins
mv $out/${pname}/data $out/share/obs/obs-plugins/${pname}
rm -rf $out/${pname}
'';
buildInputs = [
obs-studio
fftwFloat
];
meta = {
description = "Audio spectral analysis plugin for OBS";
homepage = "https://github.com/phandasm/waveform";
maintainers = with lib.maintainers; [ matthewcroughan ];
license = lib.licenses.gpl3;
# Hard coded x86_64 support
platforms = [ "x86_64-linux" ];
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
stdenv,
fetchFromSourcehut,
meson,
pkg-config,
ninja,
wayland,
obs-studio,
libX11,
}:
stdenv.mkDerivation {
pname = "wlrobs";
version = "unstable-2024-12-24";
src = fetchFromSourcehut {
vc = "hg";
owner = "~scoopta";
repo = "wlrobs";
rev = "b8668b4d6d6d33e3de86ce3fa4331249bc0abc8b";
hash = "sha256-gqGnDrfID5hTcpX3EkSGg4yDwa/ZKCQCqJ3feq44I1I=";
};
nativeBuildInputs = [
meson
pkg-config
ninja
];
buildInputs = [
wayland
obs-studio
libX11
];
meta = with lib; {
description = "Obs-studio plugin that allows you to screen capture on wlroots based wayland compositors";
homepage = "https://hg.sr.ht/~scoopta/wlrobs";
maintainers = with maintainers; [ grahamc ];
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}