chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / pkgs / by-name / gm / gmic-qt / package.nix
blob539b766464e6d32ca23e0e2493dd2e570d125347
1 { lib
2 , cimg
3 , cmake
4 , curl
5 , fetchFromGitHub
6 , fftw
7 , gimp
8 , gimpPlugins
9 , gmic
10 , graphicsmagick
11 , libjpeg
12 , libpng
13 , libsForQt5
14 , libtiff
15 , llvmPackages
16 , ninja
17 , nix-update-script
18 , openexr
19 , pkg-config
20 , stdenv
21 , zlib
22 , variant ? "standalone"
25 let
26   variants = {
27     gimp = {
28       extraDeps = [
29         gimp
30         gimp.gtk
31       ];
32       description = "GIMP plugin for the G'MIC image processing framework";
33     };
35     standalone = {
36       extraDeps = []; # Just to keep uniformity and avoid test-for-null
37       description = "Versatile front-end to the image processing framework G'MIC";
38     };
39   };
43 assert lib.assertMsg
44   (builtins.hasAttr variant variants)
45   "gmic-qt variant \"${variant}\" is not supported. Please use one of ${lib.concatStringsSep ", " (builtins.attrNames variants)}.";
47 assert lib.assertMsg
48   (builtins.all (d: d != null) variants.${variant}.extraDeps)
49   "gmic-qt variant \"${variant}\" is missing one of its dependencies.";
51 stdenv.mkDerivation (finalAttrs: {
52   pname = "gmic-qt${lib.optionalString (variant != "standalone") "-${variant}"}";
53   version = "3.4.2";
55   src = fetchFromGitHub {
56     owner = "c-koi";
57     repo = "gmic-qt";
58     rev = "v.${finalAttrs.version}";
59     hash = "sha256-fM6dBxBC2b1/v+rfiP//QaAcTJmMtYPn4OUNwVqKhYk=";
60   };
62   nativeBuildInputs = [
63     cmake
64     libsForQt5.wrapQtAppsHook
65     ninja
66     pkg-config
67   ];
69   buildInputs = [
70     cimg
71     curl
72     fftw
73     gmic
74     graphicsmagick
75     libjpeg
76     libpng
77     libtiff
78     openexr
79     zlib
80   ] ++ (with libsForQt5; [
81     qtbase
82     qttools
83   ]) ++ lib.optionals stdenv.cc.isClang [
84     llvmPackages.openmp
85   ] ++ variants.${variant}.extraDeps;
87   postPatch = ''
88     patchShebangs \
89       translations/filters/csv2ts.sh \
90       translations/lrelease.sh
92     mkdir ../src
93     ln -s ${gmic.src}/src/gmic.cpp ../src/gmic.cpp
94   '';
96   cmakeFlags = [
97     (lib.cmakeBool "ENABLE_DYNAMIC_LINKING" true)
98     (lib.cmakeBool "ENABLE_SYSTEM_GMIC" true)
99     (lib.cmakeFeature "GMIC_QT_HOST" (if variant == "standalone" then "none" else variant))
100   ];
102   postFixup = lib.optionalString (variant == "gimp") ''
103     echo "wrapping $out/${gimp.targetPluginDir}/gmic_gimp_qt/gmic_gimp_qt"
104     wrapQtApp "$out/${gimp.targetPluginDir}/gmic_gimp_qt/gmic_gimp_qt"
105   '';
107   passthru = {
108     tests = {
109       # They need to be update in lockstep.
110       gimp-plugin = gimpPlugins.gmic;
111       inherit cimg gmic;
112     };
114     updateScript = nix-update-script {
115       extraArgs = [ "--version-regex" "^v\\.(.*)" ];
116     };
117   };
119   meta = {
120     homepage = "http://gmic.eu/";
121     inherit (variants.${variant}) description;
122     license = lib.licenses.gpl3Plus;
123     mainProgram = "gmic_qt";
124     maintainers = with lib.maintainers; [ AndersonTorres ];
125     platforms = lib.platforms.unix;
126   };