1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2017, 2019, 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
4 ;;; This file is part of GNU Guix.
6 ;;; GNU Guix is free software; you can redistribute it and/or modify it
7 ;;; under the terms of the GNU General Public License as published by
8 ;;; the Free Software Foundation; either version 3 of the License, or (at
9 ;;; your option) any later version.
11 ;;; GNU Guix is distributed in the hope that it will be useful, but
12 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 ;;; GNU General Public License for more details.
16 ;;; You should have received a copy of the GNU General Public License
17 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
19 (define-module (gnu packages kde-pim)
20 #:use-module (guix build-system qt)
21 #:use-module (guix download)
22 #:use-module ((guix licenses) #:prefix license:)
23 #:use-module (guix packages)
24 #:use-module (guix utils)
25 #:use-module (gnu packages)
26 #:use-module (gnu packages boost)
27 #:use-module (gnu packages cyrus-sasl)
28 #:use-module (gnu packages databases)
29 #:use-module (gnu packages documentation)
30 #:use-module (gnu packages gnome)
31 #:use-module (gnu packages kde-frameworks)
32 #:use-module (gnu packages openldap)
33 #:use-module (gnu packages qt)
34 #:use-module (gnu packages search)
35 #:use-module (gnu packages sqlite)
36 #:use-module (gnu packages xml))
38 (define-public akonadi
45 (uri (string-append "mirror://kde/stable/applications/" version
46 "/src/akonadi-" version ".tar.xz"))
48 (base32 "0v7f1049wjnqxhwxr1443wc2cfbdqmf15xcwjz3j1m0vgdva9pyg"))
49 (patches (search-patches
51 "akonadi-timestamps.patch"
52 "akonadi-Revert-Make-installation-properly-relocatabl.patch"))))
53 (build-system qt-build-system)
55 `(("extra-cmake-modules" ,extra-cmake-modules)
57 ("shared-mime-info" ,shared-mime-info)))
61 ("kconfigwidgets" ,kconfigwidgets)
62 ("kcoreaddons" ,kcoreaddons)
64 ("kdbusaddons" ,kdbusaddons)
65 ("kdesignerplugin" ,kdesignerplugin)
67 ("kiconthemes" ,kiconthemes)
69 ("kitemmodels" ,kitemmodels)
70 ("kitemviews" ,kitemviews)
71 ("kwidgetsaddons" ,kwidgetsaddons)
72 ("kwindowsystem" ,kwindowsystem)
76 ;; Do NOT add mysql or postgresql to the inputs. Otherwise the binaries
77 ;; and wrapped files will refer to them, even if the user choices none
78 ;; of these. Executables are searched on $PATH then.
82 `(#:tests? #f ;; TODO 135/167 tests fail
83 #:configure-flags '("-DDATABASE_BACKEND=SQLITE") ; lightweight
84 #:modules ((ice-9 textual-ports)
85 ,@%qt-build-system-modules)
87 (modify-phases (@ (guix build qt-build-system) %standard-phases)
88 (add-before 'configure 'add-definitions
90 (let ((out (assoc-ref %outputs "out"))
91 (mysql (assoc-ref %build-inputs "mysql"))
92 (pgsql (assoc-ref %build-inputs "postgresql")))
93 (with-output-to-file "CMakeLists.txt.new"
97 "add_compile_definitions(\n"
98 "NIX_OUT=\"" out "\"\n"
99 ;; pin binaries for mysql backend
102 (call-with-input-file "CMakeLists.txt"
104 (rename-file "CMakeLists.txt.new" "CMakeLists.txt"))
106 (home-page "https://kontact.kde.org/components/akonadi.html")
107 (synopsis "Extensible cross-desktop storage service for PIM")
108 (description "Akonadi is an extensible cross-desktop Personal Information
109 Management (PIM) storage service. It provides a common framework for
110 applications to store and access mail, calendars, addressbooks, and other PIM
113 This package contains the Akonadi PIM storage server and associated
115 (license license:fdl1.2+)))
117 (define-public akonadi-contacts
119 (name "akonadi-contacts")
124 (uri (string-append "mirror://kde/stable/applications/" version
125 "/src/akonadi-contacts-" version ".tar.xz"))
127 (base32 "1pw1s8c6dlcb103cw46p1ikvas3y8cwiwnfdny2jd3hr3rig4px9"))))
128 (build-system qt-build-system)
130 `(("extra-cmake-modules" ,extra-cmake-modules)))
132 `(("akonadi" ,akonadi)
136 ("kcompletion" ,kcompletion)
137 ("kconfigwidgets" ,kconfigwidgets)
138 ("kcontacts" ,kcontacts)
139 ("kcoreaddons" ,kcoreaddons)
140 ("kdbusaddons" ,kdbusaddons)
142 ("kiconthemes" ,kiconthemes)
143 ("kitemmodels" ,kitemmodels)
144 ("kitemviews" ,kitemviews)
145 ("kjobwidgets" ,kjobwidgets)
147 ("kservice" ,kservice)
148 ("ktextwidgets" ,ktextwidgets)
149 ("kwidgetsaddons" ,kwidgetsaddons)
156 (home-page "https://api.kde.org/stable/kdepimlibs-apidocs/akonadi/html/")
157 (synopsis "Akonadi contacts access library")
158 (description "Akonadi Contacts is a library that effectively bridges the
159 type-agnostic API of the Akonadi client libraries and the domain-specific
160 KContacts library. It provides jobs, models and other helpers to make working
161 with contacts and addressbooks through Akonadi easier.
163 The library provides a complex dialog for editing contacts and several models
164 to list and filter contacts.")
165 (license ;; GPL for programs, LGPL for libraries
166 (list license:gpl2+ license:lgpl2.0+))))
168 (define-public akonadi-mime
170 (name "akonadi-mime")
175 (uri (string-append "mirror://kde/stable/applications/" version
176 "/src/akonadi-mime-" version ".tar.xz"))
178 (base32 "03q3dnhzcgmgcqvijnwi4ikg0m1zad2l679bqnp051v27fvs4yg7"))))
179 (build-system qt-build-system)
181 `(("extra-cmake-modules" ,extra-cmake-modules)
182 ("libxslt" ,libxslt) ;; xslt for generating interface descriptions
183 ("shared-mime-info" ,shared-mime-info)))
185 `(("akonadi" ,akonadi)
189 ("kconfigwidgets" ,kconfigwidgets)
190 ("kdbusaddons" ,kdbusaddons)
193 ("kitemmodels" ,kitemmodels)
195 ("kwidgetsaddons" ,kwidgetsaddons)
198 (home-page "https://api.kde.org/stable/kdepimlibs-apidocs/akonadi/html/")
201 (modify-phases %standard-phases
202 (add-after 'unpack 'copy-desktop-file-early
204 (let ((plugins-dir "/tmp/.local/share/akonadi/plugins/serializer"))
205 (mkdir-p plugins-dir)
206 (copy-file "serializers/akonadi_serializer_mail.desktop"
207 (string-append plugins-dir "/akonadi_serializer_mail.desktop")))
209 (add-before 'check 'check-setup
211 (setenv "HOME" "/tmp")
213 (synopsis "Akonadi MIME handling library")
214 (description "Akonadi Mime is a library that effectively bridges the
215 type-agnostic API of the Akonadi client libraries and the domain-specific
216 KMime library. It provides jobs, models and other helpers to make working
217 with emails through Akonadi easier.")
218 (license ;; GPL for programs, LGPL for libraries
219 (list license:gpl2+ license:lgpl2.0+))))
221 (define-public akonadi-notes
223 (name "akonadi-notes")
228 (uri (string-append "mirror://kde/stable/applications/" version
229 "/src/akonadi-notes-" version ".tar.xz"))
231 (base32 "0r8vh11bfjzhspb5kp2d0kcgwqd2m5qpxpamiajzjq910f51sw3w"))))
232 (build-system qt-build-system)
234 `(("extra-cmake-modules" ,extra-cmake-modules)))
236 `(("akonadi" ,akonadi)
241 (home-page "https://api.kde.org/stable/kdepimlibs-apidocs/akonadi/html/")
242 (synopsis "Akonadi notes access library")
243 (description "Akonadi Notes is a library that effectively bridges the
244 type-agnostic API of the Akonadi client libraries and the domain-specific
245 KMime library. It provides a helper class for note attachments and for
246 wrapping notes into KMime::Message objects.")
247 (license ;; GPL for programs, LGPL for libraries
248 (list license:gpl2+ license:lgpl2.0+))))
250 (define-public akonadi-search
252 (name "akonadi-search")
257 (uri (string-append "mirror://kde/stable/applications/" version
258 "/src/akonadi-search-" version ".tar.xz"))
260 (base32 "16qzs2cs4nxwrpwcdgwry95qn6wmg8s1p4w3qajx1ahkgwmsh11s"))))
261 (build-system qt-build-system)
263 `(("extra-cmake-modules" ,extra-cmake-modules)))
265 `(("akonadi" ,akonadi)
266 ("akonadi-mime" ,akonadi-mime)
268 ("kcalendarcore" ,kcalendarcore)
269 ("kcmutils" ,kcmutils)
270 ("kcontacts" ,kcontacts)
272 ("kdbusaddons" ,kdbusaddons)
275 ("kitemmodels" ,kitemmodels)
278 ("kwindowsystem" ,kwindowsystem)
282 `(#:tests? #f)) ;; TODO: needs dbus
283 (home-page "https://api.kde.org/stable/kdepimlibs-apidocs/akonadi/html/")
284 (synopsis "Akonadi search library")
285 (description "Xapian-based indexing and query infrastructure for
287 (license ;; GPL for programs, LGPL for libraries
288 (list license:gpl2+ license:lgpl2.0+))))
290 (define-public kalarmcal
297 (uri (string-append "mirror://kde/stable/applications/" version
298 "/src/kalarmcal-" version ".tar.xz"))
300 (base32 "0w9qsx2gqwny2v4fsj4awn814s9b7yrxvqrawlick3r2kp4x1sgn"))))
301 (build-system qt-build-system)
303 `(("extra-cmake-modules" ,extra-cmake-modules)))
305 `(("akonadi", akonadi)
307 ("kcalendarcore" ,kcalendarcore)
308 ("kcalutils" ,kcalutils)
309 ("kcompletion" ,kcompletion)
311 ("kconfigwidgets" ,kconfigwidgets)
312 ("kcoreaddons" ,kcoreaddons)
313 ("kdbusaddons" ,kdbusaddons)
314 ("kholidays" ,kholidays)
316 ("kidentitymanagement" ,kidentitymanagement)
318 ("kitemmodels" ,kitemmodels)
319 ("kpimtextedit" ,kpimtextedit)
320 ("ktextwidgets" ,ktextwidgets)
324 `(#:tests? #f)) ;; TODO: TZ setup
325 (home-page "https://api.kde.org/stable/kdepimlibs-apidocs/")
326 (synopsis "Library for handling kalarm calendar data")
327 (description "This library provides an API for KAlarm alarms.")
328 (license license:lgpl2.0+)))
330 (define-public kcalutils
337 (uri (string-append "mirror://kde/stable/applications/" version
338 "/src/kcalutils-" version ".tar.xz"))
340 (base32 "1nlkik4qiciyh1slgpis3n5h9pks2ygdba9yq4s16nnmip4l45w2"))))
341 (build-system qt-build-system)
343 `(("extra-cmake-modules" ,extra-cmake-modules)
344 ("libxml2" ,libxml2))) ;; xmllint required for tests
346 `(("grantlee" ,grantlee)
347 ("kcalendarcore" ,kcalendarcore)
350 ("kconfigwidgets" ,kconfigwidgets)
351 ("kcoreaddons" ,kcoreaddons)
353 ("kiconthemes" ,kiconthemes)
354 ("kidentitymanagement" ,kidentitymanagement)
355 ("kpimtextedit" ,kpimtextedit)
356 ("ktextwidgets" ,ktextwidgets)
357 ("kwidgetsaddons" ,kwidgetsaddons)
358 ("oxygen-icons" ,oxygen-icons) ; default icon set, required for tests
361 `(#:tests? #f)) ;; TODO: seem to pull in some wrong theme
362 (home-page "https://api.kde.org/stable/kdepimlibs-apidocs/")
363 (synopsis "Library with utility functions for the handling of calendar
365 (description "This library provides a utility and user interface
366 functions for accessing calendar data using the kcalcore API.")
367 (license license:lgpl2.0+)))
369 (define-public kidentitymanagement
371 (name "kidentitymanagement")
376 (uri (string-append "mirror://kde/stable/applications/" version
377 "/src/kidentitymanagement-" version ".tar.xz"))
379 (base32 "0dqz49sp5hq44590rrxav8688aqlzsww4q4n55ksfy13nk9i5mbf"))))
380 (build-system qt-build-system)
382 `(("extra-cmake-modules" ,extra-cmake-modules)))
384 `(("kcodecs" ,kcodecs)
385 ("kcompletion" ,kcompletion)
387 ("kcoreaddons" ,kcoreaddons)
388 ("kemoticons" ,kemoticons)
389 ("kiconthemes" ,kiconthemes)
391 ("kpimtextedit" ,kpimtextedit)
392 ("ktextwidgets" ,ktextwidgets)
397 (modify-phases %standard-phases
398 (add-before 'check 'set-home
400 (setenv "HOME" "/tmp/dummy-home") ;; FIXME: what is this?
402 (home-page "https://kontact.kde.org/")
403 (synopsis "Library for shared identities between mail applications")
404 (description "Library for shared identities between mail applications.")
405 (license ;; GPL for programs, LGPL for libraries, FDL for documentation
406 (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
415 (uri (string-append "mirror://kde/stable/applications/" version
416 "/src/kimap-" version ".tar.xz"))
418 (base32 "0l8hb2z82jzbwr12lw5fismwk1a3ca4dk966p1fxg4bibck8vjj6"))))
419 (build-system qt-build-system)
421 `(("extra-cmake-modules" ,extra-cmake-modules)))
423 `(("cyrus-sasl" ,cyrus-sasl)
424 ("kcoreaddons" ,kcoreaddons)
429 (home-page "https://api.kde.org/stable/kdepimlibs-apidocs/")
430 (synopsis "Library for handling IMAP")
431 (description "This library provides a job-based API for interacting with
432 an IMAP4rev1 server. It manages connections, encryption and parameter quoting
433 and encoding, but otherwise provides quite a low-level interface to the
434 protocol. This library does not implement an IMAP client; it merely makes it
436 (license ;; GPL for programs, LGPL for libraries
437 (list license:gpl2+ license:lgpl2.0+))))
446 (uri (string-append "mirror://kde/stable/applications/" version
447 "/src/kldap-" version ".tar.xz"))
449 (base32 "1blbnj8av6h168g14gyphyd9sz87af773b1qglmbkv5pzbzaanxn"))))
450 (build-system qt-build-system)
452 `(("extra-cmake-modules" ,extra-cmake-modules)
453 ("kdoctools" ,kdoctools)))
457 ("kwidgetsaddons" ,kwidgetsaddons)
460 `(("cyrus-sasl" ,cyrus-sasl)
461 ("openldap" ,openldap)))
462 (home-page "https://api.kde.org/stable/kdepimlibs-apidocs/")
463 (synopsis "Library for accessing LDAP")
464 (description "This library provides an API for LDAP.")
465 (license license:lgpl2.0+)))
474 (uri (string-append "mirror://kde/stable/applications/" version
475 "/src/kmbox-" version ".tar.xz"))
477 (base32 "13b5v1nx46k5ais3cms7yxrfi8p6xbljpkpg3f7v1asb6kshv7g2"))))
478 (build-system qt-build-system)
480 `(("extra-cmake-modules" ,extra-cmake-modules)))
482 `(("kcodecs" ,kcodecs)
485 (home-page "https://api.kde.org/stable/kdepimlibs-apidocs/")
486 (synopsis "Library for handling mbox mailboxes")
487 (description "A library for accessing mail storages in MBox format.")
488 (license license:lgpl2.0+ )))
497 (uri (string-append "mirror://kde/stable/applications/" version
498 "/src/kmime-" version ".tar.xz"))
500 (base32 "1pc00pwwrngsyr7ppvqwfgvcgy2wiqdbqxhv9xidn4dw9way2ng6"))))
501 (build-system qt-build-system)
503 `(("extra-cmake-modules" ,extra-cmake-modules)))
505 `(("kcodecs" ,kcodecs)
510 (modify-phases %standard-phases
511 (add-after 'unpack 'fix-test-case
513 ;; This is curious: autotests/CMakeLists.txt sets LC_TIME=C, but
514 ;; the Qt locale returns different. See kmime commit 3a9651d26a.
515 (substitute* "autotests/dateformattertest.cpp"
516 (("(Today|Yesterday) 12:34:56" line day)
517 (string-append day " 12:34 PM")))
519 (home-page "https://api.kde.org/stable/kdepimlibs-apidocs/")
520 (synopsis "Library for handling MIME data")
521 (description "A library for MIME handling.")
522 (license license:lgpl2.0+)))
524 (define-public kpimtextedit
526 (name "kpimtextedit")
531 (uri (string-append "mirror://kde/stable/applications/" version
532 "/src/kpimtextedit-" version ".tar.xz"))
534 (base32 "1as48j5qfpj9pqjck1615nlpk4a850m7xxcyl41gx8biww027zvm"))))
535 (build-system qt-build-system)
537 `(("extra-cmake-modules" ,extra-cmake-modules)
538 ("qttools" ,qttools)))
540 `(("grantlee" ,grantlee)
542 ("kconfigwidgets" ,kconfigwidgets)
543 ("kcoreaddons" ,kcoreaddons)
544 ("kdesignerplugin" ,kdesignerplugin)
545 ("kemoticons" ,kemoticons)
547 ("kiconthemes" ,kiconthemes)
549 ("ksyntaxhighlighting" ,ksyntaxhighlighting)
550 ("ktextwidgets" ,ktextwidgets)
551 ("kwidgetsaddons" ,kwidgetsaddons)
554 ("qtspeech", qtspeech)
557 `(#:tests? #f)) ;; TODO - test suite hangs
558 (home-page "https://api.kde.org/stable/kdepimlibs-apidocs/")
559 (synopsis "Library providing a textedit with PIM-specific features")
560 (description "A library for PIM-specific text editing utilities.")
561 (license ;; GPL for programs, LGPL for libraries, FDL for documentation
562 (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
571 (uri (string-append "mirror://kde/stable/applications/" version
572 "/src/ktnef-" version ".tar.xz"))
574 (base32 "0kgfhh46130hg1xq8km5gjzxa3b620j1zdrg54qivxa782smgbl6"))))
575 (build-system qt-build-system)
577 `(("extra-cmake-modules" ,extra-cmake-modules)))
579 `(("kcalendarcore" ,kcalendarcore)
580 ("kcalutils" ,kcalutils)
583 ("kcontacts" ,kcontacts)
584 ("kcoreaddons" ,kcoreaddons)
587 (home-page "https://api.kde.org/stable/kdepimlibs-apidocs/ktnef/html/")
588 (synopsis "Viewer for mail attachments using TNEF format")
589 (description "Viewer for mail attachments using TNEF format")
590 (license license:lgpl2.0+)))