fluffychat: 1.22.1 -> 1.23.0 (#364091)
[NixPkgs.git] / pkgs / by-name / di / digikam / package.nix
blob8c33c9cac915b72a3360a1d2c23a01c8708c5e6c
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,
40   cudaPackages,
41   enableCuda ? config.cudaSupport,
43   kdePackages,
45   # For `digitaglinktree`
46   perl,
47   sqlite,
49   runtimeShell,
50   # For panorama and focus stacking
51   enblend-enfuse,
52   hugin,
53   gnumake,
56 let
57   testData = fetchgit {
58     url = "https://invent.kde.org/graphics/digikam-test-data.git";
59     rev = "d02dd20b23cc279792325a0f03d21688547a7a59";
60     fetchLFS = true;
61     hash = "sha256-SvsmcniDRorwu9x9OLtHD9ftgquyoE5Kl8qDgqi1XdQ=";
62   };
65 stdenv.mkDerivation (finalAttrs: {
66   pname = "digikam";
67   version = "8.5.0";
69   src = fetchFromGitLab {
70     domain = "invent.kde.org";
71     owner = "graphics";
72     repo = "digikam";
73     rev = "v${finalAttrs.version}";
74     hash = "sha256-KO6kq0SlYzu7sh6+7JQWhIeHNowy3fx03OFTdDwyR10=";
75   };
77   patches = [
78     ./disable-tests-download.patch
79   ];
81   strictDeps = true;
83   nativeBuildInputs = [
84     cmake
85     ninja
86     extra-cmake-modules
87     flex
88     bison
89     kdePackages.wrapQtAppsHook
90     wrapGAppsHook3
91   ];
93   # Based on <https://www.digikam.org/api/index.html#externaldeps>,
94   # but it doesn’t have everything, so you also have to check the
95   # CMake files…
96   #
97   # We list non‐Qt dependencies first to override Qt’s propagated
98   # build inputs.
100   buildInputs = [
101     opencv
102     libtiff
103     libpng
104     # TODO: Figure out how on earth to get it to pick up libjpeg8 for
105     # lossy DNG support.
106     libjpeg
107     libheif
108     libjxl
109     boost
110     lcms2
111     expat
112     exiv2
113     libxml2
114     libxslt
115     # Qt WebEngine uses and propagates FFmpeg, and if it’s a
116     # different version it causes linker warnings.
117     #ffmpeg
118     jasper
119     eigen
120     lensfun
121     liblqr1
122     libgphoto2
123     libusb1
124     imagemagick
125     x265
126     libGLX
127     libGLU
129     kdePackages.qtbase
130     kdePackages.qtnetworkauth
131     kdePackages.qtscxml
132     kdePackages.qtsvg
133     kdePackages.qtwayland
134     kdePackages.qtwebengine
135     kdePackages.qt5compat
136     kdePackages.qtmultimedia
138     kdePackages.kconfig
139     kdePackages.kxmlgui
140     kdePackages.ki18n
141     kdePackages.kwindowsystem
142     kdePackages.kservice
143     kdePackages.solid
144     kdePackages.kcoreaddons
145     kdePackages.knotifyconfig
146     kdePackages.knotifications
147     kdePackages.threadweaver
148     kdePackages.kiconthemes
149     kdePackages.kfilemetadata
150     kdePackages.kcalendarcore
151     kdePackages.kio
152     kdePackages.sonnet
153     # libksane and akonadi-contacts do not yet work when building for
154     # Qt 6.
155   ];
157   checkInputs = [ kdePackages.qtdeclarative ];
159   postConfigure = lib.optionalString finalAttrs.finalPackage.doCheck ''
160     ln -s ${testData} $cmakeDir/test-data
161   '';
163   postPatch = ''
164     substituteInPlace \
165       core/dplugins/bqm/custom/userscript/userscript.cpp \
166       core/utilities/import/backend/cameracontroller.cpp \
167       --replace-fail '"/bin/bash"' ${lib.escapeShellArg "\"${runtimeShell}\""}
168   '';
170   cmakeFlags = [
171     (lib.cmakeBool "BUILD_WITH_QT6" true)
172     (lib.cmakeBool "ENABLE_KFILEMETADATASUPPORT" true)
173     #(lib.cmakeBool "ENABLE_AKONADICONTACTSUPPORT" true)
174     (lib.cmakeBool "ENABLE_MEDIAPLAYER" true)
175     (lib.cmakeBool "ENABLE_APPSTYLES" true)
176     (lib.optionals enableCuda "-DCUDA_TOOLKIT_ROOT_DIR=${cudaPackages.cudatoolkit}")
177   ];
179   # Tests segfault for some reason…
180   # TODO: Get them working.
181   doCheck = false;
183   dontWrapGApps = true;
185   preFixup = ''
186     qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
187     qtWrapperArgs+=(--prefix PATH : ${
188       lib.makeBinPath [
189         gnumake
190         hugin
191         enblend-enfuse
192         exiftool
193       ]
194     })
195     qtWrapperArgs+=(--suffix DK_PLUGIN_PATH : ${placeholder "out"}/${kdePackages.qtbase.qtPluginPrefix}/digikam)
196     substituteInPlace $out/bin/digitaglinktree \
197       --replace "/usr/bin/perl" "${lib.getExe perl}" \
198       --replace "/usr/bin/sqlite3" "${lib.getExe sqlite}"
199   '';
201   meta = {
202     description = "Photo management application";
203     homepage = "https://www.digikam.org/";
204     changelog = "${finalAttrs.src.meta.homepage}-/blob/master/project/NEWS.${finalAttrs.version}";
205     sourceProvenance = [ lib.sourceTypes.fromSource ];
206     license = lib.licenses.gpl2Plus;
207     maintainers = [ ];
208     platforms = lib.platforms.linux;
209     mainProgram = "digikam";
210   };