biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / applications / video / mkvtoolnix / default.nix
blob7d4ced909df612968c5b29a51d6fb311ccfacbe7
1 { lib
2 , stdenv
3 , fetchFromGitLab
4 , pkg-config
5 , autoreconfHook
6 , rake
7 , boost
8 , cmark
9 , docbook_xsl
10 , expat
11 , file
12 , flac
13 , fmt
14 , gettext
15 , gmp
16 , gtest
17 , libdvdread
18 , libebml
19 , libiconv
20 , libmatroska
21 , libogg
22 , libvorbis
23 , libxslt
24 , nlohmann_json
25 , pugixml
26 , qtbase
27 , qtmultimedia
28 , qtwayland
29 , utf8cpp
30 , xdg-utils
31 , zlib
32 , withGUI ? true
33 , wrapQtAppsHook
36 let
37   inherit (lib)
38     enableFeature getDev getLib optionals optionalString;
40   phase = name: args:
41     ''
42       runHook pre${name}
44       rake ${args}
46       runHook post${name}
47     '';
50 stdenv.mkDerivation rec {
51   pname = "mkvtoolnix";
52   version = "87.0";
54   src = fetchFromGitLab {
55     owner = "mbunkus";
56     repo = "mkvtoolnix";
57     rev = "release-${version}";
58     hash = "sha256-UU57ZgH1sxCXspwfKXScw08aJYiv+k526U8q8N1tA+4=";
59   };
61   nativeBuildInputs = [
62     autoreconfHook
63     docbook_xsl
64     gettext
65     gtest
66     libxslt
67     pkg-config
68     rake
69   ]
70   ++ optionals withGUI [ wrapQtAppsHook ];
72   # qtbase and qtmultimedia are needed without the GUI
73   buildInputs = [
74     boost
75     expat
76     file
77     flac
78     fmt
79     gmp
80     libdvdread
81     libebml
82     libmatroska
83     libogg
84     libvorbis
85     nlohmann_json
86     pugixml
87     qtbase
88     qtmultimedia
89     utf8cpp
90     xdg-utils
91     zlib
92   ]
93   ++ optionals withGUI [ cmark ]
94   ++ optionals stdenv.hostPlatform.isLinux [ qtwayland ]
95   ++ optionals stdenv.hostPlatform.isDarwin [ libiconv ];
97   # autoupdate is not needed but it silences a ton of pointless warnings
98   postPatch = ''
99     patchShebangs . > /dev/null
100     autoupdate configure.ac ac/*.m4
101   '';
103   configureFlags = [
104     "--disable-debug"
105     "--disable-precompiled-headers"
106     "--disable-profiling"
107     "--disable-static-qt"
108     "--disable-update-check"
109     "--enable-optimization"
110     "--with-boost-libdir=${getLib boost}/lib"
111     "--with-docbook-xsl-root=${docbook_xsl}/share/xml/docbook-xsl"
112     "--with-gettext"
113     "--with-extra-includes=${getDev utf8cpp}/include/utf8cpp"
114     "--with-extra-libs=${getLib utf8cpp}/lib"
115     (enableFeature withGUI "gui")
116   ];
118   buildPhase = phase "Build" "";
120   installPhase = phase "Install" "install";
122   doCheck = true;
124   checkPhase = phase "Check" "tests:run_unit";
126   dontWrapQtApps = true;
128   postFixup = optionalString withGUI ''
129     wrapQtApp $out/bin/mkvtoolnix-gui
130   '';
132   meta = with lib; {
133     description = "Cross-platform tools for Matroska";
134     homepage = "https://mkvtoolnix.download/";
135     license = licenses.gpl2Only;
136     mainProgram = if withGUI then "mkvtoolnix-gui" else "mkvtoolnix";
137     maintainers = with maintainers; [ codyopel rnhmjoj ];
138     platforms = platforms.unix;
139   };