1{ lib, gitUpdater
2, fetchFromGitHub
3, meson
4, ninja
5, gettext
6, wrapGAppsHook3
7, gobject-introspection
8, pango
9, gdk-pixbuf
10, python3
11, atk
12, gtk3
13, hicolor-icon-theme
14}:
15
16python3.pkgs.buildPythonApplication rec {
17 pname = "diffuse";
18 version = "0.9.0";
19
20 src = fetchFromGitHub {
21 owner = "MightyCreak";
22 repo = "diffuse";
23 rev = "v${version}";
24 sha256 = "6GdUtdVhhIQL1cD9/e7Byv37PVKXmzVWhJC6GROK7OA=";
25 };
26
27 format = "other";
28
29 nativeBuildInputs = [
30 wrapGAppsHook3
31 meson
32 ninja
33 gettext
34 gobject-introspection
35 ];
36
37 buildInputs = [
38 pango
39 gdk-pixbuf
40 atk
41 gtk3
42 ];
43
44 propagatedBuildInputs = with python3.pkgs; [
45 pycairo
46 pygobject3
47 ];
48
49 preConfigure = ''
50 # app bundle for macos
51 substituteInPlace src/diffuse/meson.build data/icons/meson.build src/diffuse/mac-os-app/diffuse-mac.in --replace-fail "/Applications" "$out/Applications";
52 '';
53
54 mesonFlags = [
55 "-Db_ndebug=true"
56 ];
57
58 # to avoid running gtk-update-icon-cache, update-desktop-database and glib-compile-schemas
59 DESTDIR = "/";
60
61 makeWrapperArgs = [
62 "--prefix XDG_DATA_DIRS : ${hicolor-icon-theme}/share"
63 ];
64
65 passthru = {
66 updateScript = gitUpdater {
67 rev-prefix = "v";
68 };
69 };
70
71 meta = with lib; {
72 homepage = "https://github.com/MightyCreak/diffuse";
73 description = "Graphical tool for merging and comparing text files";
74 mainProgram = "diffuse";
75 license = licenses.gpl2;
76 maintainers = with maintainers; [ k3a ];
77 platforms = platforms.unix;
78 };
79}