lol
1{
2 lib,
3 mkDerivation,
4 fetchurl,
5 autoPatchelfHook,
6 pkg-config,
7 curl,
8 ffmpeg,
9 openssl,
10 qtbase,
11 zlib,
12
13 withJava ? true,
14 jre_headless,
15}:
16
17let
18 version = "1.17.6";
19 # Using two URLs as the first one will break as soon as a new version is released
20 src_bin = fetchurl {
21 urls = [
22 "http://www.makemkv.com/download/makemkv-bin-${version}.tar.gz"
23 "http://www.makemkv.com/download/old/makemkv-bin-${version}.tar.gz"
24 ];
25 sha256 = "KHZGAFAp93HTZs8OT76xf88QM0UtlVVH3q57CZm07Rs=";
26 };
27 src_oss = fetchurl {
28 urls = [
29 "http://www.makemkv.com/download/makemkv-oss-${version}.tar.gz"
30 "http://www.makemkv.com/download/old/makemkv-oss-${version}.tar.gz"
31 ];
32 sha256 = "2dtNdyv0+QYWQrfrIu5RQKSN4scSWKuLFNlJZXpxDUM=";
33 };
34in
35mkDerivation {
36 pname = "makemkv";
37 inherit version;
38
39 srcs = [
40 src_bin
41 src_oss
42 ];
43
44 sourceRoot = "makemkv-oss-${version}";
45
46 patches = [ ./r13y.patch ];
47
48 enableParallelBuilding = true;
49
50 nativeBuildInputs = [
51 autoPatchelfHook
52 pkg-config
53 ];
54
55 buildInputs = [
56 ffmpeg
57 openssl
58 qtbase
59 zlib
60 ];
61
62 runtimeDependencies = [ (lib.getLib curl) ];
63
64 qtWrapperArgs =
65 let
66 binPath = lib.makeBinPath [ jre_headless ];
67 in
68 lib.optionals withJava [ "--prefix PATH : ${binPath}" ];
69
70 installPhase = ''
71 runHook preInstall
72
73 install -Dm555 -t $out/bin out/makemkv out/mmccextr out/mmgplsrv ../makemkv-bin-${version}/bin/amd64/makemkvcon
74 install -D -t $out/lib out/lib{driveio,makemkv,mmbd}.so.*
75 install -D -t $out/share/MakeMKV ../makemkv-bin-${version}/src/share/*
76 install -Dm444 -t $out/share/applications ../makemkv-oss-${version}/makemkvgui/share/makemkv.desktop
77 install -Dm444 -t $out/share/icons/hicolor/16x16/apps ../makemkv-oss-${version}/makemkvgui/share/icons/16x16/*
78 install -Dm444 -t $out/share/icons/hicolor/32x32/apps ../makemkv-oss-${version}/makemkvgui/share/icons/32x32/*
79 install -Dm444 -t $out/share/icons/hicolor/64x64/apps ../makemkv-oss-${version}/makemkvgui/share/icons/64x64/*
80 install -Dm444 -t $out/share/icons/hicolor/128x128/apps ../makemkv-oss-${version}/makemkvgui/share/icons/128x128/*
81 install -Dm444 -t $out/share/icons/hicolor/256x256/apps ../makemkv-oss-${version}/makemkvgui/share/icons/256x256/*
82
83 runHook postInstall
84 '';
85
86 meta = with lib; {
87 description = "Convert blu-ray and dvd to mkv";
88 longDescription = ''
89 makemkv is a one-click QT application that transcodes an encrypted
90 blu-ray or DVD disc into a more portable set of mkv files, preserving
91 subtitles, chapter marks, all video and audio tracks.
92
93 Program is time-limited -- it will stop functioning after 60 days. You
94 can always download the latest version from makemkv.com that will reset the
95 expiration date.
96 '';
97 sourceProvenance = with sourceTypes; [ binaryNativeCode ];
98 license = [
99 licenses.unfree
100 licenses.lgpl21
101 ];
102 homepage = "http://makemkv.com";
103 platforms = [ "x86_64-linux" ];
104 maintainers = with maintainers; [ jchw ];
105 };
106}