evcc: 0.131.4 -> 0.131.5
[NixPkgs.git] / pkgs / by-name / di / digikam / package.nix
blob39a61d7e0eb598ab78688064b720e391d2cc5600
2   stdenv,
3   config,
4   lib,
5   fetchFromGitLab,
6   fetchgit,
7   fetchpatch,
9   cmake,
10   ninja,
11   extra-cmake-modules,
12   flex,
13   bison,
14   wrapGAppsHook3,
16   exiftool,
17   opencv,
18   libtiff,
19   libpng,
20   libjpeg,
21   libheif,
22   libjxl,
23   boost,
24   lcms2,
25   expat,
26   exiv2,
27   libxml2,
28   libxslt,
29   ffmpeg,
30   jasper,
31   eigen,
32   lensfun,
33   liblqr1,
34   libgphoto2,
35   libusb1,
36   imagemagick,
37   x265,
38   libGLX,
39   libGLU,
41   kdePackages,
43   # For `digitaglinktree`
44   perl,
45   sqlite,
47   runtimeShell,
48   # For panorama and focus stacking
49   enblend-enfuse,
50   hugin,
51   gnumake,
54 let
55   testData = fetchgit {
56     url = "https://invent.kde.org/graphics/digikam-test-data.git";
57     rev = "d02dd20b23cc279792325a0f03d21688547a7a59";
58     fetchLFS = true;
59     hash = "sha256-SvsmcniDRorwu9x9OLtHD9ftgquyoE5Kl8qDgqi1XdQ=";
60   };
63 stdenv.mkDerivation (finalAttrs: {
64   pname = "digikam";
65   version = "8.4.0";
67   src = fetchFromGitLab {
68     domain = "invent.kde.org";
69     owner = "graphics";
70     repo = "digikam";
71     rev = "v${finalAttrs.version}";
72     hash = "sha256-GJYlxJkvFEXppVk0yC9ojszylfAGt3eBMAjNUu60XDY=";
73   };
75   patches = [
76     ./disable-tests-download.patch
78     # Fix build with Qt 6.8
79     # FIXME: remove in next update
80     (fetchpatch {
81       url = "https://invent.kde.org/graphics/digikam/-/commit/a8b49ed8df676cae0f48b3369831edde2b74903e.patch";
82       hash = "sha256-93kQ/Dg/A9FR83ChyiUaRwyelE1Iq14eIecUteVbnqI=";
83     })
84   ];
86   strictDeps = true;
88   nativeBuildInputs = [
89     cmake
90     ninja
91     extra-cmake-modules
92     flex
93     bison
94     kdePackages.wrapQtAppsHook
95     wrapGAppsHook3
96   ];
98   # Based on <https://www.digikam.org/api/index.html#externaldeps>,
99   # but it doesn’t have everything, so you also have to check the
100   # CMake files…
101   #
102   # We list non‐Qt dependencies first to override Qt’s propagated
103   # build inputs.
105   buildInputs = [
106     opencv
107     libtiff
108     libpng
109     # TODO: Figure out how on earth to get it to pick up libjpeg8 for
110     # lossy DNG support.
111     libjpeg
112     libheif
113     libjxl
114     boost
115     lcms2
116     expat
117     exiv2
118     libxml2
119     libxslt
120     # Qt WebEngine uses and propagates FFmpeg, and if it’s a
121     # different version it causes linker warnings.
122     #ffmpeg
123     jasper
124     eigen
125     lensfun
126     liblqr1
127     libgphoto2
128     libusb1
129     imagemagick
130     x265
131     libGLX
132     libGLU
134     kdePackages.qtbase
135     kdePackages.qtnetworkauth
136     kdePackages.qtscxml
137     kdePackages.qtsvg
138     kdePackages.qtwayland
139     kdePackages.qtwebengine
140     kdePackages.qt5compat
141     kdePackages.qtmultimedia
143     kdePackages.kconfig
144     kdePackages.kxmlgui
145     kdePackages.ki18n
146     kdePackages.kwindowsystem
147     kdePackages.kservice
148     kdePackages.solid
149     kdePackages.kcoreaddons
150     kdePackages.knotifyconfig
151     kdePackages.knotifications
152     kdePackages.threadweaver
153     kdePackages.kiconthemes
154     kdePackages.kfilemetadata
155     kdePackages.kcalendarcore
156     kdePackages.kio
157     kdePackages.sonnet
158     # libksane and akonadi-contacts do not yet work when building for
159     # Qt 6.
160   ];
162   checkInputs = [ kdePackages.qtdeclarative ];
164   postConfigure = lib.optionalString finalAttrs.finalPackage.doCheck ''
165     ln -s ${testData} $cmakeDir/test-data
166   '';
168   postPatch = ''
169     substituteInPlace \
170       core/dplugins/bqm/custom/userscript/userscript.cpp \
171       core/utilities/import/backend/cameracontroller.cpp \
172       --replace-fail '"/bin/bash"' ${lib.escapeShellArg "\"${runtimeShell}\""}
173   '';
175   cmakeFlags = [
176     (lib.cmakeBool "BUILD_WITH_QT6" true)
177     (lib.cmakeBool "ENABLE_KFILEMETADATASUPPORT" true)
178     #(lib.cmakeBool "ENABLE_AKONADICONTACTSUPPORT" true)
179     (lib.cmakeBool "ENABLE_MEDIAPLAYER" true)
180     (lib.cmakeBool "ENABLE_APPSTYLES" true)
181   ];
183   # Tests segfault for some reason…
184   # TODO: Get them working.
185   doCheck = false;
187   dontWrapGApps = true;
189   preFixup = ''
190     qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
191     qtWrapperArgs+=(--prefix PATH : ${
192       lib.makeBinPath [
193         gnumake
194         hugin
195         enblend-enfuse
196         exiftool
197       ]
198     })
199     qtWrapperArgs+=(--suffix DK_PLUGIN_PATH : ${placeholder "out"}/${kdePackages.qtbase.qtPluginPrefix}/digikam)
200     substituteInPlace $out/bin/digitaglinktree \
201       --replace "/usr/bin/perl" "${lib.getExe perl}" \
202       --replace "/usr/bin/sqlite3" "${lib.getExe sqlite}"
203   '';
205   meta = {
206     description = "Photo management application";
207     homepage = "https://www.digikam.org/";
208     changelog = "${finalAttrs.src.meta.homepage}-/blob/master/project/NEWS.${finalAttrs.version}";
209     sourceProvenance = [ lib.sourceTypes.fromSource ];
210     license = lib.licenses.gpl2Plus;
211     maintainers = [ ];
212     platforms = lib.platforms.linux;
213     mainProgram = "digikam";
214   };