1{ lib
2, fetchurl
3, gettext
4, itstool
5, python3
6, meson
7, ninja
8, wrapGAppsHook
9, libxml2
10, pkg-config
11, desktop-file-utils
12, gobject-introspection
13, gtk3
14, gtksourceview4
15, gnome
16, gsettings-desktop-schemas
17}:
18
19python3.pkgs.buildPythonApplication rec {
20 pname = "meld";
21 version = "3.22.0";
22
23 format = "other";
24
25 src = fetchurl {
26 url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
27 sha256 = "sha256-P8EHyY7251NY/9Kw0UyF3bSP4UoR6TmpQyL6qo6QxA0=";
28 };
29
30 nativeBuildInputs = [
31 meson
32 ninja
33 gettext
34 itstool
35 libxml2
36 pkg-config
37 desktop-file-utils
38 gobject-introspection
39 wrapGAppsHook
40 gtk3 # for gtk-update-icon-cache
41 ];
42
43 buildInputs = [
44 gtk3
45 gtksourceview4
46 gsettings-desktop-schemas
47 gnome.adwaita-icon-theme
48 ];
49
50 propagatedBuildInputs = with python3.pkgs; [
51 pygobject3
52 pycairo
53 ];
54
55 postPatch = ''
56 patchShebangs meson_shebang_normalisation.py
57 '';
58
59 passthru = {
60 updateScript = gnome.updateScript {
61 packageName = pname;
62 versionPolicy = "none"; # should be odd-unstable but we are tracking unstable versions for now
63 };
64 };
65
66 meta = with lib; {
67 description = "Visual diff and merge tool";
68 homepage = "https://meld.app/";
69 license = licenses.gpl2Plus;
70 platforms = platforms.linux ++ platforms.darwin;
71 maintainers = with maintainers; [ jtojnar mimame ];
72 };
73}