gnu: Rename qtbase to qtbase-5.
[jackhill/guix/guix.git] / gnu / packages / jami.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
3 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
4 ;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
5 ;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
6 ;;;
7 ;;; This file is part of GNU Guix.
8 ;;;
9 ;;; GNU Guix is free software; you can redistribute it and/or modify it
10 ;;; under the terms of the GNU General Public License as published by
11 ;;; the Free Software Foundation; either version 3 of the License, or (at
12 ;;; your option) any later version.
13 ;;;
14 ;;; GNU Guix is distributed in the hope that it will be useful, but
15 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 ;;; GNU General Public License for more details.
18 ;;;
19 ;;; You should have received a copy of the GNU General Public License
20 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
22 (define-module (gnu packages jami)
23 #:use-module ((guix licenses) #:prefix license:)
24 #:use-module (gnu packages aidc)
25 #:use-module (gnu packages audio)
26 #:use-module (gnu packages autotools)
27 #:use-module (gnu packages backup)
28 #:use-module (gnu packages base)
29 #:use-module (gnu packages crypto)
30 #:use-module (gnu packages documentation)
31 #:use-module (gnu packages freedesktop)
32 #:use-module (gnu packages gcc)
33 #:use-module (gnu packages gettext)
34 #:use-module (gnu packages glib)
35 #:use-module (gnu packages gnome)
36 #:use-module (gnu packages graphviz)
37 #:use-module (gnu packages gtk)
38 #:use-module (gnu packages libcanberra)
39 #:use-module (gnu packages linux)
40 #:use-module (gnu packages networking)
41 #:use-module (gnu packages perl)
42 #:use-module (gnu packages pkg-config)
43 #:use-module (gnu packages pulseaudio)
44 #:use-module (gnu packages python)
45 #:use-module (gnu packages qt)
46 #:use-module (gnu packages serialization)
47 #:use-module (gnu packages sqlite)
48 #:use-module (gnu packages telephony)
49 #:use-module (gnu packages tls)
50 #:use-module (gnu packages upnp)
51 #:use-module (gnu packages version-control)
52 #:use-module (gnu packages video)
53 #:use-module (gnu packages webkit)
54 #:use-module (gnu packages xiph)
55 #:use-module (gnu packages xorg)
56 #:use-module (gnu packages)
57 #:use-module (guix build-system cmake)
58 #:use-module (guix build-system gnu)
59 #:use-module (guix build-system qt)
60 #:use-module (guix download)
61 #:use-module (guix git-download)
62 #:use-module (guix packages)
63 #:use-module (guix utils))
64
65 (define %jami-version "20210606.1.e2f9490")
66
67 (define %jami-sources
68 ;; Return an origin object of the tarball release sources archive of the
69 ;; Jami project.
70 (origin
71 (method url-fetch)
72 (uri (string-append "https://dl.jami.net/release/tarballs/jami_"
73 %jami-version
74 ".tar.gz"))
75 (modules '((guix build utils)))
76 (snippet
77 `(begin
78 ;; Delete multiple MiBs of bundled tarballs. The contrib directory
79 ;; contains the custom patches for pjproject and other libraries used
80 ;; by Jami.
81 (delete-file-recursively "daemon/contrib/tarballs")
82 ;; Remove the git submodule directories of unused Jami clients.
83 (for-each delete-file-recursively '("client-android"
84 "client-electron"
85 "client-ios"
86 "client-macosx"
87 "client-uwp"))))
88 (sha256
89 (base32
90 "1vpxv2dk3l9cahv6mxd2754pxs9mzrid5bgwvl6k1byzpq8y4smr"))))
91
92 ;; Jami maintains a set of patches for some key dependencies (currently
93 ;; pjproject and ffmpeg) of Jami that haven't yet been integrated upstream.
94 ;; This procedure simplifies the process of applying them.
95 (define jami-apply-custom-patches
96 '(lambda* (#:key inputs dep-name patches)
97 (let ((patches-directory "patches"))
98 (mkdir-p patches-directory)
99 (invoke "tar" "-xvf" (assoc-ref inputs "jami-sources")
100 "-C" patches-directory
101 "--strip-components=5"
102 (string-append "ring-project/daemon/contrib/src/"
103 dep-name))
104 (for-each
105 (lambda (file)
106 (invoke "patch" "--force" "--ignore-whitespace" "-p1" "-i"
107 (string-append patches-directory "/"
108 file ".patch")))
109 patches))))
110
111 ;;; Jami maintains pjproject patches that add the ability to do ICE over TCP,
112 ;;; among other things. The patches are currently based on pjproject 2.10.
113 (define-public pjproject-jami
114 (package
115 (inherit pjproject)
116 (name "pjproject-jami")
117 (version "2.10")
118 (source (origin
119 (method git-fetch)
120 (uri (git-reference
121 (url "https://github.com/pjsip/pjproject")
122 (commit version)))
123 (file-name (git-file-name name version))
124 (sha256
125 (base32
126 "1aklicpgwc88578k03i5d5cm5h8mfm7hmx8vfprchbmaa2p8f4z0"))
127 (patches (search-patches
128 "pjproject-correct-the-cflags-field.patch"
129 "pjproject-fix-pkg-config-ldflags.patch"))))
130 (native-inputs
131 `(("jami-sources" ,%jami-sources)
132 ,@(package-native-inputs pjproject)))
133 (arguments
134 (substitute-keyword-arguments (package-arguments pjproject)
135 ((#:phases phases '%standard-phases)
136 `(modify-phases ,phases
137 (add-after 'make-source-files-writable 'apply-patches
138 (lambda* (#:key inputs #:allow-other-keys)
139 (,jami-apply-custom-patches
140 #:inputs inputs
141 #:dep-name "pjproject"
142 #:patches
143 '("0001-rfc6544"
144 "0002-rfc2466"
145 "0003-add-tcp-keep-alive"
146 "0004-multiple_listeners"
147 "0005-fix_ebusy_turn"
148 "0006-ignore_ipv6_on_transport_check"
149 "0007-upnp-srflx-nat-assisted-cand"
150 "0008-fix_ioqueue_ipv6_sendto"
151 "0009-add-config-site"
152 ;; Already taken care of via the origin patches.
153 ;;"0010-fix-pkgconfig"
154 "0011-fix-tcp-death-detection"
155 "0012-fix-turn-shutdown-crash"
156 "0013-Assign-unique-local-preferences-for-candidates-with-"
157 "0014-Add-new-compile-time-setting-PJ_ICE_ST_USE_TURN_PERM"
158 "0015-update-local-preference-for-peer-reflexive-candidate"
159 "0016-use-addrinfo-instead-CFHOST"
160 "0017-CVE-2020-15260"
161 "0018-CVE-2021-21375"
162 "0019-ignore-down-interfaces"))))))))))
163
164 ;; The following variables are configure flags used by ffmpeg-jami. They're
165 ;; from the ring-project/daemon/contrib/src/ffmpeg/rules.mak file. We try to
166 ;; keep it as close to the official Jami package as possible, to provide all
167 ;; the codecs and extra features that are expected.
168 ;;
169 ;; See:
170 ;; https://review.jami.net/plugins/gitiles/ring-daemon/+/refs/heads/master/contrib/src/ffmpeg/rules.mak
171
172 (define %ffmpeg-default-configure-flags
173 '("--disable-everything"
174 "--enable-zlib"
175 "--enable-gpl"
176 "--enable-swscale"
177 "--enable-bsfs"
178 "--disable-filters"
179 "--disable-programs"
180 "--disable-postproc"
181 "--disable-protocols"
182 "--enable-protocol=crypto"
183 "--enable-protocol=file"
184 "--enable-protocol=rtp"
185 "--enable-protocol=srtp"
186 "--enable-protocol=tcp"
187 "--enable-protocol=udp"
188 "--enable-protocol=unix"
189 "--enable-protocol=pipe"
190
191 ;; enable muxers/demuxers
192 "--disable-demuxers"
193 "--disable-muxers"
194 "--enable-muxer=rtp"
195 "--enable-muxer=g722"
196 "--enable-muxer=h263"
197 "--enable-muxer=h264"
198 "--enable-muxer=hevc"
199 "--enable-muxer=webm"
200 "--enable-muxer=ogg"
201 "--enable-muxer=pcm_s16be"
202 "--enable-muxer=pcm_s16le"
203 "--enable-demuxer=rtp"
204 "--enable-demuxer=mjpeg"
205 "--enable-demuxer=mjpeg_2000"
206 "--enable-demuxer=mpegvideo"
207 "--enable-demuxer=gif"
208 "--enable-demuxer=image_jpeg_pipe"
209 "--enable-demuxer=image_png_pipe"
210 "--enable-demuxer=image_webp_pipe"
211 "--enable-demuxer=matroska"
212 "--enable-demuxer=m4v"
213 "--enable-demuxer=mp3"
214 "--enable-demuxer=ogg"
215 "--enable-demuxer=flac"
216 "--enable-demuxer=wav"
217 "--enable-demuxer=ac3"
218 "--enable-demuxer=g722"
219 "--enable-demuxer=pcm_mulaw"
220 "--enable-demuxer=pcm_alaw"
221 "--enable-demuxer=pcm_s16be"
222 "--enable-demuxer=pcm_s16le"
223 "--enable-demuxer=h263"
224 "--enable-demuxer=h264"
225 "--enable-demuxer=hevc"
226
227 ;; enable parsers
228 "--enable-parser=h263"
229 "--enable-parser=h264"
230 "--enable-parser=hevc"
231 "--enable-parser=mpeg4video"
232 "--enable-parser=vp8"
233 "--enable-parser=vp9"
234 "--enable-parser=opus"
235
236 ;; encoders/decoders
237 "--enable-encoder=adpcm_g722"
238 "--enable-decoder=adpcm_g722"
239 "--enable-encoder=rawvideo"
240 "--enable-decoder=rawvideo"
241 "--enable-encoder=libx264"
242 "--enable-decoder=h264"
243 "--enable-encoder=pcm_alaw"
244 "--enable-decoder=pcm_alaw"
245 "--enable-encoder=pcm_mulaw"
246 "--enable-decoder=pcm_mulaw"
247 "--enable-encoder=mpeg4"
248 "--enable-decoder=mpeg4"
249 "--enable-encoder=libvpx_vp8"
250 "--enable-decoder=vp8"
251 "--enable-decoder=vp9"
252 "--enable-encoder=h263"
253 "--enable-encoder=h263p"
254 "--enable-decoder=h263"
255 "--enable-encoder=mjpeg"
256 "--enable-decoder=mjpeg"
257 "--enable-decoder=mjpegb"
258 "--enable-libspeex"
259 "--enable-libopus"
260 "--enable-libvpx"
261 "--enable-libx264"
262 "--enable-encoder=libspeex"
263 "--enable-decoder=libspeex"
264 "--enable-encoder=libopus"
265 "--enable-decoder=libopus"
266
267 ;; decoders for ringtones and audio streaming
268 "--enable-decoder=flac"
269 "--enable-decoder=vorbis"
270 "--enable-decoder=aac"
271 "--enable-decoder=ac3"
272 "--enable-decoder=eac3"
273 "--enable-decoder=mp3"
274 "--enable-decoder=pcm_u24be"
275 "--enable-decoder=pcm_u24le"
276 "--enable-decoder=pcm_u32be"
277 "--enable-decoder=pcm_u32le"
278 "--enable-decoder=pcm_u8"
279 "--enable-decoder=pcm_f16le"
280 "--enable-decoder=pcm_f24le"
281 "--enable-decoder=pcm_f32be"
282 "--enable-decoder=pcm_f32le"
283 "--enable-decoder=pcm_f64be"
284 "--enable-decoder=pcm_f64le"
285 "--enable-decoder=pcm_s16be"
286 "--enable-decoder=pcm_s16be_planar"
287 "--enable-decoder=pcm_s16le"
288 "--enable-decoder=pcm_s16le_planar"
289 "--enable-decoder=pcm_s24be"
290 "--enable-decoder=pcm_s24le"
291 "--enable-decoder=pcm_s24le_planar"
292 "--enable-decoder=pcm_s32be"
293 "--enable-decoder=pcm_s32le"
294 "--enable-decoder=pcm_s32le_planar"
295 "--enable-decoder=pcm_s64be"
296 "--enable-decoder=pcm_s64le"
297 "--enable-decoder=pcm_s8"
298 "--enable-decoder=pcm_s8_planar"
299 "--enable-decoder=pcm_u16be"
300 "--enable-decoder=pcm_u16le"
301
302 ;; encoders/decoders for images
303 "--enable-encoder=gif"
304 "--enable-decoder=gif"
305 "--enable-encoder=jpegls"
306 "--enable-decoder=jpegls"
307 "--enable-encoder=ljpeg"
308 "--enable-decoder=jpeg2000"
309 "--enable-encoder=png"
310 "--enable-decoder=png"
311 "--enable-encoder=bmp"
312 "--enable-decoder=bmp"
313 "--enable-encoder=tiff"
314 "--enable-decoder=tiff"
315
316 ;; filters
317 "--enable-filter=scale"
318 "--enable-filter=overlay"
319 "--enable-filter=amix"
320 "--enable-filter=amerge"
321 "--enable-filter=aresample"
322 "--enable-filter=format"
323 "--enable-filter=aformat"
324 "--enable-filter=fps"
325 "--enable-filter=transpose"
326 "--enable-filter=pad"))
327
328 (define %ffmpeg-linux-configure-flags
329 '("--enable-pic"
330 "--extra-cxxflags=-fPIC"
331 "--extra-cflags=-fPIC"
332 "--target-os=linux"
333 "--enable-indev=v4l2"
334 "--enable-indev=xcbgrab"
335 "--enable-vdpau"
336 "--enable-hwaccel=h264_vdpau"
337 "--enable-hwaccel=mpeg4_vdpau"
338 "--enable-vaapi"
339 "--enable-hwaccel=h264_vaapi"
340 "--enable-hwaccel=mpeg4_vaapi"
341 "--enable-hwaccel=h263_vaapi"
342 "--enable-hwaccel=vp8_vaapi"
343 "--enable-hwaccel=mjpeg_vaapi"
344 "--enable-hwaccel=hevc_vaapi"
345 "--enable-encoder=h264_vaapi"
346 "--enable-encoder=vp8_vaapi"
347 "--enable-encoder=mjpeg_vaapi"
348 "--enable-encoder=hevc_vaapi"))
349
350 ;; ffnvcodec is not supported on ARM then we enable it here for i386 and
351 ;; x86_64 architectures.
352 (define %ffmpeg-linux-x86-configure-flags
353 '("--arch=x86"
354 "--enable-cuvid"
355 "--enable-ffnvcodec"
356 "--enable-nvdec"
357 "--enable-nvenc"
358 "--enable-hwaccel=h264_nvdec"
359 "--enable-hwaccel=hevc_nvdec"
360 "--enable-hwaccel=vp8_nvdec"
361 "--enable-hwaccel=mjpeg_nvdec"
362 "--enable-encoder=h264_nvenc"
363 "--enable-encoder=hevc_nvenc"))
364
365 ;; This procedure composes the configure flags list for ffmpeg-jami.
366 (define (ffmpeg-compose-configure-flags)
367 (define (system=? s)
368 (string-prefix? s (%current-system)))
369
370 `(,@%ffmpeg-default-configure-flags
371 ,@(if (string-contains (%current-system) "linux")
372 (if (or (system=? "i686")
373 (system=? "x86_64"))
374 (append %ffmpeg-linux-configure-flags
375 %ffmpeg-linux-x86-configure-flags)
376 %ffmpeg-linux-configure-flags)
377 '())))
378
379 (define-public ffmpeg-jami
380 (package/inherit ffmpeg
381 (name "ffmpeg-jami")
382 (native-inputs
383 `(("jami-sources" ,%jami-sources)
384 ("libiconv" ,libiconv)
385 ,@(package-native-inputs ffmpeg)))
386 (supported-systems '("x86_64-linux" "i686-linux"
387 "aarch64-linux" "armhf-linux"))
388 (arguments
389 (append
390 '(#:tests? #f)
391 (substitute-keyword-arguments (package-arguments ffmpeg)
392 ((#:configure-flags '())
393 (ffmpeg-compose-configure-flags))
394 ((#:phases phases)
395 `(modify-phases ,phases
396 (add-after 'unpack 'make-git-checkout-writable
397 (lambda _
398 (for-each make-file-writable (find-files "."))))
399 (add-after 'unpack 'apply-patches
400 (lambda* (#:key inputs #:allow-other-keys)
401 ;; These patches come from:
402 ;; "ring-project/daemon/contrib/src/ffmpeg/rules.mak".
403 (,jami-apply-custom-patches
404 #:inputs inputs #:dep-name "ffmpeg"
405 #:patches '("remove-mjpeg-log"
406 "change-RTCP-ratio"
407 "rtp_ext_abs_send_time"
408 "libopusdec-enable-FEC"
409 "libopusenc-enable-FEC")))))))))))
410
411 (define-public libring
412 (package
413 (name "libring")
414 (version %jami-version)
415 (source %jami-sources)
416 (build-system gnu-build-system)
417 (outputs '("out" "debug"))
418 (inputs
419 `(("alsa-lib" ,alsa-lib)
420 ("asio" ,asio)
421 ("dbus-c++" ,dbus-c++)
422 ("eudev" ,eudev)
423 ("ffmpeg" ,ffmpeg-jami)
424 ("jack" ,jack-1)
425 ("jsoncpp" ,jsoncpp)
426 ("libarchive" ,libarchive)
427 ("libgit2" ,libgit2)
428 ("libnatpmp" ,libnatpmp)
429 ("libsecp256k1" ,libsecp256k1)
430 ("libupnp" ,libupnp)
431 ("opendht" ,opendht)
432 ("openssl" ,openssl)
433 ("pjproject" ,pjproject-jami)
434 ("pulseaudio" ,pulseaudio)
435 ("speex" ,speex)
436 ("speexdsp" ,speexdsp)
437 ("webrtc-audio-processing" ,webrtc-audio-processing)
438 ("yaml-cpp" ,yaml-cpp)))
439 (native-inputs
440 `(("autoconf" ,autoconf)
441 ("automake" ,automake)
442 ("gcc" ,gcc-8) ;charconv requires GCC 8.1+
443 ("libtool" ,libtool)
444 ("perl" ,perl) ;to generate manpages with pod2man
445 ("pkg-config" ,pkg-config)
446 ("which" ,which)))
447 (arguments
448 `(#:tests? #f ; The tests fail to compile due to missing headers.
449 #:make-flags '("V=1") ;build verbosely
450 #:phases
451 (modify-phases %standard-phases
452 (add-after 'unpack 'change-directory
453 (lambda _
454 (chdir "daemon")))
455 (add-before 'build 'add-lib-dir
456 (lambda _
457 (mkdir-p "src/lib"))))))
458 (synopsis "Jami core library and daemon")
459 (description "This package provides a library and daemon implementing the
460 Jami core functionality. Jami is a secure and distributed voice, video and
461 chat communication platform that requires no centralized server and leaves the
462 power of privacy in the hands of the user. It supports the SIP and IAX
463 protocols, as well as decentralized calling using P2P-DHT.")
464 (home-page "https://jami.net/")
465 (license license:gpl3+)))
466
467 (define-public libringclient
468 (package
469 (name "libringclient")
470 (version %jami-version)
471 (source %jami-sources)
472 (build-system cmake-build-system)
473 (outputs '("out" "debug"))
474 (inputs
475 `(("libring" ,libring)
476 ("network-manager" ,network-manager)))
477 (propagated-inputs
478 `(("qtbase" ,qtbase-5))) ; Qt is included in several installed headers.
479 (arguments
480 `(#:tests? #f ; There is no testsuite.
481 #:configure-flags
482 (let ((libring (assoc-ref %build-inputs "libring")))
483 (list (string-append "-DRING_XML_INTERFACES_DIR="
484 libring "/share/dbus-1/interfaces")
485 (string-append "-DRING_BUILD_DIR=" libring "/include")
486 ;; Use LIBWRAP, which removes the requirement on DBus. Qt
487 ;; links with the dbus library in Guix, which expects to find
488 ;; its configuration under /etc rather than /usr/share/dbus-1,
489 ;; which is perhaps the reason the auto-launching of dring
490 ;; doesn't work on foreign distributions.
491
492 ;; FIXME: Disabled for now, as it causes a segfault when
493 ;; attempting video calls (see:
494 ;; https://git.jami.net/savoirfairelinux/ring-lrc/-/issues/466).
495 "-DENABLE_LIBWRAP=false"))
496 #:phases
497 (modify-phases %standard-phases
498 (add-after 'unpack 'change-directory
499 (lambda _
500 (chdir "lrc"))))))
501 (synopsis "Jami client library")
502 (description "This package provides a library common to all Jami clients.
503 Jami is a secure and distributed voice, video and chat communication platform
504 that requires no centralized server and leaves the power of privacy in the
505 hands of the user. It supports the SIP and IAX protocols, as well as
506 decentralized calling using P2P-DHT.")
507 (home-page "https://jami.net")
508 (license license:gpl3+)))
509
510 (define-public jami-gnome
511 (package
512 (name "jami-gnome")
513 (version %jami-version)
514 (source %jami-sources)
515 (build-system cmake-build-system)
516 (outputs '("out" "debug"))
517 (inputs
518 `(("clutter" ,clutter)
519 ("clutter-gtk" ,clutter-gtk)
520 ("gtk+" ,gtk+)
521 ("libcanberra" ,libcanberra)
522 ("libappindicator" ,libappindicator)
523 ("libnotify" ,libnotify)
524 ("libringclient" ,libringclient)
525 ("network-manager" ,network-manager)
526 ("qrencode" ,qrencode)
527 ("sqlite" ,sqlite)
528 ("webkitgtk" ,webkitgtk)))
529 (native-inputs
530 `(("pkg-config" ,pkg-config)
531 ("gettext" ,gettext-minimal)
532 ("glib:bin" ,glib "bin"))) ;for glib-compile-resources
533 (propagated-inputs
534 `(("libring" ,libring) ; Contains 'dring', the daemon, which is
535 ; automatically started by DBus.
536 ("adwaita-icon-theme" ,adwaita-icon-theme)))
537 (arguments
538 `(#:tests? #f ;no test suite
539 #:imported-modules (,@%cmake-build-system-modules
540 (guix build glib-or-gtk-build-system))
541 #:modules ((guix build cmake-build-system)
542 ((guix build glib-or-gtk-build-system) #:prefix gtk:)
543 (guix build utils))
544 #:phases
545 (modify-phases %standard-phases
546 (add-after 'unpack 'change-directory
547 (lambda _
548 (chdir "client-gnome")))
549 (add-after 'install 'glib-or-gtk-compile-schemas
550 (assoc-ref gtk:%standard-phases 'glib-or-gtk-compile-schemas))
551 (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
552 (assoc-ref gtk:%standard-phases 'glib-or-gtk-wrap)))))
553 (synopsis "Jami client for GNOME")
554 (description "This package provides a Jami client for the GNOME desktop.
555 Jami is a secure and distributed voice, video and chat communication platform
556 that requires no centralized server and leaves the power of privacy in the
557 hands of the user. It supports the SIP and IAX protocols, as well as
558 decentralized calling using P2P-DHT.")
559 (home-page "https://jami.net")
560 (license license:gpl3+)))
561
562 ;;; Keep this until the Qt client matures enough to become the
563 ;;; main 'jami' client.
564 (define-public jami
565 (deprecated-package "jami" jami-gnome))
566
567 (define-public jami-qt
568 (package
569 (name "jami-qt") ;to be renamed 'jami' at some point
570 (version %jami-version)
571 (source %jami-sources)
572 (build-system qt-build-system)
573 (outputs '("out" "debug"))
574 (arguments
575 `(#:tests? #f ;no test suite
576 #:phases
577 (modify-phases %standard-phases
578 (add-after 'unpack 'change-directory
579 (lambda _
580 (chdir "client-qt"))))))
581 (native-inputs
582 `(("pkg-config" ,pkg-config)
583 ("qttools" ,qttools)
584 ("doxygen" ,doxygen)
585 ("graphviz" ,graphviz)))
586 (inputs
587 `(("libringclient" ,libringclient)
588 ("network-manager" ,network-manager)
589 ("qrencode" ,qrencode)
590 ("qtsvg" ,qtsvg)
591 ("qtwebengine" ,qtwebengine)
592 ("qtwebchannel" ,qtwebchannel)
593 ("qtmultimedia" ,qtmultimedia)
594 ("qtdeclarative" ,qtdeclarative)
595 ("qtgraphicaleffects" ,qtgraphicaleffects)
596 ("qtquickcontrols" ,qtquickcontrols)
597 ("qtquickcontrols2" ,qtquickcontrols2)))
598 (propagated-inputs
599 `(("libring" ,libring))) ;for dring
600 (home-page "https://jami.net")
601 (synopsis "Qt Jami client")
602 (description "This package provides the Jami Qt client. Jami is a secure
603 and distributed voice, video and chat communication platform that requires no
604 centralized server and leaves the power of privacy in the hands of the user.
605 It supports the SIP and IAX protocols, as well as decentralized calling using
606 P2P-DHT.")
607 (license license:gpl3+)))