1{
2 lib,
3 python3,
4 fetchFromGitHub,
5 wrapGAppsHook4,
6 appstream-glib,
7 desktop-file-utils,
8 gettext,
9 gtk4,
10 libadwaita,
11 meson,
12 ninja,
13 pkg-config,
14 gobject-introspection,
15 jpegoptim,
16 libwebp,
17 optipng,
18 pngquant,
19 oxipng,
20 nix-update-script,
21}:
22
23python3.pkgs.buildPythonApplication rec {
24 pname = "curtail";
25 version = "1.13.0";
26 format = "other";
27
28 src = fetchFromGitHub {
29 owner = "Huluti";
30 repo = "Curtail";
31 tag = version;
32 sha256 = "sha256-JfioWtd0jGTyaD5uELAqH6J+h04MOrfEqdR7GWgXyMw=";
33 };
34
35 nativeBuildInputs = [
36 wrapGAppsHook4
37 appstream-glib
38 desktop-file-utils
39 gettext
40 gtk4
41 libadwaita
42 meson
43 ninja
44 pkg-config
45 gobject-introspection
46 ];
47
48 buildInputs = [
49 appstream-glib
50 gettext
51 gtk4
52 libadwaita
53 ];
54
55 propagatedBuildInputs = [
56 python3.pkgs.pygobject3
57 ];
58
59 preInstall = ''
60 patchShebangs ../build-aux/meson/postinstall.py
61 '';
62
63 dontWrapGApps = true;
64
65 preFixup = ''
66 makeWrapperArgs+=(
67 "''${gappsWrapperArgs[@]}"
68 "--prefix" "PATH" ":" "${
69 lib.makeBinPath [
70 jpegoptim
71 libwebp
72 optipng
73 pngquant
74 oxipng
75 ]
76 }"
77 )
78 '';
79
80 passthru = {
81 updateScript = nix-update-script { };
82 };
83
84 meta = with lib; {
85 description = "Simple & useful image compressor";
86 mainProgram = "curtail";
87 homepage = "https://github.com/Huluti/Curtail";
88 license = licenses.gpl3Only;
89 teams = [ lib.teams.gnome-circle ];
90 };
91}