1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
3 ;;; Copyright © 2014, 2017 Julien Lepiller <julien@lepiller.eu>
4 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
5 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
6 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
7 ;;; Copyright © 2015, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
8 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
9 ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
10 ;;; Copyright © 2016, 2017, 2018, 2019 Clément Lassieur <clement@lassieur.org>
11 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
12 ;;; Copyright © 2017, 2018, 2020 Arun Isaac <arunisaac@systemreboot.net>
13 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
14 ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
15 ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
16 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
17 ;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
18 ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
19 ;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
20 ;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
21 ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
22 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
23 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
24 ;;; Copyright © 2020 Reza Alizadeh Majd <r.majd@pantherx.org>
25 ;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
26 ;;; Copyright © 2020 Mason Hock <chaosmonk@riseup.net>
27 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
28 ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
30 ;;; This file is part of GNU Guix.
32 ;;; GNU Guix is free software; you can redistribute it and/or modify it
33 ;;; under the terms of the GNU General Public License as published by
34 ;;; the Free Software Foundation; either version 3 of the License, or (at
35 ;;; your option) any later version.
37 ;;; GNU Guix is distributed in the hope that it will be useful, but
38 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
39 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
40 ;;; GNU General Public License for more details.
42 ;;; You should have received a copy of the GNU General Public License
43 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
45 (define-module (gnu packages messaging)
46 #:use-module (gnu packages)
47 #:use-module (gnu packages admin)
48 #:use-module (gnu packages aidc)
49 #:use-module (gnu packages aspell)
50 #:use-module (gnu packages audio)
51 #:use-module (gnu packages autotools)
52 #:use-module (gnu packages avahi)
53 #:use-module (gnu packages base)
54 #:use-module (gnu packages bash)
55 #:use-module (gnu packages bison)
56 #:use-module (gnu packages boost)
57 #:use-module (gnu packages check)
58 #:use-module (gnu packages compression)
59 #:use-module (gnu packages cpp)
60 #:use-module (gnu packages crypto)
61 #:use-module (gnu packages curl)
62 #:use-module (gnu packages cyrus-sasl)
63 #:use-module (gnu packages databases)
64 #:use-module (gnu packages documentation)
65 #:use-module (gnu packages enchant)
66 #:use-module (gnu packages fontutils)
67 #:use-module (gnu packages freedesktop)
68 #:use-module (gnu packages gettext)
69 #:use-module (gnu packages glib)
70 #:use-module (gnu packages gnome)
71 #:use-module (gnu packages gnupg)
72 #:use-module (gnu packages gperf)
73 #:use-module (gnu packages gtk)
74 #:use-module (gnu packages guile)
75 #:use-module (gnu packages icu4c)
76 #:use-module (gnu packages image)
77 #:use-module (gnu packages less)
78 #:use-module (gnu packages libcanberra)
79 #:use-module (gnu packages libidn)
80 #:use-module (gnu packages linux)
81 #:use-module (gnu packages logging)
82 #:use-module (gnu packages lua)
83 #:use-module (gnu packages man)
84 #:use-module (gnu packages markup)
85 #:use-module (gnu packages mpd)
86 #:use-module (gnu packages ncurses)
87 #:use-module (gnu packages networking)
88 #:use-module (gnu packages pcre)
89 #:use-module (gnu packages perl)
90 #:use-module (gnu packages photo)
91 #:use-module (gnu packages php)
92 #:use-module (gnu packages pkg-config)
93 #:use-module (gnu packages protobuf)
94 #:use-module (gnu packages python)
95 #:use-module (gnu packages python-crypto)
96 #:use-module (gnu packages python-web)
97 #:use-module (gnu packages python-xyz)
98 #:use-module (gnu packages qt)
99 #:use-module (gnu packages readline)
100 #:use-module (gnu packages sphinx)
101 #:use-module (gnu packages sqlite)
102 #:use-module (gnu packages tcl)
103 #:use-module (gnu packages texinfo)
104 #:use-module (gnu packages textutils)
105 #:use-module (gnu packages tls)
106 #:use-module (gnu packages video)
107 #:use-module (gnu packages web)
108 #:use-module (gnu packages xdisorg)
109 #:use-module (gnu packages xiph)
110 #:use-module (gnu packages xml)
111 #:use-module (gnu packages xorg)
112 #:use-module (guix build-system cmake)
113 #:use-module (guix build-system glib-or-gtk)
114 #:use-module (guix build-system gnu)
115 #:use-module (guix build-system meson)
116 #:use-module (guix build-system perl)
117 #:use-module (guix build-system python)
118 #:use-module (guix build-system qt)
119 #:use-module (guix build-system trivial)
120 #:use-module (guix download)
121 #:use-module (guix git-download)
122 #:use-module (guix hg-download)
123 #:use-module ((guix licenses) #:prefix license:)
124 #:use-module (guix packages)
125 #:use-module (guix utils))
127 (define-public poezio
136 (url "https://lab.louiz.org/poezio/poezio.git")
138 (string-append "v" version))))
140 (git-file-name name version))
142 (base32 "041y61pcbdb86s04qwp8s1g6bp84yskc7vdizwpi2hz18y01x5fy"))))
143 (build-system python-build-system)
146 (modify-phases %standard-phases
147 (add-after 'unpack 'patch
149 (substitute* "setup.py"
154 `(("pkg-config" ,pkg-config)
155 ("python-setuptools" ,python-setuptools)
156 ("python-sphinx" ,python-sphinx)))
158 `(("python-mpd2" ,python-mpd2)
159 ("python-potr" ,python-potr)
160 ("python-pyasn1" ,python-pyasn1)
161 ("python-pyasn1-modules" ,python-pyasn1-modules)
162 ("python-pygments" ,python-pygments)
163 ("python-pyinotify" ,python-pyinotify)
165 ("python-qrcode" ,python-qrcode)
166 ("python-slixmpp" ,python-slixmpp)))
167 (synopsis "Console Jabber/XMPP Client")
168 (description "Poezio is a free console XMPP client (the protocol on which
169 the Jabber IM network is built).
170 Its goal is to let you connect very easily (no account creation needed) to the
171 network and join various chatrooms, immediately. It tries to look like the
172 most famous IRC clients (weechat, irssi, etc). Many commands are identical and
173 you won't be lost if you already know these clients. Configuration can be
174 made in a configuration file or directly from the client.
175 You'll find the light, fast, geeky and anonymous spirit of IRC while using a
176 powerful, standard and open protocol.")
177 (home-page "https://poez.io/en/")
178 (license license:zlib)))
180 (define-public libotr
186 (uri (string-append "https://otr.cypherpunks.ca/libotr-"
190 "1x8rliydhbibmzwdbyr7pd7n87m2jmxnqkpvaalnf4154hj1hfwb"))
191 (patches (search-patches "libotr-test-auth-fix.patch"))))
192 (build-system gnu-build-system)
194 `(("libgcrypt" ,libgcrypt))) ; libotr headers include gcrypt.h
195 (inputs `(("libgpg-error" ,libgpg-error)))
196 (native-inputs `(("perl" ,perl))) ; for the test suite
197 (synopsis "Off-the-Record (OTR) Messaging Library and Toolkit")
199 "OTR allows you to have private conversations over instant messaging by
200 providing: (1) Encryption: No one else can read your instant messages. (2)
201 Authentication: You are assured the correspondent is who you think it is. (3)
202 Deniability: The messages you send do not have digital signatures that are
203 checkable by a third party. Anyone can forge messages after a conversation to
204 make them look like they came from you. However, during a conversation, your
205 correspondent is assured the messages he sees are authentic and
206 unmodified. (4) Perfect forward secrecy: If you lose control of your private
207 keys, no previous conversation is compromised.")
208 (home-page "https://otr.cypherpunks.ca/")
209 (license (list license:lgpl2.1 license:gpl2))))
211 (define-public libsignal-protocol-c
213 (name "libsignal-protocol-c")
218 (url "https://github.com/WhisperSystems/libsignal-protocol-c")
219 (commit (string-append "v" version))))
220 (file-name (git-file-name name version))
223 "1qj2w4csy6j9jg1jy66n1qwysx7hgjywk4n35hlqcnh1kpa14k3p"))))
225 `(;; Required for proper linking and for tests to run.
226 #:configure-flags '("-DBUILD_SHARED_LIBS=on" "-DBUILD_TESTING=1")))
227 (build-system cmake-build-system)
228 (inputs `( ;; Required for tests:
230 ("openssl" ,openssl)))
231 (native-inputs `(("pkg-config" ,pkg-config)))
232 (home-page "https://github.com/WhisperSystems/libsignal-protocol-c")
233 (synopsis "Implementation of a ratcheting forward secrecy protocol")
234 (description "libsignal-protocol-c is an implementation of a ratcheting
235 forward secrecy protocol that works in synchronous and asynchronous
236 messaging environments. It can be used with messaging software to provide
237 end-to-end encryption.")
238 (license license:gpl3+)))
240 (define-public bitlbee
246 (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
249 (base32 "0zhhcbcr59sx9h4maf8zamzv2waya7sbsl7w74gbyilvy93dw5cz"))))
250 (build-system gnu-build-system)
251 (native-inputs `(("pkg-config" ,pkg-config)
252 ;; Note: Change to 'check' for versions > 3.6.
253 ("check" ,check-0.12)))
254 (inputs `(("glib" ,glib)
261 (modify-phases %standard-phases
262 (add-before 'configure 'set-python
263 (lambda _ (setenv "PYTHON" (which "python3")) #t))
264 (add-after 'install 'install-etc
265 (lambda* (#:key (make-flags '()) #:allow-other-keys)
266 (apply invoke "make" "install-etc" make-flags)))
267 (add-after 'install-etc 'install-lib
268 (lambda* (#:key (make-flags '()) #:allow-other-keys)
269 (apply invoke "make" "install-dev" make-flags)))
271 ;; bitlbee's configure script does not tolerate many of the
272 ;; variable settings that Guix would pass to it.
273 (lambda* (#:key outputs #:allow-other-keys)
274 (invoke "./configure"
275 (string-append "--prefix="
276 (assoc-ref outputs "out"))
278 (synopsis "IRC to instant messaging gateway")
279 (description "BitlBee brings IM (instant messaging) to IRC clients, for
280 people who have an IRC client running all the time and don't want to run an
281 additional IM client. BitlBee currently supports XMPP/Jabber (including
282 Google Talk), MSN Messenger, Yahoo! Messenger, AIM and ICQ, and the Twitter
283 microblogging network (plus all other Twitter API compatible services like
284 identi.ca and status.net).")
285 (home-page "https://www.bitlbee.org/")
286 (license (list license:gpl2+ license:bsd-2))))
288 (define-public bitlbee-purple
289 ;; This variant uses libpurple, which provides support for more protocols at
290 ;; the expense of a much bigger closure.
291 (package/inherit bitlbee
292 (name "bitlbee-purple")
293 (synopsis "IRC to instant messaging gateway (using Pidgin's libpurple)")
294 (inputs `(("purple" ,pidgin)
295 ,@(package-inputs bitlbee)))
297 (substitute-keyword-arguments (package-arguments bitlbee)
298 ((#:phases phases '%standard-phases)
299 `(modify-phases ,phases
300 (replace 'configure ;add "--purple=1"
301 (lambda* (#:key outputs #:allow-other-keys)
302 (invoke "./configure"
303 (string-append "--prefix="
304 (assoc-ref outputs "out"))
305 "--otr=1" "--purple=1")))))
307 ;; XXX: Tests fail to link, and ./configure says that it's "supported
308 ;; on a best-effort basis" anyway.
311 (define-public bitlbee-discord
313 (name "bitlbee-discord")
319 (url "https://github.com/sm00th/bitlbee-discord")
321 (file-name (git-file-name name version))
323 (base32 "02pigk2vbz0jdz11f96sygdvp1j762yjn62h124fkcsc070g7a2f"))))
324 (build-system gnu-build-system)
327 (modify-phases %standard-phases
328 (add-after 'unpack 'patch-autogen
330 (let ((sh (which "sh")))
331 (substitute* "autogen.sh" (("/bin/sh") sh))
332 (setenv "CONFIG_SHELL" sh))
335 (lambda* (#:key inputs outputs #:allow-other-keys)
336 (invoke "./configure"
337 (string-append "--with-plugindir="
338 (assoc-ref outputs "out")
339 "/lib/bitlbee/")))))))
340 (inputs `(("glib" ,glib)))
341 (native-inputs `(("pkg-config" ,pkg-config)
342 ("autoconf" ,autoconf)
343 ("automake" ,automake)
346 ("bitlbee" ,bitlbee) ; needs bitlbee headers
348 (synopsis "Discord plugin for Bitlbee")
349 (description "Bitlbee-discord is a plugin for Bitlbee which provides
350 access to servers running the Discord protocol.")
351 (home-page "https://github.com/sm00th/bitlbee-discord/")
352 (license license:gpl2+)))
354 (define-public purple-mattermost
355 ;; The latest release (1.2) only supports Mattermost's /api/v3. Choose a
356 ;; commit that supports /api/v4.
357 (let ((commit "158ce2052af9aaf3d1f6f045f0cfba276e0e91cf")
360 (name "purple-mattermost")
361 (version (git-version "1.2" revision commit))
362 (home-page "https://github.com/EionRobb/purple-mattermost")
365 (uri (git-reference (url home-page)
367 (file-name (git-file-name name version))
370 "1481zm20pnfq52ncg7hxayjq8cw3a6yh9m4jm1m5s8chsq04015l"))))
371 (build-system gnu-build-system)
373 `(#:phases (modify-phases %standard-phases
375 (lambda* (#:key inputs outputs #:allow-other-keys)
376 ;; Adjust the makefile to install files in the right
378 (let ((out (assoc-ref outputs "out")))
379 (substitute* "Makefile"
380 (("MATTERMOST_DEST = .*")
381 (string-append "MATTERMOST_DEST = " out
382 "/lib/purple-2\n")) ;XXX: hardcoded
383 (("MATTERMOST_ICONS_DEST = .*")
384 (string-append "MATTERMOST_ICONS_DEST = "
386 "/share/pixmaps/pidgin/protocols\n")))
388 #:make-flags (list "CC=gcc"
389 ,(string-append "PLUGIN_VERSION=" version))
391 (inputs `(("glib" ,glib)
392 ("json-glib" ,json-glib)
393 ("discount" ,discount)
395 (native-inputs `(("pkg-config" ,pkg-config)))
396 (synopsis "Purple plug-in to access Mattermost instant messaging")
398 "Purple-Mattermost is a plug-in for Purple, the instant messaging library
399 used by Pidgin and Bitlbee, among others, to access
400 @uref{https://mattermost.com/, Mattermost} servers.")
401 (license license:gpl3+))))
403 (define-public hexchat
409 (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
413 "10p829jm1r6kidkgf5lhqhyqc5mxdcq96q3zhadsckasvc9rs6lh"))))
414 (build-system meson-build-system)
415 (native-inputs `(("gettext" ,gettext-minimal)
416 ("glib:bin" ,glib "bin") ;need glib-genmarshal
418 ("pkg-config" ,pkg-config)))
419 (inputs `(("dbus-glib" ,dbus-glib)
423 ("libcanberra" ,libcanberra)
424 ("libnotify" ,libnotify)
425 ("libproxy" ,libproxy)
428 ;; Bindings for add-on scripts.
430 ("perl-xml-parser" ,perl-xml-parser)
431 ("python-2" ,python-2)))
434 (modify-phases %standard-phases
435 (add-after 'unpack 'skip-desktop-database-updates
437 ;; The build scripts update icon and desktop file databases when
438 ;; DESTDIR is not set. We can't update these databases from
439 ;; within the build chroot, but we also don't set DESTDIR. So, we
440 ;; just skip this code.
441 (substitute* "meson_post_install.py"
442 (("if 'DESTDIR' not in os.environ:")
445 (synopsis "Graphical IRC client")
447 "HexChat lets you connect to multiple IRC networks at once. The main
448 window shows the list of currently connected networks and their channels, the
449 current conversation and the list of users. It uses colors to differentiate
450 between users and to highlight messages. It checks spelling using available
451 dictionaries. HexChat can be extended with multiple addons.")
452 (home-page "https://hexchat.net/")
453 (license license:gpl2+)))
455 (define-public ngircd
461 (uri (string-append "https://arthur.barton.de/pub/ngircd/ngircd-"
465 "1ijmv18fa648y7apxb9vp4j9iq6fxq850kz5v36rysaq614cdp2n"))
466 (patches (search-patches "ngircd-handle-zombies.patch"))))
467 (build-system gnu-build-system)
468 ;; Needed for the test suite.
469 (native-inputs `(("procps" ,procps)
471 ("inetutils" ,inetutils)
472 ("openssl" ,openssl)))
474 (inputs `(("zlib" ,zlib)
475 ("libwrap" ,tcp-wrappers)
477 ,@(if (string-suffix? "-linux"
478 (or (%current-target-system)
480 `(("linux-pam" ,linux-pam))
484 '("--with-gnutls" "--with-iconv" "--enable-ipv6" "--with-tcp-wrappers"
485 ,@(if (string-suffix? "-linux"
486 (or (%current-target-system)
491 (modify-phases %standard-phases
492 ;; Necessary for the test suite.
493 (add-after 'configure 'post-configure
495 (substitute* "src/ngircd/Makefile"
496 (("/bin/sh") (which "sh")))
497 ;; The default getpid.sh does a sloppy grep over 'ps -ax' output,
498 ;; which fails arbitrarily.
499 (with-output-to-file "src/testsuite/getpid.sh"
503 "#!" (which "sh") "\n"
504 "ps -C \"$1\" -o pid=\n"))))
505 ;; Our variant of getpid.sh does not match interpreter names
506 ;; when the script's shebang is invoked directly as "./foo".
507 ;; Patch cases where the test suite relies on this.
508 (substitute* "src/testsuite/start-server.sh"
509 ;; It runs 'getpid.sh sh' to test if it works at all. Run it on
511 (("getpid.sh sh") "getpid.sh make")))))))
512 (home-page "https://ngircd.barton.de/")
513 (synopsis "Lightweight Internet Relay Chat server for small networks")
515 "ngIRCd is a lightweight @dfn{Internet Relay Chat} (IRC) server for small
516 or private networks. It is easy to configure, can cope with dynamic IP
517 addresses, and supports IPv6, SSL-protected connections, as well as PAM for
519 (license license:gpl2+)))
521 (define-public pidgin
528 (uri (string-append "mirror://sourceforge/pidgin/Pidgin/"
529 version "/pidgin-" version ".tar.bz2"))
531 (base32 "13vdqj70315p9rzgnbxjp9c51mdzf1l4jg1kvnylc4bidw61air7"))
532 (patches (search-patches "pidgin-add-search-path.patch"
533 ;; Remove the snippet and bootstrapping
534 ;; native-inputs together with this patch.
535 "pidgin-libnm.patch"))
536 (modules '((guix build utils)))
539 ;; Remove stale generated file after applying pidgin-libnm.patch.
540 (delete-file "configure")
542 (build-system glib-or-gtk-build-system)
544 `(("pkg-config" ,pkg-config)
546 ("intltool" ,intltool)
551 ;; For bootstrapping after applying pidgin-libnm.patch.
552 ("autoconf" ,autoconf)
553 ("automake" ,automake)
554 ("libtool" ,libtool)))
557 ("libgcrypt" ,libgcrypt)
559 ("cyrus-sasl" ,cyrus-sasl)
561 ("dbus-glib" ,dbus-glib)
562 ("python2-dbus" ,python2-dbus)
566 ;; TODO: gstreamer: patches needed to support gstreamer-1.0 or later
575 ("network-manager" ,network-manager)
579 ("libxscrnsaver" ,libxscrnsaver)
580 ("startup-notification" ,startup-notification)))
583 (list "--disable-gtkspell"
585 "--disable-meanwhile"
586 "--disable-vv" ; XXX remove when we have farstream and gstreamer
587 "--disable-gstreamer" ; XXX patches needed to support gstreamer-1.0
588 "--enable-cyrus-sasl"
589 (string-append "--with-ncurses-headers="
590 (assoc-ref %build-inputs "ncurses")
593 (list (search-path-specification
594 (variable "PURPLE_PLUGIN_PATH")
595 (files (list (string-append "lib/purple-"
596 (version-major version))
598 (home-page "https://www.pidgin.im/")
599 (synopsis "Graphical multi-protocol instant messaging client")
601 "Pidgin is a modular instant messaging client that supports many popular
605 license:gpl2+ ; Most of the code
606 license:lgpl2.1 ; GG protocol plugin (libpurple/protocols/gg/lib)
607 license:lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
608 ;; The following licenses cover the zephyr protocol plugin:
609 (license:non-copyleft
610 "file://libpurple/protocols/zephyr/mit-copyright.h"
611 "See libpurple/protocols/zephyr/mit-copyright.h in the distribution.")
612 (license:non-copyleft
613 "file://libpurple/protocols/zephyr/mit-sipb-copyright.h"
614 "See libpurple/protocols/zephyr/mit-sipb-copyright.h in the distribution.")))))
616 (define-public pidgin-otr
622 (uri (string-append "https://otr.cypherpunks.ca/"
623 name "-" version ".tar.gz"))
626 "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl"))))
627 (build-system gnu-build-system)
629 `(("pkg-config" ,pkg-config)
630 ("intltool" ,intltool)))
634 ("libgpg-error" ,libgpg-error)
635 ("libgcrypt" ,libgcrypt)
638 (home-page "https://otr.cypherpunks.ca/")
639 (synopsis "Off-the-Record Messaging plugin for Pidgin")
641 "Pidgin-OTR is a plugin that adds support for OTR to the Pidgin instant
642 messaging client. OTR (Off-the-Record) Messaging allows you to have private
643 conversations over instant messaging by providing: (1) Encryption: No one else
644 can read your instant messages. (2) Authentication: You are assured the
645 correspondent is who you think it is. (3) Deniability: The messages you send
646 do not have digital signatures that are checkable by a third party. Anyone
647 can forge messages after a conversation to make them look like they came from
648 you. However, during a conversation, your correspondent is assured the
649 messages he sees are authentic and unmodified. (4) Perfect forward secrecy:
650 If you lose control of your private keys, no previous conversation is
652 (license license:gpl2)))
660 (uri (string-append "https://znc.in/releases/archive/znc-"
664 "03fyi0j44zcanj1rsdx93hkdskwfvhbywjiwd17f9q1a7yp8l8zz"))))
665 (build-system cmake-build-system)
668 (list "-DWANT_CYRUS=ON"
673 (modify-phases %standard-phases
674 (add-after 'unpack 'unpack-googletest
675 ;; Copy the googletest sources to where the CMake build expects them.
676 (lambda* (#:key inputs #:allow-other-keys)
677 (let ((source (assoc-ref inputs "googletest-source"))
678 (target "third_party/googletest"))
680 (copy-recursively source target)
684 ("gettext" ,gettext-minimal)
685 ("googletest-source" ,(package-source googletest))
686 ("pkg-config" ,pkg-config)))
688 `(("cyrus-sasl" ,cyrus-sasl)
694 (home-page "https://wiki.znc.in/ZNC")
695 (synopsis "IRC network bouncer")
696 (description "ZNC is an @dfn{IRC network bouncer} or @dfn{BNC}. It can
697 detach the client from the actual IRC server, and also from selected channels.
698 Multiple clients from different locations can connect to a single ZNC account
699 simultaneously and therefore appear under the same nickname on IRC.")
700 (license license:asl2.0)))
702 (define-public python-nbxmpp
704 (name "python-nbxmpp")
710 (pypi-uri "nbxmpp" version))
712 (base32 "0vw5drr077w9ks4crnw6pwa4735ycyjdcm54knc3w4in4x5027wr"))))
713 (build-system python-build-system)
715 `(("glib:bin" ,glib "bin")))
718 ("glib-networking" ,glib-networking)
720 ("python-idna" ,python-idna)
721 ("python-precis-i18n" ,python-precis-i18n)
722 ("python-pygobject" ,python-pygobject)))
723 (synopsis "Non-blocking XMPP Module")
724 (description "Python-nbxmpp is a Python library that provides a way for
725 Python applications to use the XMPP network. This library was initially a fork
727 (home-page "https://dev.gajim.org/gajim/python-nbxmpp")
728 (license license:gpl3+)))
730 (define-public python2-nbxmpp
731 (package-with-python2 python-nbxmpp))
741 (string-append "https://gajim.org/downloads/"
742 (version-major+minor version)
743 "/gajim-" version ".tar.bz2"))
745 (base32 "0bzxwcpdd4ydh6d6mzpr0gxwhcb0x9ympk55fpvm1hcw9d28a716"))))
746 (build-system python-build-system)
749 (modify-phases %standard-phases
750 (add-after 'unpack 'add-plugin-dirs
752 (substitute* "gajim/common/configpaths.py"
753 (("_paths\\['PLUGINS_USER'\\]\\]")
754 "_paths['PLUGINS_USER']] + \
755 ([os.getenv('GAJIM_PLUGIN_PATH')] \
756 if os.getenv('GAJIM_PLUGIN_PATH') \
757 and Path(os.getenv('GAJIM_PLUGIN_PATH')).is_dir() \
762 (invoke "python" "./setup.py" "test" "-s" "test.no_gui")))
763 (add-after 'install 'wrap-gi-typelib-path
764 (lambda* (#:key outputs #:allow-other-keys)
765 (let ((out (assoc-ref outputs "out")))
768 (let ((file (string-append out "/bin/" name))
769 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
771 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
773 `("XDG_DATA_DIRS" ":" prefix
774 (,(string-append (assoc-ref outputs "out") "/share"))))))
775 '("gajim" "gajim-remote" "gajim-history-manager")))
777 (add-after 'install 'install-icons
778 (lambda* (#:key inputs outputs #:allow-other-keys)
779 (let* ((out (assoc-ref outputs "out"))
780 (adwaita (string-append
781 (assoc-ref inputs "adwaita-icon-theme")
782 "/share/icons/Adwaita"))
783 (hicolor (string-append
784 (assoc-ref inputs "hicolor-icon-theme")
785 "/share/icons/hicolor"))
786 (icons (string-append
788 ,(version-major+minor (package-version python))
789 "/site-packages/gajim/data/icons")))
790 (with-directory-excursion icons
791 (symlink adwaita "Adwaita")
792 (copy-recursively hicolor "hicolor")))
794 (add-after 'install-icons 'wrap-gsettings-schema-dir
795 (lambda* (#:key inputs outputs #:allow-other-keys)
796 (wrap-program (string-append (assoc-ref outputs "out")
798 ;; For GtkFileChooserDialog.
799 `("GSETTINGS_SCHEMA_DIR" =
800 (,(string-append (assoc-ref inputs "gtk+")
801 "/share/glib-2.0/schemas"))))
805 (search-path-specification
806 (variable "GAJIM_PLUGIN_PATH")
807 (separator #f) ;single entry
810 "share/gajim/plugins")))
811 ;; Gajim needs to use the propagated inputs of its plugins.
812 (search-path-specification
813 (variable "PYTHONPATH")
818 ;; FIXME: Cannot use this expression as it would
819 ;; introduce a circular dependency at the top level.
820 ;; (version-major+minor (package-version python))
822 "/site-packages"))))))
824 `(("intltool" ,intltool)
825 ("python-docutils" ,python-docutils)
826 ("xorg-server" ,xorg-server-for-tests)))
828 `(("adwaita-icon-theme" ,adwaita-icon-theme)
829 ("gnome-keyring" ,gnome-keyring)
831 ("gtkspell3" ,gtkspell3)
832 ("hicolor-icon-theme" ,hicolor-icon-theme)
833 ("libsecret" ,libsecret)
834 ("python-cssutils" ,python-cssutils)
835 ("python-dbus" ,python-dbus)
836 ("python-gnupg" ,python-gnupg)
837 ("python-keyring" ,python-keyring)
838 ("python-nbxmpp" ,python-nbxmpp)
839 ("python-pillow" ,python-pillow)
840 ("python-precis-i18n" ,python-precis-i18n)
841 ("python-pycairo" ,python-pycairo)
842 ("python-pygobject" ,python-pygobject)
843 ("python-pyopenssl" ,python-pyopenssl)
844 ("python-qrcode" ,python-qrcode)))
845 (synopsis "Jabber (XMPP) client")
846 (description "Gajim is a feature-rich and easy to use Jabber/XMPP client.
847 Among its features are: a tabbed chat window and single window modes; support
848 for group chat (with Multi-User Chat protocol), invitation, chat to group chat
849 transformation; audio and video conferences; file transfer; TLS, GPG and
850 end-to-end encryption support; XML console.")
851 (home-page "https://gajim.org/")
852 (license license:gpl3)))
854 (define-public gajim-omemo
859 (method url-fetch/zipbomb)
861 "https://ftp.gajim.org/plugins_releases/omemo_"
865 "17jl4blkq04ag3g0har6z1bmk36523d29s51g260wb1pywfb536h"))))
866 (build-system trivial-build-system)
868 `(#:modules ((guix build utils))
871 (use-modules (guix build utils))
872 (let* ((out (assoc-ref %outputs "out"))
873 (share (in-vicinity out "share/gajim/plugins"))
874 (source (assoc-ref %build-inputs "source")))
876 (copy-recursively source share)
879 `(("python-axolotl" ,python-axolotl)))
881 "https://dev.gajim.org/gajim/gajim-plugins/-/wikis/OmemoGajimPlugin")
882 (synopsis "Gajim OMEMO plugin")
884 "This package provides the Gajim OMEMO plugin. OMEMO is an XMPP
885 Extension Protocol (XEP) for secure multi-client end-to-end encryption based
886 on Axolotl and PEP.")
887 (license license:gpl3+)))
893 (outputs '("out" "debug"))
897 (uri (string-append "https://github.com/dino/dino/releases/download/v"
898 version "/dino-" version ".tar.gz"))
901 "0dcq2jhpywgxrp9x1qqmrl2z50hazspqj547b9zz70apy3y4418h"))))
902 (build-system cmake-build-system)
905 #:parallel-build? #f ; not supported
906 #:modules ((guix build cmake-build-system)
907 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
909 #:imported-modules (,@%gnu-build-system-modules
910 (guix build cmake-build-system)
911 (guix build glib-or-gtk-build-system))
913 (modify-phases %standard-phases
914 (add-after 'install 'glib-or-gtk-wrap
915 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
918 ("libsignal-protocol-c" ,libsignal-protocol-c)
919 ("libgcrypt" ,libgcrypt)
921 ("qrencode" ,qrencode)
925 ("glib-networking" ,glib-networking)
926 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
928 `(("pkg-config" ,pkg-config)
931 ("gettext" ,gettext-minimal)))
932 (home-page "https://dino.im")
933 (synopsis "Graphical Jabber (XMPP) client")
934 (description "Dino is a Jabber (XMPP) client which aims to fit well into
935 a graphical desktop environment like GNOME.")
936 (license license:gpl3+)))
938 (define-public prosody
944 (uri (string-append "https://prosody.im/downloads/source/"
945 "prosody-" version ".tar.gz"))
948 "11xz4milv2962qf75vrdwsvd8sy2332nf69202rmvz5989pvvnng"))))
949 (build-system gnu-build-system)
951 `(#:tests? #f ;tests require "busted"
952 #:configure-flags (list "--no-example-certs")
953 #:modules ((ice-9 match)
955 (guix build gnu-build-system)
958 (modify-phases %standard-phases
959 (add-after 'unpack 'fix-configure-script
961 ;; The configure script aborts when it encounters unexpected
962 ;; arguments. Make it more tolerant.
963 (substitute* "configure"
966 (add-after 'unpack 'fix-makefile
968 (substitute* "GNUmakefile"
969 ;; prosodyctl needs to read the configuration file.
970 (("^INSTALLEDCONFIG =.*") "INSTALLEDCONFIG = /etc/prosody\n")
971 ;; prosodyctl needs a place to put auto-generated certificates.
972 (("^INSTALLEDDATA =.*") "INSTALLEDDATA = /var/lib/prosody\n"))
974 (add-after 'install 'wrap-programs
975 (lambda* (#:key inputs outputs #:allow-other-keys)
976 ;; Make sure all executables in "bin" find the required Lua
977 ;; modules at runtime.
978 (let* ((out (assoc-ref outputs "out"))
979 (bin (string-append out "/bin/"))
980 (deps (delete #f (map (match-lambda
982 (if (string-prefix? "lua" label)
985 (lua-path (string-join
988 path "/share/lua/5.2/?.lua;"
989 path "/share/lua/5.2/?/?.lua"))
992 (lua-cpath (string-join
995 path "/lib/lua/5.2/?.so;"
996 path "/lib/lua/5.2/?/?.so"))
999 (openssl (assoc-ref inputs "openssl"))
1000 (coreutils (assoc-ref inputs "coreutils"))
1001 (path (map (lambda (dir)
1002 (string-append dir "/bin"))
1003 (list openssl coreutils))))
1004 (for-each (lambda (file)
1006 `("LUA_PATH" ";" = (,lua-path))
1007 `("LUA_CPATH" ";" = (,lua-cpath))
1008 `("PATH" ":" prefix ,path)))
1009 (find-files bin ".*"))
1012 `(("libidn" ,libidn)
1013 ("openssl" ,openssl)
1015 ("lua5.2-bitop" ,lua5.2-bitop)
1016 ("lua5.2-expat" ,lua5.2-expat)
1017 ("lua5.2-socket" ,lua5.2-socket)
1018 ("lua5.2-filesystem" ,lua5.2-filesystem)
1019 ("lua5.2-sec" ,lua5.2-sec)))
1020 (home-page "https://prosody.im/")
1021 (synopsis "Jabber (XMPP) server")
1022 (description "Prosody is a modern XMPP communication server. It aims to
1023 be easy to set up and configure, and efficient with system resources.
1024 Additionally, for developers it aims to be easy to extend and give a flexible
1025 system on which to rapidly develop added functionality, or prototype new
1027 (license license:x11)))
1029 (define-public prosody-http-upload
1030 (let ((changeset "765735bb590b")
1033 (name "prosody-http-upload")
1034 (version (string-append "0-" revision "." (string-take changeset 7)))
1038 (url "https://hg.prosody.im/prosody-modules/")
1039 (changeset changeset)))
1040 (file-name (string-append name "-" version "-checkout"))
1043 "142wrcism70nf8ffahhd961cqg2pi1h7ic8adfs3zwh0j3pnf41f"))))
1044 (build-system trivial-build-system)
1046 '(#:modules ((guix build utils))
1049 (use-modules (guix build utils))
1050 (let ((out (assoc-ref %outputs "out"))
1051 (source (assoc-ref %build-inputs "source")))
1052 (with-directory-excursion (in-vicinity source "mod_http_upload")
1053 (install-file "mod_http_upload.lua" out))
1055 (home-page "https://modules.prosody.im/mod_http_upload.html")
1056 (synopsis "XEP-0363: Allow clients to upload files over HTTP")
1057 (description "This module implements XEP-0363: it allows clients to
1058 upload files over HTTP.")
1059 (license (package-license prosody)))))
1061 (define-public prosody-smacks
1062 (let ((changeset "67f1d1f22625")
1065 (name "prosody-smacks")
1066 (version (string-append "0-" revision "." (string-take changeset 7)))
1070 (url "https://hg.prosody.im/prosody-modules/")
1071 (changeset changeset)))
1072 (file-name (string-append name "-" version "-checkout"))
1075 "020ngpax30fgarah98yvlj0ni8rcdwq60if03a9hqdw8mic0nxxs"))))
1076 (build-system trivial-build-system)
1078 '(#:modules ((guix build utils))
1081 (use-modules (guix build utils))
1082 (let ((out (assoc-ref %outputs "out"))
1083 (source (assoc-ref %build-inputs "source")))
1084 (with-directory-excursion (in-vicinity source "mod_smacks")
1085 (install-file "mod_smacks.lua" out))
1087 (home-page "https://modules.prosody.im/mod_smacks.html")
1088 (synopsis "XEP-0198: Reliability and fast reconnects for XMPP")
1089 (description "This module implements XEP-0198: when supported by both
1090 the client and server, it can allow clients to resume a disconnected session,
1091 and prevent message loss.")
1092 (license (package-license prosody)))))
1094 (define-public libtoxcore
1095 (let ((revision "2")
1096 (commit "bf69b54f64003d160d759068f4816b2d9b2e1e21"))
1099 (version (string-append "0.0.0" "-"
1100 revision "."(string-take commit 7)))
1104 (url "https://github.com/irungentoo/toxcore")
1106 (file-name (string-append name "-" version "-checkout"))
1109 "11lqra4yd7v293cp286ynff5lqz1pprzg8vn3wq6vryj08g88zqb"))))
1110 (build-system gnu-build-system)
1111 (arguments `(#:tests? #f)) ; FIXME: tests hang, some fail.
1113 `(("autoconf" ,autoconf)
1114 ("automake" ,automake)
1115 ("libtool" ,libtool)
1117 ("pkg-config" ,pkg-config)))
1119 `(("libsodium" ,libsodium)
1121 ("libvpx" ,libvpx)))
1122 (synopsis "Library for the Tox encrypted messenger protocol")
1124 "C library implementation of the Tox encrypted messenger protocol.")
1125 (license license:gpl3+)
1126 (home-page "https://tox.chat"))))
1128 ;; Some tox clients move to c-toxcore, which seems to be where all the
1129 ;; recent development happens. It is run by the same developers as toxcore,
1130 ;; forked into a group namespace.
1131 (define-public c-toxcore
1139 (url "https://github.com/TokTok/c-toxcore")
1140 (commit (string-append "v" version))))
1141 (file-name (git-file-name name version))
1144 "0a6sqpm00d2rn0nviqfz4gh9ck1wzci6rxgmqmcyryl5ca19ffvp"))))
1146 `(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable
1148 (build-system cmake-build-system)
1150 `(("pkg-config" ,pkg-config)))
1152 `(("libsodium" ,libsodium)
1154 ("libvpx" ,libvpx)))
1155 (home-page "https://tox.chat")
1156 (synopsis "Library for the Tox encrypted messenger protocol")
1158 "Official fork of the C library implementation of the Tox encrypted
1159 messenger protocol.")
1160 (license license:gpl3+)))
1170 (url "https://github.com/uTox/uTox")
1171 (commit (string-append "v" version))
1172 (recursive? #t))) ;; Needed for 'minini' git submodule.
1173 (file-name (string-append name "-" version "-checkout"))
1176 "17kwqw24iqljp2icih9k6ikx12gzr8zzqr8y5h35bg8m5s8pasq5"))))
1177 (build-system cmake-build-system)
1179 `(#:configure-flags '("-DENABLE_TESTS=on")
1181 (modify-phases %standard-phases
1182 (add-before 'build 'patch-absolute-filename-libgtk-3
1183 (lambda* (#:key inputs outputs #:allow-other-keys)
1184 (substitute* "../source/src/xlib/gtk.c"
1186 (string-append (assoc-ref inputs "gtk+")
1187 "/lib/libgtk-3.so")))))
1188 (add-after 'install 'wrap-program
1189 (lambda* (#:key inputs outputs #:allow-other-keys)
1190 (wrap-program (string-append (assoc-ref outputs "out")
1192 ;; For GtkFileChooserDialog.
1193 `("GSETTINGS_SCHEMA_DIR" =
1194 (,(string-append (assoc-ref inputs "gtk+")
1195 "/share/glib-2.0/schemas")))))))))
1198 ("filteraudio" ,filteraudio)
1199 ("fontconfig" ,fontconfig)
1200 ("freetype" ,freetype)
1201 ("libsodium" ,libsodium)
1202 ("c-toxcore" ,c-toxcore)
1206 ("libxext" ,libxext)
1207 ("libxrender" ,libxrender)
1209 ("v4l-utils" ,v4l-utils)))
1212 ("pkg-config" ,pkg-config)))
1213 (synopsis "Lightweight Tox client")
1215 "Utox is a lightweight Tox client. Tox is a distributed and secure
1216 instant messenger with audio and video chat capabilities.")
1217 (home-page "http://utox.org/")
1218 (license license:gpl3)))
1225 (method url-fetch/tarbomb)
1226 (uri (string-append "https://github.com/qTox/qTox/releases"
1227 "/download/v" version
1228 "/v" version ".tar.gz"))
1231 "0fmr3a0apil3rl32247qv2pqslp3knpbj5vhprdq0ixsvifrlhmh"))
1232 (file-name (string-append name "-" version ".tar.gz"))))
1233 (build-system cmake-build-system)
1236 (modify-phases %standard-phases
1237 (add-after 'unpack 'fix-reproducibility-issues
1239 (substitute* "src/main.cpp"
1240 (("__DATE__") "\"\"")
1241 (("__TIME__") "\"\"")
1242 (("TIMESTAMP") "\"\""))
1244 (add-after 'unpack 'disable-network-tests
1246 ;; These tests require network access.
1247 (substitute* "cmake/Testing.cmake"
1248 (("auto_test\\(core core\\)") "# auto_test(core core)")
1249 (("auto_test\\(net bsu\\)") "# auto_test(net bsu)"))
1251 ;; Ensure that icons are found at runtime.
1252 (add-after 'install 'wrap-executable
1253 (lambda* (#:key inputs outputs #:allow-other-keys)
1254 (let ((out (assoc-ref outputs "out")))
1255 (wrap-program (string-append out "/bin/qtox")
1256 `("QT_PLUGIN_PATH" prefix
1257 ,(list (string-append (assoc-ref inputs "qtsvg")
1258 "/lib/qt5/plugins/"))))))))))
1260 `(("ffmpeg" ,ffmpeg)
1261 ("filteraudio" ,filteraudio)
1264 ("libsodium" ,libsodium)
1265 ("c-toxcore" ,c-toxcore)
1267 ("libxscrnsaver" ,libxscrnsaver)
1269 ("libexif" ,libexif)
1272 ("qrencode" ,qrencode)
1275 ("sqlcipher" ,sqlcipher)))
1277 `(("pkg-config" ,pkg-config)
1278 ("qmake" ,qttools)))
1279 (home-page "https://qtox.github.io/")
1280 (synopsis "Tox chat client using Qt")
1281 (description "qTox is a Tox client that follows the Tox design
1282 guidelines. It provides an easy to use application that allows you to
1283 connect with friends and family without anyone else listening in.")
1284 (license license:gpl3+)))
1286 (define-public pybitmessage
1288 (name "pybitmessage")
1294 (url "https://github.com/Bitmessage/PyBitmessage")
1296 (file-name (string-append name "-" version "-checkout"))
1299 "1lmhbpwsqh1v93krlqqhafw2pc3y0qp8zby186yllbph6s8kdp35"))))
1302 ;; Package "pyopencl", required in addition to numpy for OpenCL support.
1303 ;; Package "gst123", required in addition to alsa-utils and
1304 ;; mpg123 for sound support.
1305 `(("python2-msgpack" ,python2-msgpack)
1306 ("python2-pythondialog" ,python2-pythondialog)
1307 ("python2-pyqt-4" ,python2-pyqt-4)
1308 ("python2-sip" ,python2-sip)
1309 ("python2-pysqlite" ,python2-pysqlite)
1310 ("python2-pyopenssl" ,python2-pyopenssl)))
1312 `(("openssl" ,openssl)))
1313 (build-system python-build-system)
1315 `(#:modules ((guix build python-build-system)
1317 #:tests? #f ;no test target
1320 (modify-phases %standard-phases
1321 (add-after 'unpack 'fix-unmatched-python-shebangs
1322 (lambda* (#:key inputs #:allow-other-keys)
1323 (substitute* "src/bitmessagemain.py"
1324 (("#!/usr/bin/env python2.7")
1325 (string-append "#!" (which "python"))))
1326 (substitute* "src/bitmessagecli.py"
1327 (("#!/usr/bin/env python2.7.x")
1328 (string-append "#!" (which "python"))))
1330 (add-after 'unpack 'fix-depends
1331 (lambda* (#:key inputs #:allow-other-keys)
1332 (substitute* "src/depends.py"
1334 (string-append (assoc-ref inputs "openssl")
1335 "/lib/libcrypto.so")))
1337 (add-after 'unpack 'fix-local-files-in-paths
1338 (lambda* (#:key outputs #:allow-other-keys)
1339 (substitute* "src/proofofwork.py"
1341 (string-append (assoc-ref outputs "out")
1342 "/lib/bitmsghash.so")))
1344 (add-after 'unpack 'fix-pyelliptic
1345 (lambda* (#:key inputs #:allow-other-keys)
1346 (substitute* "src/pyelliptic/openssl.py"
1348 (string-append (assoc-ref inputs "openssl")
1349 "/lib/libcrypto.so"))
1351 (string-append (assoc-ref inputs "openssl")
1354 (add-after 'unpack 'noninteractive-build
1355 ;; This applies upstream commit 4c597d3f7cf9f83a763472aa165a1a4292019f20
1357 (substitute* "setup.py"
1358 (("except NameError")
1359 "except EOFError, NameError"))
1361 ;; XXX: python setup.py does not build and install bitmsghash,
1362 ;; without it PyBitmessage tries to compile it at first run
1363 ;; in the store, which due to obvious reasons fails. Do it
1364 ;; and place it in /lib.
1365 (add-after 'unpack 'build-and-install-bitmsghash
1366 (lambda* (#:key outputs #:allow-other-keys)
1367 (with-directory-excursion "src/bitmsghash"
1369 (install-file "bitmsghash.so"
1370 (string-append (assoc-ref outputs "out") "/lib")))
1372 (license license:expat)
1374 "Distributed and trustless peer-to-peer communications protocol
1375 for sending encrypted messages to one person or many subscribers.")
1376 (synopsis "Distributed peer-to-peer communication")
1377 (home-page "https://bitmessage.org/")))
1379 (define-public ytalk
1386 (uri (string-append "ftp://ftp.ourproject.org/pub/ytalk/ytalk-"
1390 "1d3jhnj8rgzxyxjwfa22vh45qwzjvxw1qh8fz6b7nfkj3zvk9jvf"))))
1391 (build-system gnu-build-system)
1393 `(("ncurses" ,ncurses)))
1394 (home-page "https://ytalk.ourproject.org")
1395 (synopsis "Multi-user chat program")
1396 (description "Ytalk is a replacement for the BSD talk program. Its main
1397 advantage is the ability to communicate with any arbitrary number of users at
1398 once. It supports both talk protocols (\"talk\" and \"ntalk\") and can communicate
1399 with several different talk daemons at the same time.")
1400 (license license:gpl2+)))
1402 (define-public gloox
1409 (uri (string-append "https://camaya.net/download/gloox-"
1410 version ".tar.bz2"))
1412 (base32 "1jgrd07qr9jvbb5hcmhrqz4w4lvwc51m30jls1fgxf1f5az6455f"))))
1413 (build-system gnu-build-system)
1415 `(("libidn" ,libidn)
1419 `(("pkg-config" ,pkg-config)))
1420 (synopsis "Portable high-level Jabber/XMPP library for C++")
1422 "gloox is a full-featured Jabber/XMPP client library,
1423 written in ANSI C++. It makes writing spec-compliant clients easy
1424 and allows for hassle-free integration of Jabber/XMPP functionality
1425 into existing applications.")
1426 (home-page "https://camaya.net/gloox")
1427 (license license:gpl3)))
1429 (define-public perl-net-psyc
1431 (name "perl-net-psyc")
1436 (uri (string-append "https://perl.psyc.eu/"
1437 "perlpsyc-" version ".zip"))
1438 (file-name (string-append name "-" version ".zip"))
1441 "0vsjclglkwgbyd9m5ad642fyysxw2x725nhq4r2m9pvqaq6s5yf2"))))
1442 (build-system perl-build-system)
1444 `(("unzip" ,unzip)))
1446 `(("perl-curses" ,perl-curses)
1447 ("perl-io-socket-ssl" ,perl-io-socket-ssl)))
1450 (modify-phases %standard-phases
1451 (delete 'configure) ; No configure script
1452 ;; There is a Makefile, but it does not install everything
1453 ;; (leaves out psycion) and says
1454 ;; "# Just to give you a rough idea". XXX: Fix it upstream.
1456 (lambda _ (invoke "make" "manuals")))
1458 (lambda* (#:key outputs #:allow-other-keys)
1459 (let* ((out (assoc-ref outputs "out"))
1460 (doc (string-append out "/share/doc/perl-net-psyc"))
1461 (man1 (string-append out "/share/man/man1"))
1462 (man3 (string-append out "/share/man/man3"))
1463 (bin (string-append out "/bin"))
1464 (libpsyc (string-append out "/lib/psyc/ion"))
1465 (libperl (string-append out "/lib/perl5/site_perl/"
1466 ,(package-version perl))))
1468 (copy-recursively "lib/perl5" libperl)
1469 (copy-recursively "lib/psycion" libpsyc)
1470 (copy-recursively "bin" bin)
1471 (install-file "cgi/psycpager" (string-append doc "/cgi"))
1472 (copy-recursively "contrib" (string-append doc "/contrib"))
1473 (copy-recursively "hooks" (string-append doc "/hooks"))
1474 (copy-recursively "sdj" (string-append doc "/sdj"))
1475 (install-file "README.txt" doc)
1476 (install-file "TODO.txt" doc)
1477 (copy-recursively "share/man/man1" man1)
1478 (copy-recursively "share/man/man3" man3)
1480 (add-after 'install 'wrap-programs
1481 (lambda* (#:key outputs #:allow-other-keys)
1482 ;; Make sure all executables in "bin" find the Perl modules
1483 ;; provided by this package at runtime.
1484 (let* ((out (assoc-ref outputs "out"))
1485 (bin (string-append out "/bin/"))
1486 (path (getenv "PERL5LIB")))
1487 (for-each (lambda (file)
1489 `("PERL5LIB" ":" prefix (,path))))
1490 (find-files bin "\\.*$"))
1493 "@code{Net::PSYC} with support for TCP, UDP, Event.pm, @code{IO::Select} and
1494 Gtk2 event loops. This package includes 12 applications and additional scripts:
1495 psycion (a @uref{https://about.psyc.eu,PSYC} chat client), remotor (a control console
1496 for @uref{https://torproject.org,tor} router) and many more.")
1497 (synopsis "Perl implementation of PSYC protocol")
1498 (home-page "https://perl.psyc.eu")
1499 (license (list license:gpl2
1500 license:perl-license
1501 ;; contrib/irssi-psyc.pl:
1502 license:public-domain
1503 ;; bin/psycplay states AGPL with no version:
1506 (define-public libpsyc
1509 (version "20160913")
1512 (uri (string-append "http://www.psyced.org/files/"
1513 name "-" version ".tar.xz"))
1516 "14q89fxap05ajkfn20rnhc6b1h4i3i2adyr7y6hs5zqwb2lcmc1p"))))
1517 (build-system gnu-build-system)
1521 ("procps" ,procps)))
1525 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1527 (modify-phases %standard-phases
1528 ;; The rust bindings are the only ones in use, the lpc bindings
1529 ;; are in psyclpc. The other bindings are not used by anything,
1530 ;; the chances are high that the bindings do not even work,
1531 ;; therefore we do not include them.
1532 ;; TODO: Get a cargo build system in Guix.
1533 (delete 'configure)))) ; no configure script
1534 (home-page "https://about.psyc.eu/libpsyc")
1536 "@code{libpsyc} is a PSYC library in C which implements
1537 core aspects of PSYC, useful for all kinds of clients and servers
1539 (synopsis "PSYC library in C")
1540 (license license:agpl3+)))
1542 ;; This commit removes the historic bundled pcre and makes psyclpc reproducible.
1543 (define-public psyclpc
1544 (let* ((commit "61cf9aa81297085e5c40170fd01221c752f8deba")
1548 (version (string-append "20160821-" revision "." (string-take commit 7)))
1552 (url "git://git.psyced.org/git/psyclpc")
1554 (file-name (string-append name "-" version "-checkout"))
1557 "1viwqymbhn3cwvx0zl58rlzl5gw47zxn0ldg2nbi55ghm5zxl1z5"))))
1558 (build-system gnu-build-system)
1560 `(#:tests? #f ; There are no tests/checks.
1562 ;; If you have questions about this part, look at
1563 ;; "src/settings/psyced" and the ebuild.
1565 "--enable-use-tls=yes"
1566 "--enable-use-mccp" ; Mud Client Compression Protocol, leave this enabled.
1567 (string-append "--prefix="
1568 (assoc-ref %outputs "out"))
1569 ;; src/Makefile: Set MUD_LIB to the directory which contains
1570 ;; the mud data. defaults to MUD_LIB = @libdir@
1571 (string-append "--libdir="
1572 (assoc-ref %outputs "out")
1573 "/opt/psyced/world")
1574 (string-append "--bindir="
1575 (assoc-ref %outputs "out")
1577 ;; src/Makefile: Set ERQ_DIR to directory which contains the
1578 ;; stuff which ERQ can execute (hopefully) savely. Was formerly
1579 ;; defined in config.h. defaults to ERQ_DIR= @libexecdir@
1580 (string-append "--libexecdir="
1581 (assoc-ref %outputs "out")
1584 (modify-phases %standard-phases
1585 (add-before 'configure 'chdir-to-src
1586 ;; We need to pass this as env variables
1587 ;; and manually change the directory.
1590 (setenv "CONFIG_SHELL" (which "sh"))
1591 (setenv "SHELL" (which "sh"))
1593 #:make-flags (list "install-all")))
1596 ("openssl" ,openssl-1.0)
1599 `(("pkg-config" ,pkg-config)
1601 ("gettext" ,gettext-minimal)
1602 ("help2man" ,help2man)
1603 ("autoconf" ,autoconf)
1604 ("automake" ,automake)))
1605 (home-page "http://lpc.psyc.eu/")
1606 (synopsis "psycLPC is a multi-user network server programming language")
1608 "LPC is a bytecode language, invented to specifically implement
1609 multi user virtual environments on the internet. This technology is used for
1610 MUDs and also the psyced implementation of the Protocol for SYnchronous
1611 Conferencing (PSYC). psycLPC is a fork of LDMud with some new features and
1613 (license license:gpl2))))
1615 (define-public loudmouth
1622 (uri (string-append "https://mcabber.com/files/loudmouth/"
1623 name "-" version ".tar.bz2"))
1626 "0b6kd5gpndl9nzis3n6hcl0ldz74bnbiypqgqa1vgb0vrcar8cjl"))))
1627 (build-system gnu-build-system)
1631 ("libidn" ,libidn)))
1633 `(("pkg-config" ,pkg-config)
1635 ("glib" ,glib "bin") ; gtester
1636 ("gtk-doc" ,gtk-doc)))
1637 (home-page "https://mcabber.com/")
1639 "Loudmouth is a lightweight and easy-to-use C library for programming
1640 with the XMPP (formerly known as Jabber) protocol. It is designed to be
1641 easy to get started with and yet extensible to let you do anything the XMPP
1643 (synopsis "Asynchronous XMPP library")
1644 ;; The files have LGPL2.0+ headers, but COPYING specifies LGPL2.1.
1645 (license license:lgpl2.0+)))
1647 (define-public mcabber
1654 (uri (string-append "https://mcabber.com/files/"
1655 name "-" version ".tar.bz2"))
1657 (base32 "0ngrcc8nzpzk4vw36ni3w073149zsi0yjh922xy9cy5a7srwx2fp"))))
1658 (build-system gnu-build-system)
1660 '(#:configure-flags (list "--enable-otr"
1661 "--enable-aspell")))
1668 ("ncurses" ,ncurses)
1669 ("loudmouth" ,loudmouth)))
1671 `(("pkg-config" ,pkg-config)))
1672 (home-page "https://mcabber.com")
1674 "Mcabber is a small XMPP (Jabber) console client, which includes features
1675 such as SASL and TLS support, @dfn{Multi-User Chat} (MUC) support, logging,
1676 command-completion, OpenPGP encryption, @dfn{Off-the-Record Messaging} (OTR)
1677 support, and more.")
1678 (synopsis "Small XMPP console client")
1679 (license license:gpl2+)))
1681 (define-public freetalk
1687 (uri (string-append "mirror://gnu/freetalk/freetalk-"
1691 "1rmrn7a1bb7vm26yaklrvx008a9qhwc32s57dwrlf40lv9gffwny"))))
1692 (build-system gnu-build-system)
1695 (modify-phases %standard-phases
1696 ;; For 'system' commands in Scheme code.
1697 (add-after 'install 'wrap-program
1698 (lambda* (#:key inputs outputs #:allow-other-keys)
1699 (let* ((out (assoc-ref outputs "out"))
1700 (bash (assoc-ref inputs "bash"))
1701 (coreutils (assoc-ref inputs "coreutils"))
1702 (less (assoc-ref inputs "less")))
1703 (wrap-program (string-append out "/bin/freetalk")
1706 (string-append dir "/bin"))
1707 (list bash coreutils less))))
1710 `(("autoconf" ,autoconf)
1711 ("automake" ,automake)
1712 ("pkg-config" ,pkg-config)
1713 ("texinfo" ,texinfo)))
1717 ("guile" ,guile-2.0)
1719 ("loudmouth" ,loudmouth)
1720 ("readline" ,readline)))
1721 (synopsis "Extensible console-based Jabber client")
1723 "GNU Freetalk is a command-line Jabber/XMPP chat client. It notably uses
1724 the Readline library to handle input, so it features convenient navigation of
1725 text as well as tab-completion of buddy names, commands and English words. It
1726 is also scriptable and extensible via Guile.")
1727 (home-page "https://www.gnu.org/software/freetalk/")
1728 (license license:gpl3+)))
1730 (define-public libmesode
1737 (url "https://github.com/boothj5/libmesode")
1739 (file-name (git-file-name name version))
1742 "0xzfg1xx88cn36352nnjlb1p7xyw32yqkhjzq10px88iaaqz1vv0"))))
1743 (build-system gnu-build-system)
1746 ("openssl" ,openssl)))
1748 `(("autoconf" ,autoconf)
1749 ("automake" ,automake)
1750 ("libtool" ,libtool)
1751 ("pkg-config" ,pkg-config)))
1752 (synopsis "C library for writing XMPP clients")
1753 (description "Libmesode is a fork of libstrophe for use with Profanity
1754 XMPP Client. In particular, libmesode provides extra TLS functionality such as
1755 manual SSL certificate verification.")
1756 (home-page "https://github.com/boothj5/libmesode")
1758 (license (list license:gpl3+ license:x11))))
1760 (define-public libstrophe
1768 (url "https://github.com/strophe/libstrophe")
1770 (file-name (git-file-name name version))
1772 (base32 "1g1l0w9z9hdy5ncdvd9097gi7k7783did6py5h9camlpb2fnk5mk"))))
1773 (build-system gnu-build-system)
1776 ("openssl" ,openssl)))
1778 `(("autoconf" ,autoconf)
1779 ("automake" ,automake)
1780 ("libtool" ,libtool)
1781 ("pkg-config" ,pkg-config)))
1782 (synopsis "C library for writing XMPP clients")
1783 (description "Libstrophe is a minimal XMPP library written in C. It has
1784 almost no external dependencies, only an XML parsing library (expat or libxml
1785 are both supported).")
1786 (home-page "http://strophe.im/libstrophe")
1788 (license (list license:gpl3+ license:x11))))
1790 (define-public profanity
1798 (string-append "https://profanity-im.github.io/profanity-"
1802 "00j9l9v62rz9hprgiy1vrz8v3v59ph18h8kskqxr31fgqvjv5xr3"))))
1803 (build-system glib-or-gtk-build-system)
1807 "--enable-notifications"
1808 "--enable-python-plugins"
1809 "--enable-c-plugins"
1814 "--enable-icons-and-clipboard")))
1816 `(("autoconf" ,autoconf)
1817 ("autoconf-archive" ,autoconf-archive)
1818 ("automake" ,automake)
1820 ("libtool" ,libtool)
1821 ("pkg-config" ,pkg-config)))
1828 ("libmesode" ,libmesode)
1829 ("libnotify" ,libnotify)
1831 ("libsignal-protocol-c" ,libsignal-protocol-c)
1832 ("ncurses" ,ncurses)
1833 ("openssl" ,openssl)
1834 ("python" ,python-wrapper)
1835 ("readline" ,readline)
1836 ("sqlite" ,sqlite)))
1837 (synopsis "Console-based XMPP client")
1838 (description "Profanity is a console based XMPP client written in C
1839 using ncurses and libmesode, inspired by Irssi.")
1840 (home-page "https://profanity-im.github.io")
1841 (license license:gpl3+)))
1843 (define-public libircclient
1845 (name "libircclient")
1850 (uri (string-append "mirror://sourceforge/libircclient/libircclient/"
1851 version "/libircclient-" version ".tar.gz"))
1854 "0b9wa0h3xc31wpqlvgxgnvqp5wgx3kwsf5s9432m5cj8ycx6zcmv"))))
1855 (build-system gnu-build-system)
1857 `(("openssl" ,openssl)))
1860 (list (string-append "--libdir="
1861 (assoc-ref %outputs "out") "/lib")
1865 #:tests? #f)) ; no test suite
1866 (home-page "https://www.ulduzsoft.com/libircclient/")
1867 (synopsis "Library implementing the client IRC protocol")
1868 (description "Libircclient is a library which implements the client IRC
1869 protocol. It is designed to be small, fast, portable and compatible with the
1870 RFC standards as well as non-standard but popular features. It can be used for
1871 building the IRC clients and bots.")
1872 (license license:lgpl3+)))
1874 (define-public toxic
1882 (url "https://github.com/JFreegman/toxic")
1883 (commit (string-append "v" version))))
1885 (base32 "09l2j3lwvrq7bf3051vjsnml9w63790ly3iylgf26gkrmld6k31w"))
1886 (file-name (git-file-name name version))))
1887 (build-system gnu-build-system)
1889 `(#:tests? #f ; no tests
1893 (string-append "PREFIX="
1894 (assoc-ref %outputs "out")))
1896 (modify-phases %standard-phases
1898 (add-before 'build 'enable-python-scripting
1900 ;; XXX: For compatibility with Python 3.8, adjust python3-config
1901 ;; invokation to include --embed; see
1902 ;; <https://github.com/JFreegman/toxic/issues/533>.
1903 (substitute* "cfg/checks/python.mk"
1904 (("python3-config --ldflags")
1905 "python3-config --ldflags --embed"))
1906 (setenv "ENABLE_PYTHON" "1")
1909 `(("c-toxcore" ,c-toxcore)
1911 ("freealut" ,freealut)
1912 ("gdk-pixbuf" ,gdk-pixbuf) ; for libnotify.pc
1913 ("libconfig" ,libconfig)
1914 ("libnotify" ,libnotify)
1918 ("ncurses" ,ncurses)
1921 ("qrencode" ,qrencode)))
1923 `(("pkg-config" ,pkg-config)))
1924 (home-page "https://github.com/JFreegman/toxic")
1925 (synopsis "Tox chat client using ncurses")
1926 (description "Toxic is a console-based instant messaging client, using
1927 c-toxcore and ncurses. It provides audio calls, sound and desktop
1928 notifications, and Python scripting support.")
1929 (license license:gpl3+)))
1931 (define-public libqmatrixclient
1933 (name "libqmatrixclient")
1939 (url "https://github.com/quotient-im/libQuotient")
1941 (file-name (git-file-name name version))
1943 (base32 "0gkwr3yw6k2m0j8cc085b5p2q788rf5nhp1p5hc5d55pc7mci2qs"))))
1944 (build-system cmake-build-system)
1946 `(("qtbase" ,qtbase)
1947 ("qtmultimedia" ,qtmultimedia)))
1949 `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON")
1950 #:tests? #f)) ; no tests
1951 (home-page "https://matrix.org/docs/projects/sdk/libqmatrixclient.html")
1952 (synopsis "Qt5 client library for the Matrix instant messaging protocol")
1953 (description "libqmatrixclient is a Qt5 library to write clients for the
1954 Matrix instant messaging protocol. Quaternion is the reference client
1955 implementation. Quaternion and libqmatrixclient together form the
1956 QMatrixClient project.")
1957 (license license:lgpl2.1+)))
1959 (define-public mtxclient
1967 (url "https://github.com/Nheko-Reborn/mtxclient")
1968 (commit (string-append "v" version))))
1969 (file-name (git-file-name name version))
1971 (base32 "1dg4dq20g0ah62j5s3gpsxqq4ny7lxkxdxa9q6g54hdwkrb9ms7x"))))
1975 ;; Disable example binaries (not installed)
1976 "-DBUILD_LIB_EXAMPLES=OFF")
1978 (modify-phases %standard-phases
1979 (add-before 'configure 'disable-network-tests
1981 (substitute* "CMakeLists.txt"
1982 (("add_test\\((BasicConnectivity|ClientAPI|MediaAPI|Encryption|Pushrules)")
1985 (add-before 'configure 'set-home
1987 ;; Tries to create package registry file
1989 (setenv "HOME" "/tmp")
1991 (build-system cmake-build-system)
1994 ("json-modern-cxx" ,json-modern-cxx)
1996 ("libsodium" ,libsodium)
1997 ("openssl" ,openssl)
2001 `(("googletest" ,googletest)
2002 ("pkg-config" ,pkg-config)))
2003 (home-page "https://github.com/Nheko-Reborn/mtxclient")
2004 (synopsis "Client API library for the Matrix protocol")
2005 (description "@code{mtxclient} is a C++ library that implements client API
2006 for the Matrix protocol. It is built on to of @code{Boost.Asio}.")
2007 (license license:expat)))
2009 (define-public nheko
2017 (url "https://github.com/Nheko-Reborn/nheko")
2018 (commit (string-append "v" version))))
2019 (file-name (git-file-name name version))
2021 (base32 "1cbhgaf9klgxdirrxj571fqwspm0byl75c1xc40l727a6qswvp7s"))))
2023 `(#:tests? #f ;no test target
2026 "-DCMAKE_BUILD_TYPE=Release"
2027 "-DCMAKE_CXX_FLAGS=-fpermissive")
2029 (modify-phases %standard-phases
2030 (add-after 'unpack 'remove-Werror
2032 (substitute* "CMakeLists.txt"
2035 (add-after 'unpack 'fix-determinism
2037 ;; Make Qt deterministic.
2038 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
2040 (build-system qt-build-system)
2044 ("json-modern-cxx" ,json-modern-cxx)
2048 ("mtxclient" ,mtxclient)
2049 ("openssl" ,openssl)
2051 ("qtdeclarative" ,qtdeclarative)
2052 ("qtgraphicaleffects" ,qtgraphicaleffects)
2053 ("qtmultimedia" ,qtmultimedia)
2054 ("qtquickcontrols2" ,qtquickcontrols2)
2060 `(("pkg-config" ,pkg-config)
2061 ("qtlinguist" ,qttools)))
2062 (home-page "https://github.com/Nheko-Reborn/nheko")
2063 (synopsis "Desktop client for Matrix using Qt and C++14")
2064 (description "@code{Nheko} want to provide a native desktop app for the
2065 Matrix protocol that feels more like a mainstream chat app and less like an IRC
2068 There is support for:
2070 @item E2E encryption (text messages only: attachments are currently sent unencrypted).
2071 @item User registration.
2072 @item Creating, joining & leaving rooms.
2073 @item Sending & receiving invites.
2074 @item Sending & receiving files and emoji.
2075 @item Typing notifications.
2076 @item Username auto-completion.
2077 @item Message & mention notifications.
2078 @item Redacting messages.
2079 @item Read receipts.
2080 @item Basic communities support.
2081 @item Room switcher (@key{ctrl-K}).
2082 @item Light, Dark & System themes.
2084 (license license:gpl3+)))
2086 (define-public quaternion
2089 (version "0.0.9.4e")
2090 (outputs '("out" "debug"))
2095 (url "https://github.com/quotient-im/Quaternion")
2097 (file-name (git-file-name name version))
2099 (base32 "0hqhg7l6wpkdbzrdjvrbqymmahziri07ba0hvbii7dd2p0h248fv"))))
2100 (build-system qt-build-system)
2102 `(("libqmatrixclient" ,libqmatrixclient)
2104 ("qtdeclarative" ,qtdeclarative)
2105 ("qtmultimedia" ,qtmultimedia)
2106 ("qtquickcontrols" ,qtquickcontrols)
2107 ("qtquickcontrols2" ,qtquickcontrols2)
2109 ("qttools" ,qttools)))
2111 `(#:tests? #f)) ; no tests
2112 (home-page "https://matrix.org/docs/projects/client/quaternion.html")
2113 (synopsis "Graphical client for the Matrix instant messaging protocol")
2114 (description "Quaternion is a Qt5 desktop client for the Matrix instant
2115 messaging protocol. It uses libqmatrixclient and is its reference client
2116 implementation. Quaternion and libqmatrixclient together form the
2117 QMatrixClient project.")
2118 (license (list license:gpl3+ ; all source code
2119 license:lgpl3+)))) ; icons/breeze
2121 (define-public hangups
2128 (uri (pypi-uri "hangups" version))
2130 (base32 "165lravvlsgkv6pp3vgg785ihycvs43qzqxw2d2yygrc6pbhqlyv"))))
2131 (build-system python-build-system)
2134 (modify-phases %standard-phases
2135 (add-before 'build 'relax-dependencies
2136 ;; Relax overly strict package version specifications.
2138 (substitute* "setup.py"
2142 `(("python-aiohttp" ,python-aiohttp)
2143 ("python-appdirs" ,python-appdirs)
2144 ("python-async-timeout" ,python-async-timeout)
2145 ("python-configargparse" ,python-configargparse)
2146 ("python-mechanicalsoup" ,python-mechanicalsoup)
2147 ("python-protobuf" ,python-protobuf-3.6)
2148 ("python-readlike" ,python-readlike)
2149 ("python-reparser" ,python-reparser)
2150 ("python-requests" ,python-requests)
2151 ("python-urwid" ,python-urwid)))
2153 `(("python-httpretty" ,python-httpretty)
2154 ("python-pytest" ,python-pytest)))
2155 (home-page "https://hangups.readthedocs.io/")
2156 (synopsis "Instant messaging client for Google Hangouts")
2158 "Hangups is an instant messaging client for Google Hangouts. It includes
2159 both a Python library and a reference client with a text-based user interface.
2161 Hangups is implements a reverse-engineered version of Hangouts' proprietary,
2162 non-interoperable protocol, which allows it to support features like group
2163 messaging that aren’t available to clients that connect over XMPP.")
2164 (license license:expat)))
2166 (define-public telegram-purple
2168 (name "telegram-purple")
2170 (home-page "https://github.com/majn/telegram-purple")
2175 (commit (string-append "v" version))
2179 "0imbzhhq9qbj6gvkckrnjhls2vvmmy8db7l6gsd7lng2pbfcn522"))
2180 (modules '((guix build utils)))
2183 (substitute* "Makefile.in"
2184 ;; By default these two directories point to Pidgin's own
2186 (("^PLUGIN_DIR_PURPLE=.*")
2188 "exec_prefix := @exec_prefix@\n"
2189 "PLUGIN_DIR_PURPLE := @libdir@/purple-2\n"))
2190 (("^DATA_ROOT_DIR_PURPLE=.*")
2191 "DATA_ROOT_DIR_PURPLE := @datarootdir@\n")
2193 ;; Honor sysconfdir instead of trying to write to /etc.
2194 (("DESTDIR\\)/etc/telegram-purple")
2195 "DESTDIR)@sysconfdir@/telegram-purple"))
2197 (patches (search-patches "telegram-purple-adjust-test.patch"))
2198 (file-name (git-file-name name version))))
2199 (build-system gnu-build-system)
2201 `(("pkg-config" ,pkg-config)
2202 ("gettext" ,gettext-minimal)
2205 `(("pidgin" ,pidgin)
2206 ("libgcrypt" ,libgcrypt)
2207 ("libwebp" ,libwebp)
2213 (modify-phases %standard-phases
2214 ;; We're using release tag for repository checkout - let's prepare
2215 ;; header defining GIT_COMMIT manually instead of running git to
2216 ;; identify version which is being compiled. Git repository
2217 ;; is removed anyway and only source code is kept.
2218 (add-after 'unpack 'prepare-commit.h
2220 (with-output-to-file "./commit.h"
2223 (string-append "//generated by guix, use version instead of "
2225 "#ifndef GIT_COMMIT\n"
2226 "# define GIT_COMMIT \"v"
2230 (add-before 'configure 'set-SHELL-variables
2231 ;; Set these environment variables so that 'tgl/configure' uses the
2232 ;; right shell and not /bin/sh.
2234 (let ((bash (which "bash")))
2235 (setenv "SHELL" bash)
2236 (setenv "CONFIG_SHELL" bash)
2238 (synopsis "Telegram messaging support for Pidgin")
2240 "Telegram-purple is a plugin for Libpurple, the communication library
2241 used by the Pidgin instant messaging client, that adds support for the
2242 Telegram messenger.")
2244 ;; Code under tgl/ (the Telegram library) is LGPLv2.1+, but the plugin
2245 ;; itself is GPLv2+.
2246 (license license:gpl2+)))
2248 (define-public tdlib
2249 (let ((commit "f45d80fe16f99d112d545b7cd74ce46342fe3437")
2254 (version (git-version version revision commit))
2258 (url "https://github.com/tdlib/td")
2262 "1q8zw26mqhpdzvqbgc7fmn8rzwm5amb8m7s6impin4342wj7h6nr"))
2263 (file-name (git-file-name name version))))
2264 (build-system cmake-build-system)
2268 (list "-DCMAKE_BUILD_TYPE=Release"
2269 "-DTD_ENABLE_LTO=OFF") ; FIXME: Get LTO to work.
2271 (modify-phases %standard-phases
2272 (add-after 'unpack 'remove-failing-tests
2274 (substitute* "test/CMakeLists.txt"
2275 ;; The test cases are compiled into a distinct binary
2276 ;; which uses mtproto.cpp to attempt to connect to
2277 ;; a remote server. Removing this file from the sources
2278 ;; list disables those specific test cases.
2279 (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/mtproto.cpp") ""))
2283 ("openssl" ,openssl)
2286 ("doxygen" ,doxygen)))
2287 (synopsis "Cross-platform library for building Telegram clients")
2288 (description "Tdlib is a cross-platform library for creating custom
2289 Telegram clients following the official Telegram API. It can be easily used
2290 from almost any programming language with a C-FFI and features first-class
2291 support for high performance Telegram Bot creation.")
2292 (home-page "https://core.telegram.org/tdlib")
2293 (license license:boost1.0))))
2295 (define-public purple-mm-sms
2297 (name "purple-mm-sms")
2302 (url "https://source.puri.sm/Librem5/purple-mm-sms.git")
2303 (commit (string-append "v" version))))
2304 (file-name (git-file-name name version))
2307 "1daf7zl8bhhm1szkgxflpqql69f2w9i9nlgf1n4p1nynxifz1bim"))))
2308 (build-system gnu-build-system)
2311 (let ((out (assoc-ref %outputs "out")))
2312 ;; Fix hardcoded paths
2313 (list (string-append "PREFIX=" out)
2314 (string-append "PLUGIN_DIR_PURPLE=" out "/lib/purple-2")
2315 (string-append "DATA_ROOT_DIR_PURPLE=" out "/share")))
2316 #:tests? #f ; no tests
2318 (modify-phases %standard-phases
2319 (delete 'configure))))
2321 `(("glib:bin" ,glib "bin")
2322 ("pkg-config" ,pkg-config)))
2324 `(("modem-manager" ,modem-manager)
2325 ("pidgin" ,pidgin)))
2326 (synopsis "Libpurple plugin for SMS via ModemManager")
2327 (description "Plugin for libpurple to allow sending SMS using ModemManager.")
2328 (home-page "https://source.puri.sm/Librem5/purple-mm-sms")
2329 (license license:gpl2+)))
2331 (define-public chatty
2338 (url "https://source.puri.sm/Librem5/chatty.git")
2339 (commit (string-append "v" version))))
2340 (file-name (git-file-name name version))
2343 "085hb3ii1cy0jb3f0mim25v5r5w3gpfsdpjid5dmrpw4gi88aa2x"))))
2344 (build-system meson-build-system)
2347 (modify-phases %standard-phases
2348 (add-after 'unpack 'skip-updating-desktop-database
2350 (substitute* "meson.build"
2351 (("meson.add_install_script.*") ""))
2354 `(("gettext" ,gettext-minimal)
2355 ("glib:bin" ,glib "bin")
2356 ("pkg-config" ,pkg-config)))
2358 `(("feedbackd" ,feedbackd)
2360 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
2361 ("libgcrypt" ,libgcrypt)
2363 ("libhandy" ,libhandy-0.0)
2365 ("purple-mm-sms" ,purple-mm-sms)
2366 ("sqlite" ,sqlite)))
2368 `(("adwaita-icon-theme" ,adwaita-icon-theme)
2369 ("evolution-data-server" ,evolution-data-server)))
2370 (synopsis "Mobile client for XMPP and SMS messaging")
2371 (description "Chatty is a chat program for XMPP and SMS. It works on mobile
2372 as well as on desktop platforms. It's based on libpurple and ModemManager.")
2373 (home-page "https://source.puri.sm/Librem5/chatty")
2374 (license license:gpl3+)))
2376 (define-public mosquitto
2383 (uri (string-append "https://mosquitto.org/files/source/mosquitto-"
2387 "1yq7y329baa1ly488rw125c3mvsnsa7kjkik602xv1xpkz8p73al"))))
2388 (build-system cmake-build-system)
2390 `(("openssl" ,openssl)))
2391 (synopsis "Message broker")
2392 (description "This package provides Eclipse Mosquitto, a message broker
2393 that implements the MQTT protocol versions 5.0, 3.1.1 and 3.1. Mosquitto
2394 is lightweight and is suitable for use on all devices from low power single
2395 board computers to full servers.
2397 The MQTT protocol provides a lightweight method of carrying out messaging
2398 using a publish/subscribe model. This makes it suitable for Internet of
2399 Things messaging such as with low power sensors or mobile devices such
2400 as phones, embedded computers or microcontrollers.")
2401 (home-page "https://mosquitto.org/")
2403 (license (list license:epl1.0 license:edl1.0))))
2405 ;;; messaging.scm ends here