diff --git a/pkgs/applications/video/makemkv/default.nix b/pkgs/applications/video/makemkv/default.nix index cb568d07cbf3..81a1160af205 100644 --- a/pkgs/applications/video/makemkv/default.nix +++ b/pkgs/applications/video/makemkv/default.nix @@ -1,13 +1,16 @@ { + autoPatchelfHook, + common-updater-scripts, + curl, + fetchurl, + ffmpeg, lib, mkDerivation, - fetchurl, - autoPatchelfHook, - pkg-config, - curl, - ffmpeg, openssl, + pkg-config, qtbase, + rubyPackages, + writeShellApplication, zlib, withJava ? true, @@ -15,21 +18,21 @@ }: let - version = "1.17.7"; + version = "1.17.8"; # Using two URLs as the first one will break as soon as a new version is released src_bin = fetchurl { urls = [ "http://www.makemkv.com/download/makemkv-bin-${version}.tar.gz" "http://www.makemkv.com/download/old/makemkv-bin-${version}.tar.gz" ]; - hash = "sha256-jFvIMbyVKx+HPMhFDGTjktsLJHm2JtGA8P/JZWaJUdA="; + hash = "sha256-jg9UdDDZr+7ZdseJtb7N+y7Prhyq3hLo4+EZpzRxcEE="; }; src_oss = fetchurl { urls = [ "http://www.makemkv.com/download/makemkv-oss-${version}.tar.gz" "http://www.makemkv.com/download/old/makemkv-oss-${version}.tar.gz" ]; - hash = "sha256-di5VLUb57HWnxi3LfZfA/Z5qFRINDvb1oIDO4pHToO8="; + hash = "sha256-knUrzj/J+Xk5N1tg0q9iIXT+hqStkkjL3Yc2Yp5tvIo="; }; in mkDerivation { @@ -83,6 +86,35 @@ mkDerivation { runHook postInstall ''; + passthru = { + srcs = { + inherit src_bin src_oss; + }; + updateScript = lib.getExe (writeShellApplication { + name = "update-makemkv"; + runtimeInputs = [ + common-updater-scripts + curl + rubyPackages.nokogiri + ]; + text = '' + get_version() { + # shellcheck disable=SC2016 + curl --fail --silent 'https://forum.makemkv.com/forum/viewtopic.php?f=3&t=224' \ + | nokogiri -e 'puts $_.css("head title").first.text.match(/\bMakeMKV (\d+\.\d+\.\d+) /)[1]' + } + oldVersion=${lib.escapeShellArg version} + newVersion=$(get_version) + if [[ $oldVersion == "$newVersion" ]]; then + echo "$0: New version same as old version, nothing to do." >&2 + exit + fi + update-source-version makemkv "$newVersion" --source-key=passthru.srcs.src_bin + update-source-version makemkv "$newVersion" --source-key=passthru.srcs.src_oss --ignore-same-version + ''; + }); + }; + meta = with lib; { description = "Convert blu-ray and dvd to mkv"; longDescription = ''