1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 docutils,
6 bison,
7 flex,
8 libsForQt5,
9}:
10
11stdenv.mkDerivation (finalAttrs: {
12 pname = "xxdiff";
13 version = "5.1-unstable-2025-03-21";
14
15 src = fetchFromGitHub {
16 owner = "blais";
17 repo = "xxdiff";
18 rev = "a5593c1c675fb79d0ec2b6e353abba1fb0179aa7";
19 hash = "sha256-nRXvqhO128XsAFy4KrsrSYKpzWnciXGJV6QkuqRa07w=";
20 };
21
22 nativeBuildInputs = [
23 bison
24 docutils
25 flex
26 libsForQt5.qmake
27 libsForQt5.wrapQtAppsHook
28 ];
29
30 buildInputs = [ libsForQt5.qtbase ];
31
32 dontUseQmakeConfigure = true;
33
34 # c++11 and above is needed for building with Qt 5.9+
35 env.NIX_CFLAGS_COMPILE = toString [ "-std=c++14" ];
36
37 sourceRoot = "${finalAttrs.src.name}/src";
38
39 postPatch = ''
40 substituteInPlace xxdiff.pro \
41 --replace-fail "../bin" "./bin"
42 '';
43
44 preConfigure = ''
45 make -f Makefile.bootstrap
46 '';
47
48 installPhase = ''
49 runHook preInstall
50
51 install -Dm555 -t $out/bin ./bin/xxdiff
52 install -Dm444 -t $out/share/doc/xxdiff ${finalAttrs.src}/README.rst
53
54 runHook postInstall
55 '';
56
57 meta = {
58 description = "Graphical file and directories comparator and merge tool";
59 mainProgram = "xxdiff";
60 homepage = "http://furius.ca/xxdiff/";
61 license = lib.licenses.gpl2Plus;
62 maintainers = with lib.maintainers; [
63 pSub
64 raskin
65 ];
66 platforms = lib.platforms.linux;
67 };
68})