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 Ricardo Wurmus <rekado@elephly.net>
7 ;;; Copyright © 2015, 2018 Efraim Flashner <efraim@flashner.co.il>
8 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
9 ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
10 ;;; Copyright © 2016, 2017, 2018 Clément Lassieur <clement@lassieur.org>
11 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
12 ;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
13 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
14 ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
15 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
16 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
17 ;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
19 ;;; This file is part of GNU Guix.
21 ;;; GNU Guix is free software; you can redistribute it and/or modify it
22 ;;; under the terms of the GNU General Public License as published by
23 ;;; the Free Software Foundation; either version 3 of the License, or (at
24 ;;; your option) any later version.
26 ;;; GNU Guix is distributed in the hope that it will be useful, but
27 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
28 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29 ;;; GNU General Public License for more details.
31 ;;; You should have received a copy of the GNU General Public License
32 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
34 (define-module (gnu packages messaging)
35 #:use-module (gnu packages)
36 #:use-module (gnu packages admin)
37 #:use-module (gnu packages aidc)
38 #:use-module (gnu packages aspell)
39 #:use-module (gnu packages audio)
40 #:use-module (gnu packages autotools)
41 #:use-module (gnu packages avahi)
42 #:use-module (gnu packages base)
43 #:use-module (gnu packages bash)
44 #:use-module (gnu packages bison)
45 #:use-module (gnu packages check)
46 #:use-module (gnu packages compression)
47 #:use-module (gnu packages crypto)
48 #:use-module (gnu packages curl)
49 #:use-module (gnu packages cyrus-sasl)
50 #:use-module (gnu packages databases)
51 #:use-module (gnu packages documentation)
52 #:use-module (gnu packages enchant)
53 #:use-module (gnu packages fontutils)
54 #:use-module (gnu packages gettext)
55 #:use-module (gnu packages glib)
56 #:use-module (gnu packages gnome)
57 #:use-module (gnu packages gnupg)
58 #:use-module (gnu packages gtk)
59 #:use-module (gnu packages guile)
60 #:use-module (gnu packages icu4c)
61 #:use-module (gnu packages image)
62 #:use-module (gnu packages less)
63 #:use-module (gnu packages libcanberra)
64 #:use-module (gnu packages libidn)
65 #:use-module (gnu packages linux)
66 #:use-module (gnu packages lua)
67 #:use-module (gnu packages man)
68 #:use-module (gnu packages ncurses)
69 #:use-module (gnu packages networking)
70 #:use-module (gnu packages pcre)
71 #:use-module (gnu packages perl)
72 #:use-module (gnu packages photo)
73 #:use-module (gnu packages pkg-config)
74 #:use-module (gnu packages protobuf)
75 #:use-module (gnu packages python)
76 #:use-module (gnu packages python-crypto)
77 #:use-module (gnu packages python-web)
78 #:use-module (gnu packages qt)
79 #:use-module (gnu packages readline)
80 #:use-module (gnu packages tcl)
81 #:use-module (gnu packages texinfo)
82 #:use-module (gnu packages textutils)
83 #:use-module (gnu packages tls)
84 #:use-module (gnu packages video)
85 #:use-module (gnu packages web)
86 #:use-module (gnu packages xdisorg)
87 #:use-module (gnu packages xiph)
88 #:use-module (gnu packages xml)
89 #:use-module (gnu packages xorg)
90 #:use-module (guix build-system cmake)
91 #:use-module (guix build-system glib-or-gtk)
92 #:use-module (guix build-system gnu)
93 #:use-module (guix build-system meson)
94 #:use-module (guix build-system perl)
95 #:use-module (guix build-system python)
96 #:use-module (guix download)
97 #:use-module (guix git-download)
98 #:use-module ((guix licenses) #:prefix license:)
99 #:use-module (guix packages)
100 #:use-module (guix utils))
102 (define-public libotr
108 (uri (string-append "https://otr.cypherpunks.ca/libotr-"
112 "1x8rliydhbibmzwdbyr7pd7n87m2jmxnqkpvaalnf4154hj1hfwb"))
113 (patches (search-patches "libotr-test-auth-fix.patch"))))
114 (build-system gnu-build-system)
116 `(("libgcrypt" ,libgcrypt))) ; libotr headers include gcrypt.h
117 (inputs `(("libgpg-error" ,libgpg-error)))
118 (native-inputs `(("perl" ,perl))) ; for the test suite
119 (synopsis "Off-the-Record (OTR) Messaging Library and Toolkit")
121 "OTR allows you to have private conversations over instant messaging by
122 providing: (1) Encryption: No one else can read your instant messages. (2)
123 Authentication: You are assured the correspondent is who you think it is. (3)
124 Deniability: The messages you send do not have digital signatures that are
125 checkable by a third party. Anyone can forge messages after a conversation to
126 make them look like they came from you. However, during a conversation, your
127 correspondent is assured the messages he sees are authentic and
128 unmodified. (4) Perfect forward secrecy: If you lose control of your private
129 keys, no previous conversation is compromised.")
130 (home-page "https://otr.cypherpunks.ca/")
131 (license (list license:lgpl2.1 license:gpl2))))
133 (define-public libsignal-protocol-c
135 (name "libsignal-protocol-c")
139 (uri (string-append "https://github.com/WhisperSystems/"
140 "libsignal-protocol-c/archive/v" version
142 (file-name (string-append name "-" version ".tar.gz"))
145 "0380hl6fw3ppf265fg897pyrpqygpx4m9j8ifq118bim8lq6z0pk"))))
147 `(;; Required for proper linking and for tests to run.
148 #:configure-flags '("-DBUILD_SHARED_LIBS=on" "-DBUILD_TESTING=1")))
149 (build-system cmake-build-system)
150 (inputs `( ;; Required for tests:
152 ("openssl" ,openssl)))
153 (native-inputs `(("pkg-config" ,pkg-config)))
154 (home-page "https://github.com/WhisperSystems/libsignal-protocol-c")
155 (synopsis "Implementation of a ratcheting forward secrecy protocol")
156 (description "libsignal-protocol-c is an implementation of a ratcheting
157 forward secrecy protocol that works in synchronous and asynchronous
158 messaging environments. It can be used with messaging software to provide
159 end-to-end encryption.")
160 (license license:gpl3+)))
162 (define-public bitlbee
168 (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
171 (base32 "0sgsn0fv41rga46mih3fyv65cvfa6rvki8x92dn7bczbi7yxfdln"))))
172 (build-system gnu-build-system)
173 (native-inputs `(("pkg-config" ,pkg-config)
175 (inputs `(("glib" ,glib)
182 (modify-phases %standard-phases
183 (add-after 'install 'install-etc
184 (lambda* (#:key (make-flags '()) #:allow-other-keys)
185 (zero? (apply system* "make" "install-etc" make-flags))))
186 (add-after 'install-etc 'install-lib
187 (lambda* (#:key (make-flags '()) #:allow-other-keys)
188 (zero? (apply system* "make" "install-dev" make-flags))))
190 ;; bitlbee's configure script does not tolerate many of the
191 ;; variable settings that Guix would pass to it.
192 (lambda* (#:key outputs #:allow-other-keys)
193 (zero? (system* "./configure"
194 (string-append "--prefix="
195 (assoc-ref outputs "out"))
197 (synopsis "IRC to instant messaging gateway")
198 (description "BitlBee brings IM (instant messaging) to IRC clients, for
199 people who have an IRC client running all the time and don't want to run an
200 additional IM client. BitlBee currently supports XMPP/Jabber (including
201 Google Talk), MSN Messenger, Yahoo! Messenger, AIM and ICQ, and the Twitter
202 microblogging network (plus all other Twitter API compatible services like
203 identi.ca and status.net).")
204 (home-page "http://www.bitlbee.org/")
205 (license (list license:gpl2+ license:bsd-2))))
207 (define-public bitlbee-discord
209 (name "bitlbee-discord")
214 (string-append "https://github.com/sm00th/bitlbee-discord/"
215 "archive/" version ".tar.gz"))
216 (file-name (git-file-name name version))
219 "1bwqxlg6fwj3749y7w69n9jwsdzf5nl9xqiszbpv9k8x1422i1y1"))))
220 (build-system gnu-build-system)
223 (modify-phases %standard-phases
224 (add-after 'unpack 'autogen
226 (let ((sh (which "sh")))
227 (substitute* "autogen.sh" (("/bin/sh") sh))
228 (setenv "CONFIG_SHELL" sh)
229 (zero? (system* "./autogen.sh")))))
231 (lambda* (#:key inputs outputs #:allow-other-keys)
232 (invoke "./configure"
233 (string-append "--with-plugindir="
234 (assoc-ref outputs "out")
235 "/lib/bitlbee/")))))))
236 (inputs `(("glib" ,glib)))
237 (native-inputs `(("pkg-config" ,pkg-config)
238 ("autoconf" ,autoconf)
239 ("automake" ,automake)
242 ("bitlbee" ,bitlbee) ;needs bitlbee headers
244 (synopsis "Discord plugin for Bitlbee")
245 (description "Bitlbee-discord is a plugin for Bitlbee witch provides
246 access to servers running the Discord protocol.")
247 (home-page "https://github.com/sm00th/bitlbee-discord/")
248 (license license:gpl2+)))
250 (define-public hexchat
256 (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
260 "064nq151nzsljv97dmkifyl162d2738vbgvm1phx7yv04pjvk4kp"))))
261 (build-system meson-build-system)
262 (native-inputs `(("gettext" ,gettext-minimal)
264 ("pkg-config" ,pkg-config)))
265 (inputs `(("dbus-glib" ,dbus-glib)
268 ("glib:bin" ,glib "bin") ;need glib-genmarshal
270 ("libcanberra" ,libcanberra)
271 ("libnotify" ,libnotify)
272 ("libproxy" ,libproxy)
275 ;; Bindings for add-on scripts.
277 ("perl-xml-parser" ,perl-xml-parser)
278 ("python-2" ,python-2)))
281 (modify-phases %standard-phases
282 (add-after 'unpack 'skip-desktop-database-updates
284 ;; The build scripts update icon and desktop file databases when
285 ;; DESTDIR is not set. We can't update these databases from
286 ;; within the build chroot, but we also don't set DESTDIR. So, we
287 ;; just skip this code.
288 (substitute* "meson_post_install.py"
289 (("if 'DESTDIR' not in os.environ:")
292 (synopsis "Graphical IRC Client")
294 "HexChat lets you connect to multiple IRC networks at once. The main
295 window shows the list of currently connected networks and their channels, the
296 current conversation and the list of users. It uses colors to differentiate
297 between users and to highlight messages. It checks spelling using available
298 dictionaries. HexChat can be extended with multiple addons.")
299 (home-page "https://hexchat.net/")
300 (license license:gpl2+)))
302 (define-public ngircd
308 (uri (string-append "https://arthur.barton.de/pub/ngircd/ngircd-"
312 "020h9d1awyxqr0l42x1fhs47q7cmm17fdxzjish8p2kq23ma0gqp"))
313 (patches (search-patches "ngircd-handle-zombies.patch"))))
314 (build-system gnu-build-system)
315 ;; Needed for the test suite.
316 (native-inputs `(("procps" ,procps)
318 ("inetutils" ,inetutils)))
320 (inputs `(("zlib" ,zlib)
321 ("libwrap" ,tcp-wrappers)
323 ,@(if (string-suffix? "-linux"
324 (or (%current-target-system)
326 `(("linux-pam" ,linux-pam))
330 '("--with-gnutls" "--with-iconv" "--enable-ipv6" "--with-tcp-wrappers"
331 ,@(if (string-suffix? "-linux"
332 (or (%current-target-system)
337 (modify-phases %standard-phases
338 ;; Necessary for the test suite.
339 (add-after 'configure 'post-configure
341 (substitute* "src/ngircd/Makefile"
342 (("/bin/sh") (which "sh")))
343 ;; The default getpid.sh does a sloppy grep over 'ps -ax' output,
344 ;; which fails arbitrarily.
345 (with-output-to-file "src/testsuite/getpid.sh"
349 "#!" (which "sh") "\n"
350 "ps -C \"$1\" -o pid=\n"))))
351 ;; Our variant of getpid.sh does not match interpreter names
352 ;; when the script's shebang is invoked directly as "./foo".
353 ;; Patch cases where the test suite relies on this.
354 (substitute* "src/testsuite/start-server.sh"
355 ;; It runs 'getpid.sh sh' to test if it works at all. Run it on
357 (("getpid.sh sh") "getpid.sh make")))))))
358 (home-page "https://ngircd.barton.de/")
359 (synopsis "Lightweight Internet Relay Chat server for small networks")
361 "ngIRCd is a lightweight @dfn{Internet Relay Chat} (IRC) server for small
362 or private networks. It is easy to configure, can cope with dynamic IP
363 addresses, and supports IPv6, SSL-protected connections, as well as PAM for
365 (license license:gpl2+)))
367 (define-public pidgin
374 (uri (string-append "mirror://sourceforge/pidgin/Pidgin/"
375 version "/" name "-" version ".tar.bz2"))
378 "1y5p2mq3bfw35b66jsafmbva0w5gg1k99y9z8fyp3jfksqv3agcc"))
379 (patches (search-patches "pidgin-add-search-path.patch"))))
380 (build-system glib-or-gtk-build-system)
382 `(("pkg-config" ,pkg-config)
384 ("intltool" ,intltool)
387 ("doxygen" ,doxygen)))
390 ("libgcrypt" ,libgcrypt)
392 ("cyrus-sasl" ,cyrus-sasl)
394 ("dbus-glib" ,dbus-glib)
395 ("python2-dbus" ,python2-dbus)
399 ;; TODO: gstreamer: patches needed to support gstreamer-1.0 or later
402 ;; TODO: network-manager
412 ("libxscrnsaver" ,libxscrnsaver)
413 ("startup-notification" ,startup-notification)))
416 (list "--disable-gtkspell"
418 "--disable-meanwhile"
419 "--disable-nm" ; XXX remove when we have network-manager
420 "--disable-vv" ; XXX remove when we have farstream and gstreamer
421 "--disable-gstreamer" ; XXX patches needed to support gstreamer-1.0
422 "--enable-cyrus-sasl"
423 (string-append "--with-ncurses-headers="
424 (assoc-ref %build-inputs "ncurses")
427 (list (search-path-specification
428 (variable "PURPLE_PLUGIN_PATH")
429 (files (list (string-append "lib/purple-"
430 (version-major version))
432 (home-page "http://www.pidgin.im/")
433 (synopsis "Graphical multi-protocol instant messaging client")
435 "Pidgin is a modular instant messaging client that supports many popular
439 license:gpl2+ ; Most of the code
440 license:lgpl2.1 ; GG protocol plugin (libpurple/protocols/gg/lib)
441 license:lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
442 ;; The following licenses cover the zephyr protocol plugin:
443 (license:non-copyleft
444 "file://libpurple/protocols/zephyr/mit-copyright.h"
445 "See libpurple/protocols/zephyr/mit-copyright.h in the distribution.")
446 (license:non-copyleft
447 "file://libpurple/protocols/zephyr/mit-sipb-copyright.h"
448 "See libpurple/protocols/zephyr/mit-sipb-copyright.h in the distribution.")))))
450 (define-public pidgin-otr
456 (uri (string-append "https://otr.cypherpunks.ca/"
457 name "-" version ".tar.gz"))
460 "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl"))))
461 (build-system gnu-build-system)
463 `(("pkg-config" ,pkg-config)
464 ("intltool" ,intltool)))
468 ("libgpg-error" ,libgpg-error)
469 ("libgcrypt" ,libgcrypt)
472 (home-page "https://otr.cypherpunks.ca/")
473 (synopsis "Off-the-Record Messaging plugin for Pidgin")
475 "Pidgin-OTR is a plugin that adds support for OTR to the Pidgin instant
476 messaging client. OTR (Off-the-Record) Messaging allows you to have private
477 conversations over instant messaging by providing: (1) Encryption: No one else
478 can read your instant messages. (2) Authentication: You are assured the
479 correspondent is who you think it is. (3) Deniability: The messages you send
480 do not have digital signatures that are checkable by a third party. Anyone
481 can forge messages after a conversation to make them look like they came from
482 you. However, during a conversation, your correspondent is assured the
483 messages he sees are authentic and unmodified. (4) Perfect forward secrecy:
484 If you lose control of your private keys, no previous conversation is
486 (license license:gpl2)))
494 (uri (string-append "http://znc.in/releases/archive/znc-"
498 "1i1r1lh9q2mr1bg520zrvrlwhrhy6wibrin78wjxq1gab1qymks4"))))
499 ;; TODO: autotools support has been deprecated, and new features like i18n
500 ;; are only supported when building with cmake.
501 (build-system gnu-build-system)
504 (modify-phases %standard-phases
505 (add-after 'unpack 'unpack-googletest
506 (lambda* (#:key inputs #:allow-other-keys)
507 (mkdir-p "googletest")
508 (copy-recursively (assoc-ref inputs "googletest-source")
511 #:configure-flags '("--enable-python"
514 "--with-gmock=googletest/googlemock"
515 "--with-gtest=googletest/googletest")
516 #:test-target "test"))
518 `(("googletest-source"
519 ;; ZNC 1.7 needs a newer, unreleased googletest (a release is planned
520 ;; <https://github.com/google/googletest/issues/1583>, so don't update
521 ;; the public GOOGLETEST to an unstable version). The commit is taken
522 ;; from ‘third_party/googletest’ in the ZNC git repository.
523 ,(let ((commit "9737e63c69e94ac5777caa0bc77c77d5206467f3"))
527 (url "https://github.com/google/googletest")
529 (file-name (git-file-name "googletest-for-znc" commit))
532 "0ya36n8d62zbxk6p22yffgx43mqhx2fz41gqqwbpdshjryf3wvxj")))))
533 ("pkg-config" ,pkg-config)
537 `(("openssl" ,openssl)
540 ("cyrus-sasl" ,cyrus-sasl)))
541 (home-page "https://znc.in")
542 (synopsis "IRC network bouncer")
543 (description "ZNC is an @dfn{IRC network bouncer} or @dfn{BNC}. It can
544 detach the client from the actual IRC server, and also from selected channels.
545 Multiple clients from different locations can connect to a single ZNC account
546 simultaneously and therefore appear under the same nickname on IRC.")
547 (license license:asl2.0)))
549 (define-public python-nbxmpp
551 (name "python-nbxmpp")
556 (uri (pypi-uri "nbxmpp" version))
559 "1iip8ijxp86fx4bl1h67p2lp02p2zm1ga2p3q43nv30smj54nawc"))))
560 (build-system python-build-system)
562 `(#:tests? #f)) ; no tests
563 (home-page "https://dev.gajim.org/gajim/python-nbxmpp")
564 (synopsis "Non-blocking Jabber/XMPP module")
566 "The goal of this python library is to provide a way for Python
567 applications to use Jabber/XMPP networks in a non-blocking way. This library
568 was initially a fork of xmpppy, but uses non-blocking sockets.")
569 (license license:gpl3+)))
571 (define-public python2-nbxmpp
572 (package-with-python2 python-nbxmpp))
580 (uri (string-append "https://gajim.org/downloads/"
581 (version-major+minor version)
582 "/gajim-" version ".tar.bz2"))
585 "1qis8vs7y7g1zn5i5dshwrszidc22qpflycwb4nixvp9lbmkq0va"))))
586 (build-system python-build-system)
588 `(#:test-target "test_nogui"
590 (modify-phases %standard-phases
591 (add-after 'install 'wrap-gi-typelib-path
592 (lambda* (#:key outputs #:allow-other-keys)
593 (let ((out (assoc-ref outputs "out")))
596 (let ((file (string-append out "/bin/" name))
597 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
599 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
600 '("gajim" "gajim-remote" "gajim-history-manager")))
602 (add-after 'install 'install-icons
603 (lambda* (#:key inputs outputs #:allow-other-keys)
604 (let* ((out (assoc-ref outputs "out"))
605 (adwaita (string-append
606 (assoc-ref inputs "adwaita-icon-theme")
607 "/share/icons/Adwaita"))
608 (hicolor (string-append
609 (assoc-ref inputs "hicolor-icon-theme")
610 "/share/icons/hicolor"))
611 (icons (string-append
613 ,(version-major+minor (package-version python))
614 "/site-packages/gajim/data/icons")))
615 (with-directory-excursion icons
616 (symlink adwaita "Adwaita")
617 (copy-recursively hicolor "hicolor")))
619 (add-after 'install-icons 'wrap-gsettings-schema-dir
620 (lambda* (#:key inputs outputs #:allow-other-keys)
621 (wrap-program (string-append (assoc-ref outputs "out")
623 ;; For GtkFileChooserDialog.
624 `("GSETTINGS_SCHEMA_DIR" =
625 (,(string-append (assoc-ref inputs "gtk+")
626 "/share/glib-2.0/schemas"))))
629 `(("intltool" ,intltool)
630 ("python-docutils" ,python-docutils)
631 ("xorg-server" ,xorg-server)))
633 `(("adwaita-icon-theme" ,adwaita-icon-theme)
634 ("gnome-keyring" ,gnome-keyring)
636 ("gtkspell3" ,gtkspell3)
637 ("hicolor-icon-theme" ,hicolor-icon-theme)
638 ("libsecret" ,libsecret)
639 ("python-axolotl" ,python-axolotl)
640 ("python-cssutils" ,python-cssutils)
641 ("python-dbus" ,python-dbus)
642 ("python-gnupg" ,python-gnupg)
643 ("python-keyring" ,python-keyring)
644 ("python-nbxmpp" ,python-nbxmpp)
645 ("python-pillow" ,python-pillow)
646 ("python-precis-i18n" ,python-precis-i18n)
647 ("python-pycairo" ,python-pycairo)
648 ("python-pygobject" ,python-pygobject)
649 ("python-pyopenssl" ,python-pyopenssl)
650 ("python-qrcode" ,python-qrcode)))
651 (home-page "https://gajim.org/")
652 (synopsis "Jabber (XMPP) client")
653 (description "Gajim is a feature-rich and easy to use Jabber/XMPP client.
654 Among its features are: a tabbed chat window and single window modes; support
655 for group chat (with Multi-User Chat protocol), invitation, chat to group chat
656 transformation; audio and video conferences; file transfer; TLS, GPG and
657 end-to-end encryption support; XML console.")
658 (license license:gpl3)))
661 ;; The only release tarball is for version 0.0, but it is very old and fails
663 (let ((commit "f25fadde2d6c9492b9cafe2cddbcc7b966942e47")
667 (version (string-append "0.0-" revision "." (string-take commit 9)))
671 (url "https://github.com/dino/dino.git")
673 (file-name (string-append name "-" version "-checkout"))
676 "1nhzrw3pbpybn9qclckk6z427vbgnqd0y1l63zd1rfw4zw099mzs"))))
677 (build-system cmake-build-system)
679 `(#:tests? #f ; there are no tests
680 #:parallel-build? #f ; not supported
681 ; Use our libsignal-protocol-c instead of the git submodule.
682 #:configure-flags '("-DSHARED_SIGNAL_PROTOCOL=yes")
683 #:modules ((guix build cmake-build-system)
684 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
686 #:imported-modules (,@%gnu-build-system-modules
687 (guix build cmake-build-system)
688 (guix build glib-or-gtk-build-system))
690 (modify-phases %standard-phases
691 ;; The signal-protocol plugin accesses internal headers of
692 ;; libsignal-protocol-c, so we need to put the sources there.
693 (add-after 'unpack 'unpack-sources
694 (lambda* (#:key inputs #:allow-other-keys)
695 (let ((unpack (lambda (source target)
696 (with-directory-excursion target
697 (zero? (system* "tar" "xvf"
698 (assoc-ref inputs source)
699 "--strip-components=1"))))))
700 (unpack "libsignal-protocol-c-source"
701 "plugins/signal-protocol/libsignal-protocol-c")
703 (add-after 'install 'glib-or-gtk-wrap
704 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
707 ("libsignal-protocol-c" ,libsignal-protocol-c)
708 ("libgcrypt" ,libgcrypt)
713 ("glib-networking" ,glib-networking)
714 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
716 `(("pkg-config" ,pkg-config)
717 ("libsignal-protocol-c-source" ,(package-source libsignal-protocol-c))
720 ("gettext" ,gettext-minimal)))
721 (home-page "https://dino.im")
722 (synopsis "Graphical Jabber (XMPP) client")
723 (description "Dino is a Jabber (XMPP) client which aims to fit well into
724 a graphical desktop environment like GNOME.")
725 (license license:gpl3+))))
727 (define-public prosody
733 (uri (string-append "https://prosody.im/downloads/source/"
734 "prosody-" version ".tar.gz"))
737 "13knr7izscw0zx648b9582dx11aap4cq9bzfiqh5ykd7wwsz1dbm"))))
738 (build-system gnu-build-system)
740 `(#:tests? #f ; no "check" target
741 #:configure-flags (list "--no-example-certs")
742 #:modules ((ice-9 match)
744 (guix build gnu-build-system)
747 (modify-phases %standard-phases
748 (add-after 'unpack 'fix-configure-script
750 ;; The configure script aborts when it encounters unexpected
751 ;; arguments. Make it more tolerant.
752 (substitute* "configure"
755 (add-after 'unpack 'fix-makefile
757 (substitute* "Makefile"
758 ;; prosodyctl needs to read the configuration file.
759 (("^INSTALLEDCONFIG =.*") "INSTALLEDCONFIG = /etc/prosody\n")
760 ;; prosodyctl needs a place to put auto-generated certificates.
761 (("^INSTALLEDDATA =.*") "INSTALLEDDATA = /var/lib/prosody\n"))
763 (add-after 'install 'wrap-programs
764 (lambda* (#:key inputs outputs #:allow-other-keys)
765 ;; Make sure all executables in "bin" find the required Lua
766 ;; modules at runtime.
767 (let* ((out (assoc-ref outputs "out"))
768 (bin (string-append out "/bin/"))
769 (deps (delete #f (map (match-lambda
771 (if (string-prefix? "lua" label)
774 (lua-path (string-join
777 path "/share/lua/5.1/?.lua;"
778 path "/share/lua/5.1/?/?.lua"))
781 (lua-cpath (string-join
784 path "/lib/lua/5.1/?.so;"
785 path "/lib/lua/5.1/?/?.so"))
788 (openssl (assoc-ref inputs "openssl"))
789 (coreutils (assoc-ref inputs "coreutils"))
790 (path (map (lambda (dir)
791 (string-append dir "/bin"))
792 (list openssl coreutils))))
793 (for-each (lambda (file)
795 `("LUA_PATH" ";" = (,lua-path))
796 `("LUA_CPATH" ";" = (,lua-cpath))
797 `("PATH" ":" prefix ,path)))
798 (find-files bin ".*"))
803 ;; Lua 5.1 is still recommended for production usage.
804 ;; See https://prosody.im/doc/packagers.
806 ("lua5.1-bitop" ,lua5.1-bitop)
807 ("lua5.1-expat" ,lua5.1-expat)
808 ("lua5.1-socket" ,lua5.1-socket)
809 ("lua5.1-filesystem" ,lua5.1-filesystem)
810 ("lua5.1-sec" ,lua5.1-sec)))
811 (home-page "https://prosody.im/")
812 (synopsis "Jabber (XMPP) server")
813 (description "Prosody is a modern XMPP communication server. It aims to
814 be easy to set up and configure, and efficient with system resources.
815 Additionally, for developers it aims to be easy to extend and give a flexible
816 system on which to rapidly develop added functionality, or prototype new
818 (license license:x11)))
820 (define-public libtoxcore
822 (commit "bf69b54f64003d160d759068f4816b2d9b2e1e21"))
825 (version (string-append "0.0.0" "-"
826 revision "."(string-take commit 7)))
830 (url "https://github.com/irungentoo/toxcore.git")
832 (file-name (string-append name "-" version "-checkout"))
835 "11lqra4yd7v293cp286ynff5lqz1pprzg8vn3wq6vryj08g88zqb"))))
836 (build-system gnu-build-system)
837 (arguments `(#:tests? #f)) ; FIXME: tests hang, some fail.
839 `(("autoconf" ,autoconf)
840 ("automake" ,automake)
843 ("pkg-config" ,pkg-config)))
845 `(("libsodium" ,libsodium)
848 (synopsis "Library for the Tox encrypted messenger protocol")
850 "C library implementation of the Tox encrypted messenger protocol.")
851 (license license:gpl3+)
852 (home-page "https://tox.chat"))))
854 ;; Some tox clients move to c-toxcore, which seems to be where all the
855 ;; recent development happens. It is run by the same developers as toxcore,
856 ;; forked into a group namespace.
857 (define-public c-toxcore
865 (url "https://github.com/TokTok/c-toxcore.git")
866 (commit (string-append "v" version))))
867 (file-name (git-file-name name version))
870 "0xgnraysz25fbws5zwjk92mwnl8k1yih701qam8kgm3rxh50kyhm"))))
872 `(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable
874 (build-system cmake-build-system)
876 `(("pkg-config" ,pkg-config)))
878 `(("libsodium" ,libsodium)
881 (home-page "https://tox.chat")
882 (synopsis "Library for the Tox encrypted messenger protocol")
884 "Official fork of the C library implementation of the Tox encrypted
885 messenger protocol.")
886 (license license:gpl3+)))
896 (url "https://github.com/uTox/uTox.git")
898 (recursive? #t))) ;; Needed for 'minini' git submodule.
899 (file-name (string-append name "-" version "-checkout"))
902 "12wbq883il7ikldayh8hm0cjfrkp45vn05xx9s1jbfz6gmkidyar"))))
903 (build-system cmake-build-system)
905 `(#:configure-flags '("-DENABLE_TESTS=on")
907 (modify-phases %standard-phases
908 (add-before 'build 'patch-absolute-filename-libgtk-3
909 (lambda* (#:key inputs outputs #:allow-other-keys)
910 (substitute* "../source/src/xlib/gtk.c"
912 (string-append (assoc-ref inputs "gtk+")
913 "/lib/libgtk-3.so")))))
914 (add-after 'install 'wrap-program
915 (lambda* (#:key inputs outputs #:allow-other-keys)
916 (wrap-program (string-append (assoc-ref outputs "out")
918 ;; For GtkFileChooserDialog.
919 `("GSETTINGS_SCHEMA_DIR" =
920 (,(string-append (assoc-ref inputs "gtk+")
921 "/share/glib-2.0/schemas")))))))))
924 ("filteraudio" ,filteraudio)
925 ("fontconfig" ,fontconfig)
926 ("freetype" ,freetype)
927 ("libsodium" ,libsodium)
928 ("c-toxcore" ,c-toxcore)
933 ("libxrender" ,libxrender)
935 ("v4l-utils" ,v4l-utils)))
938 ("pkg-config" ,pkg-config)))
939 (synopsis "Lightweight Tox client")
941 "Utox is a lightweight Tox client. Tox is a distributed and secure
942 instant messenger with audio and video chat capabilities.")
943 (home-page "http://utox.org/")
944 (license license:gpl3)))
952 (uri (string-append "https://github.com/qTox/qTox/archive/v"
956 "10n3cgw9xaqin9la8wpd8v83bkjmimicgbyp5ninsdgsrgky4hmq"))
957 (file-name (string-append name "-" version ".tar.gz"))))
958 (build-system cmake-build-system)
961 (modify-phases %standard-phases
962 (add-after 'unpack 'fix-reproducibility-issues
964 (substitute* "src/main.cpp"
965 (("__DATE__") "\"\"")
966 (("__TIME__") "\"\"")
967 (("TIMESTAMP") "\"\""))
969 ;; Ensure that icons are found at runtime.
970 (add-after 'install 'wrap-executable
971 (lambda* (#:key inputs outputs #:allow-other-keys)
972 (let ((out (assoc-ref outputs "out")))
973 (wrap-program (string-append out "/bin/qtox")
974 `("QT_PLUGIN_PATH" prefix
975 ,(list (string-append (assoc-ref inputs "qtsvg")
976 "/lib/qt5/plugins/"))))))))))
979 ("filteraudio" ,filteraudio)
982 ("libsodium" ,libsodium)
983 ("c-toxcore" ,c-toxcore)
985 ("libxscrnsaver" ,libxscrnsaver)
990 ("qrencode" ,qrencode)
993 ("sqlcipher" ,sqlcipher)))
995 `(("pkg-config" ,pkg-config)
997 (home-page "https://qtox.github.io/")
998 (synopsis "Tox chat client using Qt")
999 (description "qTox is a Tox client that follows the Tox design
1000 guidelines. It provides an easy to use application that allows you to
1001 connect with friends and family without anyone else listening in.")
1002 (license license:gpl3+)))
1004 (define-public pybitmessage
1006 (name "pybitmessage")
1012 (url "https://github.com/Bitmessage/PyBitmessage.git")
1014 (file-name (string-append name "-" version "-checkout"))
1017 "1lmhbpwsqh1v93krlqqhafw2pc3y0qp8zby186yllbph6s8kdp35"))))
1020 ;; Package "pyopencl", required in addition to numpy for OpenCL support.
1021 ;; Package "gst123", required in addition to alsa-utils and
1022 ;; mpg123 for sound support.
1023 `(("python2-msgpack" ,python2-msgpack)
1024 ("python2-pythondialog" ,python2-pythondialog)
1025 ("python2-pyqt-4" ,python2-pyqt-4)
1026 ("python2-sip" ,python2-sip)
1027 ("python2-pysqlite" ,python2-pysqlite)
1028 ("python2-pyopenssl" ,python2-pyopenssl)))
1030 `(("openssl" ,openssl)))
1031 (build-system python-build-system)
1033 `(#:modules ((guix build python-build-system)
1035 #:tests? #f ;no test target
1038 (modify-phases %standard-phases
1039 (add-after 'unpack 'fix-unmatched-python-shebangs
1040 (lambda* (#:key inputs #:allow-other-keys)
1041 (substitute* "src/bitmessagemain.py"
1042 (("#!/usr/bin/env python2.7")
1043 (string-append "#!" (which "python"))))
1044 (substitute* "src/bitmessagecli.py"
1045 (("#!/usr/bin/env python2.7.x")
1046 (string-append "#!" (which "python"))))
1048 (add-after 'unpack 'fix-depends
1049 (lambda* (#:key inputs #:allow-other-keys)
1050 (substitute* "src/depends.py"
1052 (string-append (assoc-ref inputs "openssl")
1053 "/lib/libcrypto.so")))
1055 (add-after 'unpack 'fix-local-files-in-paths
1056 (lambda* (#:key outputs #:allow-other-keys)
1057 (substitute* "src/proofofwork.py"
1059 (string-append (assoc-ref outputs "out")
1060 "/lib/bitmsghash.so")))
1062 (add-after 'unpack 'fix-pyelliptic
1063 (lambda* (#:key inputs #:allow-other-keys)
1064 (substitute* "src/pyelliptic/openssl.py"
1066 (string-append (assoc-ref inputs "openssl")
1067 "/lib/libcrypto.so"))
1069 (string-append (assoc-ref inputs "openssl")
1072 (add-after 'unpack 'noninteractive-build
1073 ;; This applies upstream commit 4c597d3f7cf9f83a763472aa165a1a4292019f20
1075 (substitute* "setup.py"
1076 (("except NameError")
1077 "except EOFError, NameError"))
1079 ;; XXX: python setup.py does not build and install bitmsghash,
1080 ;; without it PyBitmessage tries to compile it at first run
1081 ;; in the store, which due to obvious reasons fails. Do it
1082 ;; and place it in /lib.
1083 (add-after 'unpack 'build-and-install-bitmsghash
1084 (lambda* (#:key outputs #:allow-other-keys)
1085 (with-directory-excursion "src/bitmsghash"
1087 (install-file "bitmsghash.so"
1088 (string-append (assoc-ref outputs "out") "/lib")))
1090 (license license:expat)
1092 "Distributed and trustless peer-to-peer communications protocol
1093 for sending encrypted messages to one person or many subscribers.")
1094 (synopsis "Distributed peer-to-peer communication")
1095 (home-page "https://bitmessage.org/")))
1097 (define-public ytalk
1104 (uri (string-append "ftp://ftp.ourproject.org/pub/ytalk/ytalk-"
1108 "1d3jhnj8rgzxyxjwfa22vh45qwzjvxw1qh8fz6b7nfkj3zvk9jvf"))))
1109 (build-system gnu-build-system)
1111 `(("ncurses" ,ncurses)))
1112 (home-page "http://ytalk.ourproject.org")
1113 (synopsis "Multi-user chat program")
1114 (description "Ytalk is a replacement for the BSD talk program. Its main
1115 advantage is the ability to communicate with any arbitrary number of users at
1116 once. It supports both talk protocols (\"talk\" and \"ntalk\") and can communicate
1117 with several different talk daemons at the same time.")
1118 (license license:gpl2+)))
1120 (define-public gloox
1127 (uri (string-append "https://camaya.net/download/gloox-"
1128 version ".tar.bz2"))
1131 "1k57qgif1yii515m6jaqaibkdysfab6394bpawd2l67321f1a4rw"))))
1132 (build-system gnu-build-system)
1134 `(("libidn" ,libidn)
1138 `(("pkg-config" ,pkg-config)))
1139 (synopsis "Portable high-level Jabber/XMPP library for C++")
1141 "gloox is a full-featured Jabber/XMPP client library,
1142 written in ANSI C++. It makes writing spec-compliant clients easy
1143 and allows for hassle-free integration of Jabber/XMPP functionality
1144 into existing applications.")
1145 (home-page "https://camaya.net/gloox")
1146 (license license:gpl3)))
1148 (define-public perl-net-psyc
1150 (name "perl-net-psyc")
1155 (uri (string-append "http://perlpsyc.psyc.eu/"
1156 "perlpsyc-" version ".zip"))
1157 (file-name (string-append name "-" version ".zip"))
1160 "1lw6807qrbmvzbrjn1rna1dhir2k70xpcjvyjn45y35hav333a42"))
1161 ;; psycmp3 currently depends on MP3::List and rxaudio (shareware),
1162 ;; we can add it back when this is no longer the case.
1164 (delete-file "contrib/psycmp3")
1166 (build-system perl-build-system)
1168 `(("perl-curses" ,perl-curses)
1169 ("perl-io-socket-ssl" ,perl-io-socket-ssl)))
1172 (modify-phases %standard-phases
1173 (delete 'configure) ; No configure script
1174 ;; There is a Makefile, but it does not install everything
1175 ;; (leaves out psycion) and says
1176 ;; "# Just to give you a rough idea". XXX: Fix it upstream.
1179 (zero? (system* "make" "manuals"))))
1181 (lambda* (#:key outputs #:allow-other-keys)
1182 (let* ((out (assoc-ref outputs "out"))
1183 (doc (string-append out "/share/doc/perl-net-psyc"))
1184 (man1 (string-append out "/share/man/man1"))
1185 (man3 (string-append out "/share/man/man3"))
1186 (bin (string-append out "/bin"))
1187 (libpsyc (string-append out "/lib/psyc/ion"))
1188 (libperl (string-append out "/lib/perl5/site_perl/"
1189 ,(package-version perl))))
1191 (copy-recursively "lib/perl5" libperl)
1192 (copy-recursively "lib/psycion" libpsyc)
1193 (copy-recursively "bin" bin)
1194 (install-file "cgi/psycpager" (string-append doc "/cgi"))
1195 (copy-recursively "contrib" (string-append doc "/contrib"))
1196 (copy-recursively "hooks" (string-append doc "/hooks"))
1197 (copy-recursively "sdj" (string-append doc "/sdj"))
1198 (install-file "README.txt" doc)
1199 (install-file "TODO.txt" doc)
1200 (copy-recursively "share/man/man1" man1)
1201 (copy-recursively "share/man/man3" man3)
1203 (add-after 'install 'wrap-programs
1204 (lambda* (#:key outputs #:allow-other-keys)
1205 ;; Make sure all executables in "bin" find the Perl modules
1206 ;; provided by this package at runtime.
1207 (let* ((out (assoc-ref outputs "out"))
1208 (bin (string-append out "/bin/"))
1209 (path (getenv "PERL5LIB")))
1210 (for-each (lambda (file)
1212 `("PERL5LIB" ":" prefix (,path))))
1213 (find-files bin "\\.*$"))
1216 "@code{Net::PSYC} with support for TCP, UDP, Event.pm, @code{IO::Select} and
1217 Gtk2 event loops. This package includes 12 applications and additional scripts:
1218 psycion (a @uref{http://about.psyc.eu,PSYC} chat client), remotor (a control console
1219 for @uref{https://torproject.org,tor} router) and many more.")
1220 (synopsis "Perl implementation of PSYC protocol")
1221 (home-page "http://perlpsyc.psyc.eu/")
1222 (license (list license:gpl2
1223 license:perl-license
1224 ;; contrib/irssi-psyc.pl:
1225 license:public-domain
1226 ;; bin/psycplay states AGPL with no version:
1229 (define-public libpsyc
1232 (version "20160913")
1235 (uri (string-append "http://www.psyced.org/files/"
1236 name "-" version ".tar.xz"))
1239 "14q89fxap05ajkfn20rnhc6b1h4i3i2adyr7y6hs5zqwb2lcmc1p"))))
1240 (build-system gnu-build-system)
1244 ("procps" ,procps)))
1248 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1250 (modify-phases %standard-phases
1251 ;; The rust bindings are the only ones in use, the lpc bindings
1252 ;; are in psyclpc. The other bindings are not used by anything,
1253 ;; the chances are high that the bindings do not even work,
1254 ;; therefore we do not include them.
1255 ;; TODO: Get a cargo build system in Guix.
1256 (delete 'configure)))) ; no configure script
1257 (home-page "http://about.psyc.eu/libpsyc")
1259 "@code{libpsyc} is a PSYC library in C which implements
1260 core aspects of PSYC, useful for all kinds of clients and servers
1262 (synopsis "PSYC library in C")
1263 (license license:agpl3+)))
1265 ;; This commit removes the historic bundled pcre and makes psyclpc reproducible.
1266 (define-public psyclpc
1267 (let* ((commit "61cf9aa81297085e5c40170fd01221c752f8deba")
1271 (version (string-append "20160821-" revision "." (string-take commit 7)))
1275 (url "git://git.psyced.org/git/psyclpc")
1277 (file-name (string-append name "-" version "-checkout"))
1280 "1viwqymbhn3cwvx0zl58rlzl5gw47zxn0ldg2nbi55ghm5zxl1z5"))))
1281 (build-system gnu-build-system)
1283 `(#:tests? #f ; There are no tests/checks.
1285 ;; If you have questions about this part, look at
1286 ;; "src/settings/psyced" and the ebuild.
1288 "--enable-use-tls=yes"
1289 "--enable-use-mccp" ; Mud Client Compression Protocol, leave this enabled.
1290 (string-append "--prefix="
1291 (assoc-ref %outputs "out"))
1292 ;; src/Makefile: Set MUD_LIB to the directory which contains
1293 ;; the mud data. defaults to MUD_LIB = @libdir@
1294 (string-append "--libdir="
1295 (assoc-ref %outputs "out")
1296 "/opt/psyced/world")
1297 (string-append "--bindir="
1298 (assoc-ref %outputs "out")
1300 ;; src/Makefile: Set ERQ_DIR to directory which contains the
1301 ;; stuff which ERQ can execute (hopefully) savely. Was formerly
1302 ;; defined in config.h. defaults to ERQ_DIR= @libexecdir@
1303 (string-append "--libexecdir="
1304 (assoc-ref %outputs "out")
1307 (modify-phases %standard-phases
1308 (add-before 'configure 'chdir-to-src
1309 ;; We need to pass this as env variables
1310 ;; and manually change the directory.
1313 (setenv "CONFIG_SHELL" (which "sh"))
1314 (setenv "SHELL" (which "sh"))
1316 #:make-flags (list "install-all")))
1319 ("openssl" ,openssl)
1322 `(("pkg-config" ,pkg-config)
1324 ("gettext" ,gettext-minimal)
1325 ("help2man" ,help2man)
1326 ("autoconf" ,autoconf)
1327 ("automake" ,automake)))
1328 (home-page "http://lpc.psyc.eu/")
1329 (synopsis "psycLPC is a multi-user network server programming language")
1331 "LPC is a bytecode language, invented to specifically implement
1332 multi user virtual environments on the internet. This technology is used for
1333 MUDs and also the psyced implementation of the Protocol for SYnchronous
1334 Conferencing (PSYC). psycLPC is a fork of LDMud with some new features and
1336 (license license:gpl2))))
1338 (define-public loudmouth
1345 (uri (string-append "https://mcabber.com/files/loudmouth/"
1346 name "-" version ".tar.bz2"))
1349 "0b6kd5gpndl9nzis3n6hcl0ldz74bnbiypqgqa1vgb0vrcar8cjl"))))
1350 (build-system gnu-build-system)
1354 ("libidn" ,libidn)))
1356 `(("pkg-config" ,pkg-config)
1358 ("glib" ,glib "bin") ; gtester
1359 ("gtk-doc" ,gtk-doc)))
1360 (home-page "https://mcabber.com/")
1362 "Loudmouth is a lightweight and easy-to-use C library for programming
1363 with the XMPP (formerly known as Jabber) protocol. It is designed to be
1364 easy to get started with and yet extensible to let you do anything the XMPP
1366 (synopsis "Asynchronous XMPP library")
1367 ;; The files have LGPL2.0+ headers, but COPYING specifies LGPL2.1.
1368 (license license:lgpl2.0+)))
1370 (define-public mcabber
1377 (uri (string-append "https://mcabber.com/files/"
1378 name "-" version ".tar.bz2"))
1381 "1ggh865p1rf10ffsnf4g6qv9i8bls36dxdb1nzs5r9vdqci2rz04"))))
1382 (build-system gnu-build-system)
1384 '(#:configure-flags (list "--enable-otr"
1385 "--enable-aspell")))
1392 ("ncurses" ,ncurses)
1393 ("loudmouth" ,loudmouth)))
1395 `(("pkg-config" ,pkg-config)))
1396 (home-page "https://mcabber.com")
1398 "Mcabber is a small XMPP (Jabber) console client, which includes features
1399 such as SASL and TLS support, @dfn{Multi-User Chat} (MUC) support, logging,
1400 command-completion, OpenPGP encryption, @dfn{Off-the-Record Messaging} (OTR)
1401 support, and more.")
1402 (synopsis "Small XMPP console client")
1403 (license license:gpl2+)))
1405 (define-public freetalk
1411 (uri (string-append "mirror://gnu/freetalk/freetalk-"
1415 "1rmrn7a1bb7vm26yaklrvx008a9qhwc32s57dwrlf40lv9gffwny"))))
1416 (build-system gnu-build-system)
1419 (modify-phases %standard-phases
1420 (add-after 'unpack 'autogen
1422 (zero? (system* "sh" "autogen.sh"))))
1423 ;; For 'system' commands in Scheme code.
1424 (add-after 'install 'wrap-program
1425 (lambda* (#:key inputs outputs #:allow-other-keys)
1426 (let* ((out (assoc-ref outputs "out"))
1427 (bash (assoc-ref inputs "bash"))
1428 (coreutils (assoc-ref inputs "coreutils"))
1429 (less (assoc-ref inputs "less")))
1430 (wrap-program (string-append out "/bin/freetalk")
1433 (string-append dir "/bin"))
1434 (list bash coreutils less))))
1437 `(("autoconf" ,autoconf)
1438 ("automake" ,automake)
1439 ("pkg-config" ,pkg-config)
1440 ("texinfo" ,texinfo)))
1444 ("guile" ,guile-2.0)
1446 ("loudmouth" ,loudmouth)
1447 ("readline" ,readline)))
1448 (synopsis "Extensible console-based Jabber client")
1450 "GNU Freetalk is a command-line Jabber/XMPP chat client. It notably uses
1451 the Readline library to handle input, so it features convenient navigation of
1452 text as well as tab-completion of buddy names, commands and English words. It
1453 is also scriptable and extensible via Guile.")
1454 (home-page "https://www.gnu.org/software/freetalk/")
1455 (license license:gpl3+)))
1457 (define-public libmesode
1464 (url "https://github.com/boothj5/libmesode.git")
1466 (file-name (git-file-name name version))
1469 "06f5nfaypvxrbsinxa1k2vrxrs7kqmg38g4wwwk5d63hpn1pj8ak"))))
1470 (build-system gnu-build-system)
1473 ("openssl" ,openssl)))
1475 `(("autoconf" ,autoconf)
1476 ("automake" ,automake)
1477 ("libtool" ,libtool)
1478 ("pkg-config" ,pkg-config)))
1479 (synopsis "C library for writing XMPP clients")
1480 (description "Libmesode is a fork of libstrophe for use with Profanity
1481 XMPP Client. In particular, libmesode provides extra TLS functionality such as
1482 manual SSL certificate verification.")
1483 (home-page "https://github.com/boothj5/libmesode")
1485 (license (list license:gpl3+ license:x11))))
1487 (define-public libstrophe
1493 (uri (string-append "https://github.com/strophe/libstrophe/archive/"
1495 (file-name (string-append name "-" version ".tar.gz"))
1498 "0vxfcyfnhnlaj6spm2b0ljw5i3knbphy6mvzpl5zv9b52ny4b08m"))))
1499 (build-system gnu-build-system)
1502 ("openssl" ,openssl)))
1504 `(("autoconf" ,autoconf)
1505 ("automake" ,automake)
1506 ("libtool" ,libtool)
1507 ("pkg-config" ,pkg-config)))
1508 (synopsis "C library for writing XMPP clients")
1509 (description "Libstrophe is a minimal XMPP library written in C. It has
1510 almost no external dependencies, only an XML parsing library (expat or libxml
1511 are both supported).")
1512 (home-page "http://strophe.im/libstrophe")
1514 (license (list license:gpl3+ license:x11))))
1516 (define-public profanity
1522 (uri (string-append "http://www.profanity.im/profanity-"
1526 "1f7ylw3mhhnii52mmk40hyc4kqhpvjdr3hmsplzkdhsfww9kflg3"))))
1527 (build-system gnu-build-system)
1533 ("libmesode" ,libmesode)
1535 ("ncurses" ,ncurses)
1536 ("openssl" ,openssl)
1537 ("readline" ,readline)))
1539 `(("autoconf" ,autoconf)
1540 ("autoconf-archive" ,autoconf-archive)
1541 ("automake" ,automake)
1543 ("libtool" ,libtool)
1544 ("pkg-config" ,pkg-config)))
1545 (synopsis "Console-based XMPP client")
1546 (description "Profanity is a console based XMPP client written in C
1547 using ncurses and libmesode, inspired by Irssi.")
1548 (home-page "http://www.profanity.im")
1549 (license license:gpl3+)))
1551 (define-public libircclient
1553 (name "libircclient")
1558 (uri (string-append "mirror://sourceforge/libircclient/libircclient/"
1559 version "/libircclient-" version ".tar.gz"))
1562 "0b9wa0h3xc31wpqlvgxgnvqp5wgx3kwsf5s9432m5cj8ycx6zcmv"))))
1563 (build-system gnu-build-system)
1565 `(("openssl" ,openssl)))
1568 (list (string-append "--libdir="
1569 (assoc-ref %outputs "out") "/lib")
1573 #:tests? #f)) ; no test suite
1574 (home-page "https://www.ulduzsoft.com/libircclient/")
1575 (synopsis "Library implementing the client IRC protocol")
1576 (description "Libircclient is a library which implements the client IRC
1577 protocol. It is designed to be small, fast, portable and compatible with the
1578 RFC standards as well as non-standard but popular features. It can be used for
1579 building the IRC clients and bots.")
1580 (license license:lgpl3+)))
1582 (define-public toxic
1588 (uri (string-append "https://github.com/JFreegman/toxic/archive/v"
1592 "1dx6z7k0zpsd7dpysdy23f0hnm49qlikb0mq8fg0y01dsz9vxgak"))
1593 (file-name (git-file-name name version))))
1594 (build-system gnu-build-system)
1596 `(#:tests? #f ; no tests
1600 (string-append "PREFIX="
1601 (assoc-ref %outputs "out")))
1603 (modify-phases %standard-phases
1605 (add-before 'build 'enable-python-scripting
1607 (setenv "ENABLE_PYTHON" "1")
1610 `(("c-toxcore" ,c-toxcore)
1612 ("freealut" ,freealut)
1613 ("gdk-pixbuf" ,gdk-pixbuf) ; for libnotify.pc
1614 ("libconfig" ,libconfig)
1615 ("libnotify" ,libnotify)
1619 ("ncurses" ,ncurses)
1622 ("qrencode" ,qrencode)))
1624 `(("pkg-config" ,pkg-config)))
1625 (home-page "https://github.com/JFreegman/toxic")
1626 (synopsis "Tox chat client using ncurses")
1627 (description "Toxic is a console-based instant messaging client, using
1628 c-toxcore and ncurses. It provides audio calls, sound and desktop
1629 notifications, and Python scripting support.")
1630 (license license:gpl3+)))
1632 (define-public libqmatrixclient
1634 (name "libqmatrixclient")
1640 (url "https://github.com/QMatrixClient/libqmatrixclient")
1641 (commit (string-append "v" version))))
1642 (file-name (git-file-name name version))
1645 "1llzqjagvp91kcg26q5c4qw9aaz7wna3rh6k06rc3baivrjqf3cn"))))
1646 (build-system cmake-build-system)
1648 `(("qtbase" ,qtbase)))
1650 `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON")
1651 #:tests? #f)) ; No tests
1652 (home-page "https://matrix.org/docs/projects/sdk/libqmatrixclient.html")
1653 (synopsis "Qt5 client library for the Matrix instant messaging protocol")
1654 (description "libqmatrixclient is a Qt5 library to write clients for the
1655 Matrix instant messaging protocol. Quaternion is the reference client
1656 implementation. Quaternion and libqmatrixclient together form the
1657 QMatrixClient project.")
1658 (license license:lgpl2.1+)))
1660 (define-public quaternion
1668 (url "https://github.com/QMatrixClient/Quaternion")
1669 (commit (string-append "v" version))))
1670 (file-name (git-file-name name version))
1673 "1hr9zqf301rg583n9jv256vzj7y57d8qgayk7c723bfknf1s6hh3"))))
1674 (build-system cmake-build-system)
1676 `(("libqmatrixclient" ,libqmatrixclient)
1678 ("qtdeclarative" ,qtdeclarative)
1679 ("qtquickcontrols" ,qtquickcontrols)
1681 ("qttools" ,qttools)))
1683 `(#:tests? #f ; No tests
1685 (modify-phases %standard-phases
1686 (add-after 'install 'wrap-program
1687 (lambda* (#:key inputs outputs #:allow-other-keys)
1688 (wrap-program (string-append (assoc-ref outputs "out")
1690 `("QT_PLUGIN_PATH" ":" prefix
1691 (,(string-append (assoc-ref inputs "qtsvg")
1692 "/lib/qt5/plugins")))
1693 `("QML2_IMPORT_PATH" ":" prefix
1694 ,(map (lambda (label)
1695 (string-append (assoc-ref inputs label)
1697 '("qtdeclarative" "qtquickcontrols"))))
1699 (home-page "https://matrix.org/docs/projects/client/quaternion.html")
1700 (synopsis "Graphical client for the Matrix instant messaging protocol")
1701 (description "Quaternion is a Qt5 desktop client for the Matrix instant
1702 messaging protocol. It uses libqmatrixclient and is its reference client
1703 implementation. Quaternion and libqmatriclient together form the
1704 QMatrixClient project.")
1705 (license (list license:gpl3+ ; all source code
1706 license:lgpl3+)))) ; icons/breeze
1708 (define-public hangups
1715 (uri (pypi-uri "hangups" version))
1717 (base32 "0mvpfd5dc3zgcvwfidcd2qyn59xl5biv728mxifw0ls5rzkc9chs"))))
1718 (build-system python-build-system)
1721 (modify-phases %standard-phases
1722 (add-before 'build 'relax-dependencies
1723 ;; Relax overly strict package version specifications.
1725 (substitute* "setup.py"
1729 `(("python-aiohttp" ,python-aiohttp)
1730 ("python-appdirs" ,python-appdirs)
1731 ("python-async-timeout" ,python-async-timeout)
1732 ("python-configargparse" ,python-configargparse)
1733 ("python-mechanicalsoup" ,python-mechanicalsoup)
1734 ("python-protobuf" ,python-protobuf)
1735 ("python-readlike" ,python-readlike)
1736 ("python-reparser" ,python-reparser)
1737 ("python-requests" ,python-requests)
1738 ("python-urwid" ,python-urwid)))
1739 (home-page "https://hangups.readthedocs.io/")
1740 (synopsis "Instant messaging client for Google Hangouts")
1742 "Hangups is an instant messaging client for Google Hangouts. It includes
1743 both a Python library and a reference client with a text-based user interface.
1745 Hangups is implements a reverse-engineered version of Hangouts' proprietary,
1746 non-interoperable protocol, which allows it to support features like group
1747 messaging that aren’t available to clients that connect over XMPP.")
1748 (license license:expat)))
1750 (define-public telegram-purple
1752 (name "telegram-purple")
1754 (home-page "https://github.com/majn/telegram-purple")
1759 (commit (string-append "v" version))
1763 "0p93jpjpx7hszwffzgixw04zkrpsiyzz4za3gfr4j07krc4771fp"))
1764 (modules '((guix build utils)))
1767 (substitute* "Makefile.in"
1768 ;; By default these two directories point to Pidgin's own
1770 (("^PLUGIN_DIR_PURPLE=.*")
1772 "exec_prefix := @exec_prefix@\n"
1773 "PLUGIN_DIR_PURPLE := @libdir@/purple-2\n"))
1774 (("^DATA_ROOT_DIR_PURPLE=.*")
1775 "DATA_ROOT_DIR_PURPLE := @datarootdir@\n")
1777 ;; Honor sysconfdir instead of trying to write to /etc.
1778 (("DESTDIR\\)/etc/telegram-purple")
1779 "DESTDIR)@sysconfdir@/telegram-purple"))
1781 (patches (search-patches "telegram-purple-adjust-test.patch"))
1782 (file-name (git-file-name name version))))
1783 (build-system gnu-build-system)
1785 `(("pkg-config" ,pkg-config)
1788 `(("pidgin" ,pidgin)
1789 ("libgcrypt" ,libgcrypt)
1790 ("libwebp" ,libwebp)
1792 ("gettext" ,gnu-gettext)
1797 (modify-phases %standard-phases
1798 ;; We're using release tag for repository checkout - let's prepare
1799 ;; header defining GIT_COMMIT manually instead of running git to
1800 ;; identify version which is being compiled. Git repository
1801 ;; is removed anyway and only source code is kept.
1802 (add-after 'unpack 'prepare-commit.h
1804 (with-output-to-file "./commit.h"
1807 (string-append "//generated by guix, use version instead of "
1809 "#ifndef GIT_COMMIT\n"
1810 "# define GIT_COMMIT \"v"
1814 (add-before 'configure 'set-SHELL-variables
1815 ;; Set these environment variables so that 'tgl/configure' uses the
1816 ;; right shell and not /bin/sh.
1818 (let ((bash (which "bash")))
1819 (setenv "SHELL" bash)
1820 (setenv "CONFIG_SHELL" bash)
1822 (synopsis "Telegram messaging support for Pidgin")
1824 "Telegram-purple is a plugin for Libpurple, the communication library
1825 used by the Pidgin instant messaging client, that adds support for the
1826 Telegram messenger.")
1828 ;; Code under tgl/ (the Telegram library) is LGPLv2.1+, but the plugin
1829 ;; itself is GPLv2+.
1830 (license license:gpl2+)))
1832 ;;; messaging.scm ends here