Merge pull request #330634 from r-ryantm/auto-update/circumflex
[NixPkgs.git] / pkgs / servers / jibri / default.nix
blob9f12ef0082516db50e5ef678dce47a36a51df99a
1 { lib, stdenv, fetchurl, dpkg, jdk11_headless, makeWrapper, writeText, xorg }:
3 let
4   xorgModulePaths = writeText "module-paths" ''
5     Section "Files"
6       ModulePath "${xorg.xorgserver}/lib/xorg/modules
7       ModulePath "${xorg.xorgserver}/lib/xorg/extensions
8       ModulePath "${xorg.xorgserver}/lib/xorg/drivers
9       ModulePath "${xorg.xf86videodummy}/lib/xorg/modules/drivers
10     EndSection
11   '';
14 stdenv.mkDerivation rec {
15   pname = "jibri";
16   version = "8.0-169-g1258814";
17   src = fetchurl {
18     url = "https://download.jitsi.org/stable/${pname}_${version}-1_all.deb";
19     sha256 = "MAZJq2v25XQE6nbaAHSuxeoZOBwlOxCOIJkzxQVlKog=";
20   };
22   dontBuild = true;
23   nativeBuildInputs = [ dpkg makeWrapper ];
25   installPhase = ''
26     runHook preInstall
28     mkdir -p $out/{bin,opt/jitsi/jibri,etc/jitsi/jibri}
29     mv etc/jitsi/jibri/* $out/etc/jitsi/jibri/
30     mv opt/jitsi/jibri/* $out/opt/jitsi/jibri/
32     cat '${xorgModulePaths}' >> $out/etc/jitsi/jibri/xorg-video-dummy.conf
34     makeWrapper ${jdk11_headless}/bin/java $out/bin/jibri --add-flags "-jar $out/opt/jitsi/jibri/jibri.jar"
36     runHook postInstall
37   '';
39   passthru.updateScript = ./update.sh;
41   meta = with lib; {
42     description = "JItsi BRoadcasting Infrastructure";
43     mainProgram = "jibri";
44     longDescription = ''
45       Jibri provides services for recording or streaming a Jitsi Meet conference.
46       It works by launching a Chrome instance rendered in a virtual framebuffer and capturing and
47       encoding the output with ffmpeg. It is intended to be run on a separate machine (or a VM), with
48       no other applications using the display or audio devices. Only one recording at a time is
49       supported on a single jibri.
50     '';
51     homepage = "https://github.com/jitsi/jibri";
52     sourceProvenance = with sourceTypes; [ binaryBytecode ];
53     license = licenses.asl20;
54     maintainers = teams.jitsi.members;
55     platforms = platforms.linux;
56   };