diff --git a/pkgs/by-name/da/dash-mpd-cli/package.nix b/pkgs/by-name/da/dash-mpd-cli/package.nix index e14ba5446c2c..cef1ca6e116f 100644 --- a/pkgs/by-name/da/dash-mpd-cli/package.nix +++ b/pkgs/by-name/da/dash-mpd-cli/package.nix @@ -1,11 +1,27 @@ { lib, - stdenv, + stdenvNoCC, rustPlatform, fetchFromGitHub, + makeWrapper, protobuf, + ffmpeg, + libxslt, + shaka-packager, }: +let + # dash-mpd-cli looks for a binary named `shaka-packager`, while + # shaka-packager provides `packager`. + shaka-packager-wrapped = stdenvNoCC.mkDerivation { + name = "shaka-packager-wrapped"; + phases = [ "installPhase" ]; + installPhase = '' + mkdir -p $out/bin + ln -s ${lib.getExe shaka-packager} $out/bin/shaka-packager + ''; + }; +in rustPlatform.buildRustPackage rec { pname = "dash-mpd-cli"; version = "0.2.24"; @@ -17,13 +33,31 @@ rustPlatform.buildRustPackage rec { hash = "sha256-Q4zzKdp8GROL8vHi8XETErqufSqgZH/zf/mqEH2lIzE="; }; + patches = [ + ./use-shaka-by-default.patch + ]; + cargoHash = "sha256-R54Np08hYpDoidsHr3rmhpX/QZZkZHGcCSoKk6nw9R8="; - nativeBuildInputs = [ protobuf ]; + nativeBuildInputs = [ + makeWrapper + protobuf + ]; # The tests depend on network access. doCheck = false; + postInstall = '' + wrapProgram $out/bin/dash-mpd-cli \ + --prefix PATH : ${ + lib.makeBinPath [ + ffmpeg.bin + libxslt.bin + shaka-packager-wrapped + ] + } + ''; + meta = { description = "Download media content from a DASH-MPEG or DASH-WebM MPD manifest"; longDescription = '' diff --git a/pkgs/by-name/da/dash-mpd-cli/use-shaka-by-default.patch b/pkgs/by-name/da/dash-mpd-cli/use-shaka-by-default.patch new file mode 100644 index 000000000000..52619f7442cc --- /dev/null +++ b/pkgs/by-name/da/dash-mpd-cli/use-shaka-by-default.patch @@ -0,0 +1,12 @@ +diff --git a/src/main.rs b/src/main.rs +index f720d4c..a3c6c85 100644 +--- a/src/main.rs ++++ b/src/main.rs +@@ -325,6 +325,7 @@ async fn main () -> Result<()> { + .value_name("APP") + .num_args(1) + .value_parser(["mp4decrypt", "shaka"]) ++ .default_value("shaka") + .help("Application to use to decrypt encrypted media streams (either mp4decrypt or shaka).")) + .arg(Arg::new("save-fragments") + .long("save-fragments")