diff --git a/nix/pkgs/default.nix b/nix/pkgs/default.nix index 7da5b9d45a..c58955612c 100644 --- a/nix/pkgs/default.nix +++ b/nix/pkgs/default.nix @@ -9,4 +9,5 @@ args: { secretsync = import ./secretsync args; copybara = import ./copybara.nix args; hg-git = import ./hg-git.nix args; + oven-media-engine = import ./oven-media-engine.nix args; } // (import ./heptapod-runner.nix args) diff --git a/nix/pkgs/oven-media-engine.nix b/nix/pkgs/oven-media-engine.nix new file mode 100644 index 0000000000..abd1271fd7 --- /dev/null +++ b/nix/pkgs/oven-media-engine.nix @@ -0,0 +1,60 @@ +{ pkgs, ... }: + +with pkgs.stdenv.lib; +let + inherit (pkgs) stdenv fetchFromGitHub openssl srt zlib bc pkgconfig libvpx libopus srtp jemalloc; + + ffmpeg = pkgs.ffmpeg_3_4.overrideAttrs (super: { + pname = "${super.pname}-ovenmediaengine"; + src = fetchFromGitHub { + owner = "Airensoft"; + repo = "FFmpeg"; + rev = "142b4bb64b64e337f80066e6af935a68627fedae"; # ome/3.4 + sha256 = "0fla3940q3z0c0ik2xzkbvdfvrdg06ban7wi6y94y8mcipszpp11"; + }; + }); +in +stdenv.mkDerivation rec { + pname = "oven-media-engine"; + version = "0.10.4"; + + src = fetchFromGitHub { + owner = "AirenSoft"; + repo = "OvenMediaEngine"; + rev = "v${version}"; + sha256 = "15lrlynsldlpa21ryzccf5skgiih6y5fc9qg0bfqh557wnnmml6w"; + }; + + sourceRoot = "source/src"; + makeFlags = "release CONFIG_LIBRARY_PATHS= CONFIG_PKG_PATHS="; + enableParallelBuilding = true; + + nativeBuildInputs = [ bc pkgconfig ]; + buildInputs = [ openssl srt zlib ffmpeg libvpx libopus srtp jemalloc ]; + + postUnpack = '' + cp -R $sourceRoot/.. $NIX_BUILD_TOP/build + chmod -R u+rwX $NIX_BUILD_TOP/build + export sourceRoot=$NIX_BUILD_TOP/build/src + echo "source root is now $sourceRoot" + ''; + + preBuild = '' + patchShebangs projects/main/update_git_info.sh + ''; + + installPhase = '' + install -Dm0755 bin/RELEASE/OvenMediaEngine $out/bin/OvenMediaEngine + install -Dm0644 ../misc/conf_examples/Origin.xml $out/share/examples/origin_conf/Server.xml + install -Dm0644 ../misc/conf_examples/Logger.xml $out/share/examples/origin_conf/Logger.xml + install -Dm0644 ../misc/conf_examples/Edge.xml $out/share/examples/edge_conf/Server.xml + install -Dm0644 ../misc/conf_examples/Logger.xml $out/share/examples/edge_conf/Logger.xml + ''; + + meta = { + description = "Open-source streaming video service with sub-second latency"; + homepage = "https://ovenmediaengine.com/"; + licenses = licenses.gpl2; + platforms = platforms.all; + }; +}