1{
2 lib,
3 obs-studio,
4 symlinkJoin,
5 makeWrapper,
6}:
7
8{
9 plugins ? [ ],
10}:
11
12symlinkJoin {
13 name = "wrapped-${obs-studio.name}";
14
15 nativeBuildInputs = [ makeWrapper ];
16 paths = [ obs-studio ] ++ plugins;
17
18 postBuild =
19 let
20 # Some plugins needs extra environment, see obs-gstreamer for an example.
21 pluginArguments = lib.lists.concatMap (plugin: plugin.obsWrapperArguments or [ ]) plugins;
22
23 pluginsJoined = symlinkJoin {
24 name = "obs-studio-plugins";
25 paths = plugins;
26 };
27
28 wrapCommandLine = [
29 "wrapProgram"
30 "$out/bin/obs"
31 ''--set OBS_PLUGINS_PATH "${pluginsJoined}/lib/obs-plugins"''
32 ''--set OBS_PLUGINS_DATA_PATH "${pluginsJoined}/share/obs/obs-plugins"''
33 ]
34 ++ lib.lists.unique pluginArguments;
35 in
36 ''
37 ${lib.concatStringsSep " " wrapCommandLine}
38
39 # Remove unused obs-plugins dir to not cause confusion
40 rm -r $out/share/obs/obs-plugins
41 # Leave some breadcrumbs
42 echo 'Plugins are at ${pluginsJoined}/share/obs/obs-plugins' > $out/share/obs/obs-plugins-README
43 '';
44
45 inherit (obs-studio) meta;
46 passthru = obs-studio.passthru // {
47 passthru.unwrapped = obs-studio;
48 };
49}