gnu: randomjungle: Update homepage and sourc.
[jackhill/guix/guix.git] / gnu / packages / messaging.scm
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>
18 ;;;
19 ;;; This file is part of GNU Guix.
20 ;;;
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.
25 ;;;
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.
30 ;;;
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/>.
33
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))
101
102 (define-public libotr
103 (package
104 (name "libotr")
105 (version "4.1.1")
106 (source (origin
107 (method url-fetch)
108 (uri (string-append "https://otr.cypherpunks.ca/libotr-"
109 version ".tar.gz"))
110 (sha256
111 (base32
112 "1x8rliydhbibmzwdbyr7pd7n87m2jmxnqkpvaalnf4154hj1hfwb"))
113 (patches (search-patches "libotr-test-auth-fix.patch"))))
114 (build-system gnu-build-system)
115 (propagated-inputs
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")
120 (description
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))))
132
133 (define-public libsignal-protocol-c
134 (package
135 (name "libsignal-protocol-c")
136 (version "2.3.2")
137 (source (origin
138 (method url-fetch)
139 (uri (string-append "https://github.com/WhisperSystems/"
140 "libsignal-protocol-c/archive/v" version
141 ".tar.gz"))
142 (file-name (string-append name "-" version ".tar.gz"))
143 (sha256
144 (base32
145 "0380hl6fw3ppf265fg897pyrpqygpx4m9j8ifq118bim8lq6z0pk"))))
146 (arguments
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:
151 ("check" ,check)
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+)))
161
162 (define-public bitlbee
163 (package
164 (name "bitlbee")
165 (version "3.5.1")
166 (source (origin
167 (method url-fetch)
168 (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
169 version ".tar.gz"))
170 (sha256
171 (base32 "0sgsn0fv41rga46mih3fyv65cvfa6rvki8x92dn7bczbi7yxfdln"))))
172 (build-system gnu-build-system)
173 (native-inputs `(("pkg-config" ,pkg-config)
174 ("check" ,check)))
175 (inputs `(("glib" ,glib)
176 ("libotr" ,libotr)
177 ("gnutls" ,gnutls)
178 ("python" ,python-2)
179 ("perl" ,perl)))
180 (arguments
181 `(#:phases
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))))
189 (replace 'configure
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"))
196 "--otr=1")))))))
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))))
206
207 (define-public bitlbee-discord
208 (package
209 (name "bitlbee-discord")
210 (version "0.4.1")
211 (source (origin
212 (method url-fetch)
213 (uri
214 (string-append "https://github.com/sm00th/bitlbee-discord/"
215 "archive/" version ".tar.gz"))
216 (file-name (git-file-name name version))
217 (sha256
218 (base32
219 "1bwqxlg6fwj3749y7w69n9jwsdzf5nl9xqiszbpv9k8x1422i1y1"))))
220 (build-system gnu-build-system)
221 (arguments
222 `(#:phases
223 (modify-phases %standard-phases
224 (add-after 'unpack 'autogen
225 (lambda _
226 (let ((sh (which "sh")))
227 (substitute* "autogen.sh" (("/bin/sh") sh))
228 (setenv "CONFIG_SHELL" sh)
229 (zero? (system* "./autogen.sh")))))
230 (replace 'configure
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)
240 ("texinfo" ,texinfo)
241 ("libtool" ,libtool)
242 ("bitlbee" ,bitlbee) ;needs bitlbee headers
243 ("bash" ,bash)))
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+)))
249
250 (define-public hexchat
251 (package
252 (name "hexchat")
253 (version "2.14.2")
254 (source (origin
255 (method url-fetch)
256 (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
257 version ".tar.xz"))
258 (sha256
259 (base32
260 "064nq151nzsljv97dmkifyl162d2738vbgvm1phx7yv04pjvk4kp"))))
261 (build-system meson-build-system)
262 (native-inputs `(("gettext" ,gettext-minimal)
263 ("perl" ,perl)
264 ("pkg-config" ,pkg-config)))
265 (inputs `(("dbus-glib" ,dbus-glib)
266 ("dbus" ,dbus)
267 ("enchant" ,enchant)
268 ("glib:bin" ,glib "bin") ;need glib-genmarshal
269 ("gtk" ,gtk+-2)
270 ("libcanberra" ,libcanberra)
271 ("libnotify" ,libnotify)
272 ("libproxy" ,libproxy)
273 ("openssl" ,openssl)
274
275 ;; Bindings for add-on scripts.
276 ("luajit" ,luajit)
277 ("perl-xml-parser" ,perl-xml-parser)
278 ("python-2" ,python-2)))
279 (arguments
280 `(#:phases
281 (modify-phases %standard-phases
282 (add-after 'unpack 'skip-desktop-database-updates
283 (lambda _
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:")
290 "if False:"))
291 #t)))))
292 (synopsis "Graphical IRC Client")
293 (description
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+)))
301
302 (define-public ngircd
303 (package
304 (name "ngircd")
305 (version "24")
306 (source (origin
307 (method url-fetch)
308 (uri (string-append "https://arthur.barton.de/pub/ngircd/ngircd-"
309 version ".tar.xz"))
310 (sha256
311 (base32
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)
317 ("expect" ,expect)
318 ("inetutils" ,inetutils)))
319 ;; XXX Add libident.
320 (inputs `(("zlib" ,zlib)
321 ("libwrap" ,tcp-wrappers)
322 ("gnutls" ,gnutls)
323 ,@(if (string-suffix? "-linux"
324 (or (%current-target-system)
325 (%current-system)))
326 `(("linux-pam" ,linux-pam))
327 '())))
328 (arguments
329 `(#:configure-flags
330 '("--with-gnutls" "--with-iconv" "--enable-ipv6" "--with-tcp-wrappers"
331 ,@(if (string-suffix? "-linux"
332 (or (%current-target-system)
333 (%current-system)))
334 '("--with-pam")
335 '()))
336 #:phases
337 (modify-phases %standard-phases
338 ;; Necessary for the test suite.
339 (add-after 'configure 'post-configure
340 (lambda _
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"
346 (lambda ()
347 (display
348 (string-append
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
356 ;; 'make' instead.
357 (("getpid.sh sh") "getpid.sh make")))))))
358 (home-page "https://ngircd.barton.de/")
359 (synopsis "Lightweight Internet Relay Chat server for small networks")
360 (description
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
364 authentication.")
365 (license license:gpl2+)))
366
367 (define-public pidgin
368 (package
369 (name "pidgin")
370 (version "2.12.0")
371 (source
372 (origin
373 (method url-fetch)
374 (uri (string-append "mirror://sourceforge/pidgin/Pidgin/"
375 version "/" name "-" version ".tar.bz2"))
376 (sha256
377 (base32
378 "1y5p2mq3bfw35b66jsafmbva0w5gg1k99y9z8fyp3jfksqv3agcc"))
379 (patches (search-patches "pidgin-add-search-path.patch"))))
380 (build-system glib-or-gtk-build-system)
381 (native-inputs
382 `(("pkg-config" ,pkg-config)
383 ("check" ,check)
384 ("intltool" ,intltool)
385 ("gconf" ,gconf)
386 ("python" ,python-2)
387 ("doxygen" ,doxygen)))
388 (inputs
389 `(("gtk+" ,gtk+-2)
390 ("libgcrypt" ,libgcrypt)
391 ("gnutls" ,gnutls)
392 ("cyrus-sasl" ,cyrus-sasl)
393 ("dbus" ,dbus)
394 ("dbus-glib" ,dbus-glib)
395 ("python2-dbus" ,python2-dbus)
396 ("libidn" ,libidn)
397 ("libltdl" ,libltdl)
398 ("libxml2" ,libxml2)
399 ;; TODO: gstreamer: patches needed to support gstreamer-1.0 or later
400 ;; TODO: farstream
401 ;; TODO: meanwhile
402 ;; TODO: network-manager
403 ;; TODO: gtkspell
404 ;; TODO: libxephyr
405 ;; TODO: libgadu
406 ("libxslt" ,libxslt)
407 ("avahi" ,avahi)
408 ("ncurses" ,ncurses)
409 ("sqlite" ,sqlite)
410 ("libice" ,libice)
411 ("libsm" ,libsm)
412 ("libxscrnsaver" ,libxscrnsaver)
413 ("startup-notification" ,startup-notification)))
414 (arguments
415 `(#:configure-flags
416 (list "--disable-gtkspell"
417 "--disable-tcl"
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")
425 "/include"))))
426 (native-search-paths
427 (list (search-path-specification
428 (variable "PURPLE_PLUGIN_PATH")
429 (files (list (string-append "lib/purple-"
430 (version-major version))
431 "lib/pidgin")))))
432 (home-page "http://www.pidgin.im/")
433 (synopsis "Graphical multi-protocol instant messaging client")
434 (description
435 "Pidgin is a modular instant messaging client that supports many popular
436 chat protocols.")
437 (license
438 (list
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.")))))
449
450 (define-public pidgin-otr
451 (package
452 (name "pidgin-otr")
453 (version "4.0.2")
454 (source (origin
455 (method url-fetch)
456 (uri (string-append "https://otr.cypherpunks.ca/"
457 name "-" version ".tar.gz"))
458 (sha256
459 (base32
460 "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl"))))
461 (build-system gnu-build-system)
462 (native-inputs
463 `(("pkg-config" ,pkg-config)
464 ("intltool" ,intltool)))
465 (inputs
466 `(("pidgin" ,pidgin)
467 ("libotr" ,libotr)
468 ("libgpg-error" ,libgpg-error)
469 ("libgcrypt" ,libgcrypt)
470 ("glib" ,glib)
471 ("gtk+" ,gtk+-2)))
472 (home-page "https://otr.cypherpunks.ca/")
473 (synopsis "Off-the-Record Messaging plugin for Pidgin")
474 (description
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
485 compromised.")
486 (license license:gpl2)))
487
488 (define-public znc
489 (package
490 (name "znc")
491 (version "1.7.1")
492 (source (origin
493 (method url-fetch)
494 (uri (string-append "http://znc.in/releases/archive/znc-"
495 version ".tar.gz"))
496 (sha256
497 (base32
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)
502 (arguments
503 `(#:phases
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")
509 "googletest")
510 #t)))
511 #:configure-flags '("--enable-python"
512 "--enable-perl"
513 "--enable-cyrus"
514 "--with-gmock=googletest/googlemock"
515 "--with-gtest=googletest/googletest")
516 #:test-target "test"))
517 (native-inputs
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"))
524 (origin
525 (method git-fetch)
526 (uri (git-reference
527 (url "https://github.com/google/googletest")
528 (commit commit)))
529 (file-name (git-file-name "googletest-for-znc" commit))
530 (sha256
531 (base32
532 "0ya36n8d62zbxk6p22yffgx43mqhx2fz41gqqwbpdshjryf3wvxj")))))
533 ("pkg-config" ,pkg-config)
534 ("perl" ,perl)
535 ("python" ,python)))
536 (inputs
537 `(("openssl" ,openssl)
538 ("zlib" ,zlib)
539 ("icu4c" ,icu4c)
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)))
548
549 (define-public python-nbxmpp
550 (package
551 (name "python-nbxmpp")
552 (version "0.6.8")
553 (source
554 (origin
555 (method url-fetch)
556 (uri (pypi-uri "nbxmpp" version))
557 (sha256
558 (base32
559 "1iip8ijxp86fx4bl1h67p2lp02p2zm1ga2p3q43nv30smj54nawc"))))
560 (build-system python-build-system)
561 (arguments
562 `(#:tests? #f)) ; no tests
563 (home-page "https://dev.gajim.org/gajim/python-nbxmpp")
564 (synopsis "Non-blocking Jabber/XMPP module")
565 (description
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+)))
570
571 (define-public python2-nbxmpp
572 (package-with-python2 python-nbxmpp))
573
574 (define-public gajim
575 (package
576 (name "gajim")
577 (version "1.1.0")
578 (source (origin
579 (method url-fetch)
580 (uri (string-append "https://gajim.org/downloads/"
581 (version-major+minor version)
582 "/gajim-" version ".tar.bz2"))
583 (sha256
584 (base32
585 "1qis8vs7y7g1zn5i5dshwrszidc22qpflycwb4nixvp9lbmkq0va"))))
586 (build-system python-build-system)
587 (arguments
588 `(#:test-target "test_nogui"
589 #:phases
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")))
594 (for-each
595 (lambda (name)
596 (let ((file (string-append out "/bin/" name))
597 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
598 (wrap-program file
599 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
600 '("gajim" "gajim-remote" "gajim-history-manager")))
601 #t))
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
612 out "/lib/python"
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")))
618 #t))
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")
622 "/bin/gajim")
623 ;; For GtkFileChooserDialog.
624 `("GSETTINGS_SCHEMA_DIR" =
625 (,(string-append (assoc-ref inputs "gtk+")
626 "/share/glib-2.0/schemas"))))
627 #t)))))
628 (native-inputs
629 `(("intltool" ,intltool)
630 ("python-docutils" ,python-docutils)
631 ("xorg-server" ,xorg-server)))
632 (inputs
633 `(("adwaita-icon-theme" ,adwaita-icon-theme)
634 ("gnome-keyring" ,gnome-keyring)
635 ("gtk+" ,gtk+)
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)))
659
660 (define-public dino
661 ;; The only release tarball is for version 0.0, but it is very old and fails
662 ;; to build.
663 (let ((commit "f25fadde2d6c9492b9cafe2cddbcc7b966942e47")
664 (revision "3"))
665 (package
666 (name "dino")
667 (version (string-append "0.0-" revision "." (string-take commit 9)))
668 (source (origin
669 (method git-fetch)
670 (uri (git-reference
671 (url "https://github.com/dino/dino.git")
672 (commit commit)))
673 (file-name (string-append name "-" version "-checkout"))
674 (sha256
675 (base32
676 "1nhzrw3pbpybn9qclckk6z427vbgnqd0y1l63zd1rfw4zw099mzs"))))
677 (build-system cmake-build-system)
678 (arguments
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:)
685 (guix build utils))
686 #:imported-modules (,@%gnu-build-system-modules
687 (guix build cmake-build-system)
688 (guix build glib-or-gtk-build-system))
689 #:phases
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")
702 #t)))
703 (add-after 'install 'glib-or-gtk-wrap
704 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
705 (inputs
706 `(("libgee" ,libgee)
707 ("libsignal-protocol-c" ,libsignal-protocol-c)
708 ("libgcrypt" ,libgcrypt)
709 ("libsoup" ,libsoup)
710 ("sqlite" ,sqlite)
711 ("gpgme" ,gpgme)
712 ("gtk+" ,gtk+)
713 ("glib-networking" ,glib-networking)
714 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
715 (native-inputs
716 `(("pkg-config" ,pkg-config)
717 ("libsignal-protocol-c-source" ,(package-source libsignal-protocol-c))
718 ("glib" ,glib "bin")
719 ("vala" ,vala)
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+))))
726
727 (define-public prosody
728 (package
729 (name "prosody")
730 (version "0.10.2")
731 (source (origin
732 (method url-fetch)
733 (uri (string-append "https://prosody.im/downloads/source/"
734 "prosody-" version ".tar.gz"))
735 (sha256
736 (base32
737 "13knr7izscw0zx648b9582dx11aap4cq9bzfiqh5ykd7wwsz1dbm"))))
738 (build-system gnu-build-system)
739 (arguments
740 `(#:tests? #f ; no "check" target
741 #:configure-flags (list "--no-example-certs")
742 #:modules ((ice-9 match)
743 (srfi srfi-1)
744 (guix build gnu-build-system)
745 (guix build utils))
746 #:phases
747 (modify-phases %standard-phases
748 (add-after 'unpack 'fix-configure-script
749 (lambda _
750 ;; The configure script aborts when it encounters unexpected
751 ;; arguments. Make it more tolerant.
752 (substitute* "configure"
753 (("exit 1") ""))
754 #t))
755 (add-after 'unpack 'fix-makefile
756 (lambda _
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"))
762 #t))
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
770 ((label . directory)
771 (if (string-prefix? "lua" label)
772 directory #f)))
773 inputs)))
774 (lua-path (string-join
775 (map (lambda (path)
776 (string-append
777 path "/share/lua/5.1/?.lua;"
778 path "/share/lua/5.1/?/?.lua"))
779 (cons out deps))
780 ";"))
781 (lua-cpath (string-join
782 (map (lambda (path)
783 (string-append
784 path "/lib/lua/5.1/?.so;"
785 path "/lib/lua/5.1/?/?.so"))
786 (cons out deps))
787 ";"))
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)
794 (wrap-program file
795 `("LUA_PATH" ";" = (,lua-path))
796 `("LUA_CPATH" ";" = (,lua-cpath))
797 `("PATH" ":" prefix ,path)))
798 (find-files bin ".*"))
799 #t))))))
800 (inputs
801 `(("libidn" ,libidn)
802 ("openssl" ,openssl)
803 ;; Lua 5.1 is still recommended for production usage.
804 ;; See https://prosody.im/doc/packagers.
805 ("lua" ,lua-5.1)
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
817 protocols.")
818 (license license:x11)))
819
820 (define-public libtoxcore
821 (let ((revision "2")
822 (commit "bf69b54f64003d160d759068f4816b2d9b2e1e21"))
823 (package
824 (name "libtoxcore")
825 (version (string-append "0.0.0" "-"
826 revision "."(string-take commit 7)))
827 (source (origin
828 (method git-fetch)
829 (uri (git-reference
830 (url "https://github.com/irungentoo/toxcore.git")
831 (commit commit)))
832 (file-name (string-append name "-" version "-checkout"))
833 (sha256
834 (base32
835 "11lqra4yd7v293cp286ynff5lqz1pprzg8vn3wq6vryj08g88zqb"))))
836 (build-system gnu-build-system)
837 (arguments `(#:tests? #f)) ; FIXME: tests hang, some fail.
838 (native-inputs
839 `(("autoconf" ,autoconf)
840 ("automake" ,automake)
841 ("libtool" ,libtool)
842 ("check" ,check)
843 ("pkg-config" ,pkg-config)))
844 (inputs
845 `(("libsodium" ,libsodium)
846 ("opus" ,opus)
847 ("libvpx" ,libvpx)))
848 (synopsis "Library for the Tox encrypted messenger protocol")
849 (description
850 "C library implementation of the Tox encrypted messenger protocol.")
851 (license license:gpl3+)
852 (home-page "https://tox.chat"))))
853
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
858 (package
859 (name "c-toxcore")
860 (version "0.2.8")
861 (source
862 (origin
863 (method git-fetch)
864 (uri (git-reference
865 (url "https://github.com/TokTok/c-toxcore.git")
866 (commit (string-append "v" version))))
867 (file-name (git-file-name name version))
868 (sha256
869 (base32
870 "0xgnraysz25fbws5zwjk92mwnl8k1yih701qam8kgm3rxh50kyhm"))))
871 (arguments
872 `(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable
873 ; for now.
874 (build-system cmake-build-system)
875 (native-inputs
876 `(("pkg-config" ,pkg-config)))
877 (propagated-inputs
878 `(("libsodium" ,libsodium)
879 ("opus" ,opus)
880 ("libvpx" ,libvpx)))
881 (home-page "https://tox.chat")
882 (synopsis "Library for the Tox encrypted messenger protocol")
883 (description
884 "Official fork of the C library implementation of the Tox encrypted
885 messenger protocol.")
886 (license license:gpl3+)))
887
888 (define-public utox
889 (package
890 (name "utox")
891 (version "0.17.0")
892 (source
893 (origin
894 (method git-fetch)
895 (uri (git-reference
896 (url "https://github.com/uTox/uTox.git")
897 (commit "v0.17.0")
898 (recursive? #t))) ;; Needed for 'minini' git submodule.
899 (file-name (string-append name "-" version "-checkout"))
900 (sha256
901 (base32
902 "12wbq883il7ikldayh8hm0cjfrkp45vn05xx9s1jbfz6gmkidyar"))))
903 (build-system cmake-build-system)
904 (arguments
905 `(#:configure-flags '("-DENABLE_TESTS=on")
906 #:phases
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"
911 (("libgtk-3.so")
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")
917 "/bin/utox")
918 ;; For GtkFileChooserDialog.
919 `("GSETTINGS_SCHEMA_DIR" =
920 (,(string-append (assoc-ref inputs "gtk+")
921 "/share/glib-2.0/schemas")))))))))
922 (inputs
923 `(("dbus" ,dbus)
924 ("filteraudio" ,filteraudio)
925 ("fontconfig" ,fontconfig)
926 ("freetype" ,freetype)
927 ("libsodium" ,libsodium)
928 ("c-toxcore" ,c-toxcore)
929 ("gtk+" ,gtk+)
930 ("libvpx" ,libvpx)
931 ("libx11" ,libx11)
932 ("libxext" ,libxext)
933 ("libxrender" ,libxrender)
934 ("openal" ,openal)
935 ("v4l-utils" ,v4l-utils)))
936 (native-inputs
937 `(("check" ,check)
938 ("pkg-config" ,pkg-config)))
939 (synopsis "Lightweight Tox client")
940 (description
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)))
945
946 (define-public qtox
947 (package
948 (name "qtox")
949 (version "1.16.3")
950 (source (origin
951 (method url-fetch)
952 (uri (string-append "https://github.com/qTox/qTox/archive/v"
953 version ".tar.gz"))
954 (sha256
955 (base32
956 "10n3cgw9xaqin9la8wpd8v83bkjmimicgbyp5ninsdgsrgky4hmq"))
957 (file-name (string-append name "-" version ".tar.gz"))))
958 (build-system cmake-build-system)
959 (arguments
960 '(#:phases
961 (modify-phases %standard-phases
962 (add-after 'unpack 'fix-reproducibility-issues
963 (lambda _
964 (substitute* "src/main.cpp"
965 (("__DATE__") "\"\"")
966 (("__TIME__") "\"\"")
967 (("TIMESTAMP") "\"\""))
968 #t))
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/"))))))))))
977 (inputs
978 `(("ffmpeg" ,ffmpeg)
979 ("filteraudio" ,filteraudio)
980 ("glib" ,glib)
981 ("gtk+" ,gtk+-2)
982 ("libsodium" ,libsodium)
983 ("c-toxcore" ,c-toxcore)
984 ("libvpx" ,libvpx)
985 ("libxscrnsaver" ,libxscrnsaver)
986 ("libx11" ,libx11)
987 ("libexif" ,libexif)
988 ("sqlite" ,sqlite)
989 ("openal" ,openal)
990 ("qrencode" ,qrencode)
991 ("qtbase" ,qtbase)
992 ("qtsvg" ,qtsvg)
993 ("sqlcipher" ,sqlcipher)))
994 (native-inputs
995 `(("pkg-config" ,pkg-config)
996 ("qmake" ,qttools)))
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+)))
1003
1004 (define-public pybitmessage
1005 (package
1006 (name "pybitmessage")
1007 (version "0.6.3.2")
1008 (source
1009 (origin
1010 (method git-fetch)
1011 (uri (git-reference
1012 (url "https://github.com/Bitmessage/PyBitmessage.git")
1013 (commit version)))
1014 (file-name (string-append name "-" version "-checkout"))
1015 (sha256
1016 (base32
1017 "1lmhbpwsqh1v93krlqqhafw2pc3y0qp8zby186yllbph6s8kdp35"))))
1018 (propagated-inputs
1019 ;; TODO:
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)))
1029 (native-inputs
1030 `(("openssl" ,openssl)))
1031 (build-system python-build-system)
1032 (arguments
1033 `(#:modules ((guix build python-build-system)
1034 (guix build utils))
1035 #:tests? #f ;no test target
1036 #:python ,python-2
1037 #:phases
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"))))
1047 #t))
1048 (add-after 'unpack 'fix-depends
1049 (lambda* (#:key inputs #:allow-other-keys)
1050 (substitute* "src/depends.py"
1051 (("libcrypto.so")
1052 (string-append (assoc-ref inputs "openssl")
1053 "/lib/libcrypto.so")))
1054 #t))
1055 (add-after 'unpack 'fix-local-files-in-paths
1056 (lambda* (#:key outputs #:allow-other-keys)
1057 (substitute* "src/proofofwork.py"
1058 (("bitmsghash.so")
1059 (string-append (assoc-ref outputs "out")
1060 "/lib/bitmsghash.so")))
1061 #t))
1062 (add-after 'unpack 'fix-pyelliptic
1063 (lambda* (#:key inputs #:allow-other-keys)
1064 (substitute* "src/pyelliptic/openssl.py"
1065 (("libcrypto.so")
1066 (string-append (assoc-ref inputs "openssl")
1067 "/lib/libcrypto.so"))
1068 (("libssl.so")
1069 (string-append (assoc-ref inputs "openssl")
1070 "/lib/libssl.so")))
1071 #t))
1072 (add-after 'unpack 'noninteractive-build
1073 ;; This applies upstream commit 4c597d3f7cf9f83a763472aa165a1a4292019f20
1074 (lambda _
1075 (substitute* "setup.py"
1076 (("except NameError")
1077 "except EOFError, NameError"))
1078 #t))
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"
1086 (system* "make")
1087 (install-file "bitmsghash.so"
1088 (string-append (assoc-ref outputs "out") "/lib")))
1089 #t)))))
1090 (license license:expat)
1091 (description
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/")))
1096
1097 (define-public ytalk
1098 (package
1099 (name "ytalk")
1100 (version "3.3.0")
1101 (source
1102 (origin
1103 (method url-fetch)
1104 (uri (string-append "ftp://ftp.ourproject.org/pub/ytalk/ytalk-"
1105 version ".tar.gz"))
1106 (sha256
1107 (base32
1108 "1d3jhnj8rgzxyxjwfa22vh45qwzjvxw1qh8fz6b7nfkj3zvk9jvf"))))
1109 (build-system gnu-build-system)
1110 (inputs
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+)))
1119
1120 (define-public gloox
1121 (package
1122 (name "gloox")
1123 (version "1.0.21")
1124 (source
1125 (origin
1126 (method url-fetch)
1127 (uri (string-append "https://camaya.net/download/gloox-"
1128 version ".tar.bz2"))
1129 (sha256
1130 (base32
1131 "1k57qgif1yii515m6jaqaibkdysfab6394bpawd2l67321f1a4rw"))))
1132 (build-system gnu-build-system)
1133 (inputs
1134 `(("libidn" ,libidn)
1135 ("gnutls" ,gnutls)
1136 ("zlib" ,zlib)))
1137 (native-inputs
1138 `(("pkg-config" ,pkg-config)))
1139 (synopsis "Portable high-level Jabber/XMPP library for C++")
1140 (description
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)))
1147
1148 (define-public perl-net-psyc
1149 (package
1150 (name "perl-net-psyc")
1151 (version "1.1")
1152 (source
1153 (origin
1154 (method url-fetch)
1155 (uri (string-append "http://perlpsyc.psyc.eu/"
1156 "perlpsyc-" version ".zip"))
1157 (file-name (string-append name "-" version ".zip"))
1158 (sha256
1159 (base32
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.
1163 (snippet '(begin
1164 (delete-file "contrib/psycmp3")
1165 #t))))
1166 (build-system perl-build-system)
1167 (inputs
1168 `(("perl-curses" ,perl-curses)
1169 ("perl-io-socket-ssl" ,perl-io-socket-ssl)))
1170 (arguments
1171 `(#:phases
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.
1177 (replace 'build
1178 (lambda _
1179 (zero? (system* "make" "manuals"))))
1180 (replace 'install
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))))
1190
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)
1202 #t)))
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)
1211 (wrap-program file
1212 `("PERL5LIB" ":" prefix (,path))))
1213 (find-files bin "\\.*$"))
1214 #t))))))
1215 (description
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:
1227 license:agpl3+))))
1228
1229 (define-public libpsyc
1230 (package
1231 (name "libpsyc")
1232 (version "20160913")
1233 (source (origin
1234 (method url-fetch)
1235 (uri (string-append "http://www.psyced.org/files/"
1236 name "-" version ".tar.xz"))
1237 (sha256
1238 (base32
1239 "14q89fxap05ajkfn20rnhc6b1h4i3i2adyr7y6hs5zqwb2lcmc1p"))))
1240 (build-system gnu-build-system)
1241 (native-inputs
1242 `(("perl" ,perl)
1243 ("netcat" ,netcat)
1244 ("procps" ,procps)))
1245 (arguments
1246 `(#:make-flags
1247 (list "CC=gcc"
1248 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1249 #:phases
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")
1258 (description
1259 "@code{libpsyc} is a PSYC library in C which implements
1260 core aspects of PSYC, useful for all kinds of clients and servers
1261 including psyced.")
1262 (synopsis "PSYC library in C")
1263 (license license:agpl3+)))
1264
1265 ;; This commit removes the historic bundled pcre and makes psyclpc reproducible.
1266 (define-public psyclpc
1267 (let* ((commit "61cf9aa81297085e5c40170fd01221c752f8deba")
1268 (revision "2"))
1269 (package
1270 (name "psyclpc")
1271 (version (string-append "20160821-" revision "." (string-take commit 7)))
1272 (source (origin
1273 (method git-fetch)
1274 (uri (git-reference
1275 (url "git://git.psyced.org/git/psyclpc")
1276 (commit commit)))
1277 (file-name (string-append name "-" version "-checkout"))
1278 (sha256
1279 (base32
1280 "1viwqymbhn3cwvx0zl58rlzl5gw47zxn0ldg2nbi55ghm5zxl1z5"))))
1281 (build-system gnu-build-system)
1282 (arguments
1283 `(#:tests? #f ; There are no tests/checks.
1284 #:configure-flags
1285 ;; If you have questions about this part, look at
1286 ;; "src/settings/psyced" and the ebuild.
1287 (list
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")
1299 "/opt/psyced/bin")
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")
1305 "/opt/psyced/run"))
1306 #:phases
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.
1311 (lambda _
1312 (chdir "src")
1313 (setenv "CONFIG_SHELL" (which "sh"))
1314 (setenv "SHELL" (which "sh"))
1315 #t)))
1316 #:make-flags (list "install-all")))
1317 (inputs
1318 `(("zlib" ,zlib)
1319 ("openssl" ,openssl)
1320 ("pcre" ,pcre)))
1321 (native-inputs
1322 `(("pkg-config" ,pkg-config)
1323 ("bison" ,bison)
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")
1330 (description
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
1335 many bug fixes.")
1336 (license license:gpl2))))
1337
1338 (define-public loudmouth
1339 (package
1340 (name "loudmouth")
1341 (version "1.5.3")
1342 (source
1343 (origin
1344 (method url-fetch)
1345 (uri (string-append "https://mcabber.com/files/loudmouth/"
1346 name "-" version ".tar.bz2"))
1347 (sha256
1348 (base32
1349 "0b6kd5gpndl9nzis3n6hcl0ldz74bnbiypqgqa1vgb0vrcar8cjl"))))
1350 (build-system gnu-build-system)
1351 (inputs
1352 `(("glib" ,glib)
1353 ("gnutls" ,gnutls)
1354 ("libidn" ,libidn)))
1355 (native-inputs
1356 `(("pkg-config" ,pkg-config)
1357 ("check" ,check)
1358 ("glib" ,glib "bin") ; gtester
1359 ("gtk-doc" ,gtk-doc)))
1360 (home-page "https://mcabber.com/")
1361 (description
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
1365 protocol allows.")
1366 (synopsis "Asynchronous XMPP library")
1367 ;; The files have LGPL2.0+ headers, but COPYING specifies LGPL2.1.
1368 (license license:lgpl2.0+)))
1369
1370 (define-public mcabber
1371 (package
1372 (name "mcabber")
1373 (version "1.1.0")
1374 (source
1375 (origin
1376 (method url-fetch)
1377 (uri (string-append "https://mcabber.com/files/"
1378 name "-" version ".tar.bz2"))
1379 (sha256
1380 (base32
1381 "1ggh865p1rf10ffsnf4g6qv9i8bls36dxdb1nzs5r9vdqci2rz04"))))
1382 (build-system gnu-build-system)
1383 (arguments
1384 '(#:configure-flags (list "--enable-otr"
1385 "--enable-aspell")))
1386 (inputs
1387 `(("gpgme" ,gpgme)
1388 ("libotr" ,libotr)
1389 ("aspell" ,aspell)
1390 ("libidn" ,libidn)
1391 ("glib" ,glib)
1392 ("ncurses" ,ncurses)
1393 ("loudmouth" ,loudmouth)))
1394 (native-inputs
1395 `(("pkg-config" ,pkg-config)))
1396 (home-page "https://mcabber.com")
1397 (description
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+)))
1404
1405 (define-public freetalk
1406 (package
1407 (name "freetalk")
1408 (version "4.1")
1409 (source (origin
1410 (method url-fetch)
1411 (uri (string-append "mirror://gnu/freetalk/freetalk-"
1412 version ".tar.gz"))
1413 (sha256
1414 (base32
1415 "1rmrn7a1bb7vm26yaklrvx008a9qhwc32s57dwrlf40lv9gffwny"))))
1416 (build-system gnu-build-system)
1417 (arguments
1418 `(#:phases
1419 (modify-phases %standard-phases
1420 (add-after 'unpack 'autogen
1421 (lambda _
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")
1431 `("PATH" ":" prefix
1432 ,(map (lambda (dir)
1433 (string-append dir "/bin"))
1434 (list bash coreutils less))))
1435 #t))))))
1436 (native-inputs
1437 `(("autoconf" ,autoconf)
1438 ("automake" ,automake)
1439 ("pkg-config" ,pkg-config)
1440 ("texinfo" ,texinfo)))
1441 (inputs
1442 `(("bash" ,bash)
1443 ("glib" ,glib)
1444 ("guile" ,guile-2.0)
1445 ("less" ,less)
1446 ("loudmouth" ,loudmouth)
1447 ("readline" ,readline)))
1448 (synopsis "Extensible console-based Jabber client")
1449 (description
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+)))
1456
1457 (define-public libmesode
1458 (package
1459 (name "libmesode")
1460 (version "0.9.2")
1461 (source (origin
1462 (method git-fetch)
1463 (uri (git-reference
1464 (url "https://github.com/boothj5/libmesode.git")
1465 (commit version)))
1466 (file-name (git-file-name name version))
1467 (sha256
1468 (base32
1469 "06f5nfaypvxrbsinxa1k2vrxrs7kqmg38g4wwwk5d63hpn1pj8ak"))))
1470 (build-system gnu-build-system)
1471 (inputs
1472 `(("expat" ,expat)
1473 ("openssl" ,openssl)))
1474 (native-inputs
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")
1484 ;; Dual licensed.
1485 (license (list license:gpl3+ license:x11))))
1486
1487 (define-public libstrophe
1488 (package
1489 (name "libstrophe")
1490 (version "0.9.2")
1491 (source (origin
1492 (method url-fetch)
1493 (uri (string-append "https://github.com/strophe/libstrophe/archive/"
1494 version ".tar.gz"))
1495 (file-name (string-append name "-" version ".tar.gz"))
1496 (sha256
1497 (base32
1498 "0vxfcyfnhnlaj6spm2b0ljw5i3knbphy6mvzpl5zv9b52ny4b08m"))))
1499 (build-system gnu-build-system)
1500 (inputs
1501 `(("expat" ,expat)
1502 ("openssl" ,openssl)))
1503 (native-inputs
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")
1513 ;; Dual licensed.
1514 (license (list license:gpl3+ license:x11))))
1515
1516 (define-public profanity
1517 (package
1518 (name "profanity")
1519 (version "0.5.1")
1520 (source (origin
1521 (method url-fetch)
1522 (uri (string-append "http://www.profanity.im/profanity-"
1523 version ".tar.gz"))
1524 (sha256
1525 (base32
1526 "1f7ylw3mhhnii52mmk40hyc4kqhpvjdr3hmsplzkdhsfww9kflg3"))))
1527 (build-system gnu-build-system)
1528 (inputs
1529 `(("curl" ,curl)
1530 ("expat" ,expat)
1531 ("glib" ,glib)
1532 ("gpgme" ,gpgme)
1533 ("libmesode" ,libmesode)
1534 ("libotr" ,libotr)
1535 ("ncurses" ,ncurses)
1536 ("openssl" ,openssl)
1537 ("readline" ,readline)))
1538 (native-inputs
1539 `(("autoconf" ,autoconf)
1540 ("autoconf-archive" ,autoconf-archive)
1541 ("automake" ,automake)
1542 ("cmocka" ,cmocka)
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+)))
1550
1551 (define-public libircclient
1552 (package
1553 (name "libircclient")
1554 (version "1.10")
1555 (source
1556 (origin
1557 (method url-fetch)
1558 (uri (string-append "mirror://sourceforge/libircclient/libircclient/"
1559 version "/libircclient-" version ".tar.gz"))
1560 (sha256
1561 (base32
1562 "0b9wa0h3xc31wpqlvgxgnvqp5wgx3kwsf5s9432m5cj8ycx6zcmv"))))
1563 (build-system gnu-build-system)
1564 (inputs
1565 `(("openssl" ,openssl)))
1566 (arguments
1567 `(#:configure-flags
1568 (list (string-append "--libdir="
1569 (assoc-ref %outputs "out") "/lib")
1570 "--enable-shared"
1571 "--enable-ipv6"
1572 "--enable-openssl")
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+)))
1581
1582 (define-public toxic
1583 (package
1584 (name "toxic")
1585 (version "0.8.2")
1586 (source (origin
1587 (method url-fetch)
1588 (uri (string-append "https://github.com/JFreegman/toxic/archive/v"
1589 version ".tar.gz"))
1590 (sha256
1591 (base32
1592 "1dx6z7k0zpsd7dpysdy23f0hnm49qlikb0mq8fg0y01dsz9vxgak"))
1593 (file-name (git-file-name name version))))
1594 (build-system gnu-build-system)
1595 (arguments
1596 `(#:tests? #f ; no tests
1597 #:make-flags
1598 (list
1599 "CC=gcc"
1600 (string-append "PREFIX="
1601 (assoc-ref %outputs "out")))
1602 #:phases
1603 (modify-phases %standard-phases
1604 (delete 'configure)
1605 (add-before 'build 'enable-python-scripting
1606 (lambda _
1607 (setenv "ENABLE_PYTHON" "1")
1608 #t)))))
1609 (inputs
1610 `(("c-toxcore" ,c-toxcore)
1611 ("curl" ,curl)
1612 ("freealut" ,freealut)
1613 ("gdk-pixbuf" ,gdk-pixbuf) ; for libnotify.pc
1614 ("libconfig" ,libconfig)
1615 ("libnotify" ,libnotify)
1616 ("libpng" ,libpng)
1617 ("libvpx" ,libvpx)
1618 ("libx11" ,libx11)
1619 ("ncurses" ,ncurses)
1620 ("openal" ,openal)
1621 ("python" ,python)
1622 ("qrencode" ,qrencode)))
1623 (native-inputs
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+)))
1631
1632 (define-public libqmatrixclient
1633 (package
1634 (name "libqmatrixclient")
1635 (version "0.4.0")
1636 (source
1637 (origin
1638 (method git-fetch)
1639 (uri (git-reference
1640 (url "https://github.com/QMatrixClient/libqmatrixclient")
1641 (commit (string-append "v" version))))
1642 (file-name (git-file-name name version))
1643 (sha256
1644 (base32
1645 "1llzqjagvp91kcg26q5c4qw9aaz7wna3rh6k06rc3baivrjqf3cn"))))
1646 (build-system cmake-build-system)
1647 (inputs
1648 `(("qtbase" ,qtbase)))
1649 (arguments
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+)))
1659
1660 (define-public quaternion
1661 (package
1662 (name "quaternion")
1663 (version "0.0.9.3")
1664 (source
1665 (origin
1666 (method git-fetch)
1667 (uri (git-reference
1668 (url "https://github.com/QMatrixClient/Quaternion")
1669 (commit (string-append "v" version))))
1670 (file-name (git-file-name name version))
1671 (sha256
1672 (base32
1673 "1hr9zqf301rg583n9jv256vzj7y57d8qgayk7c723bfknf1s6hh3"))))
1674 (build-system cmake-build-system)
1675 (inputs
1676 `(("libqmatrixclient" ,libqmatrixclient)
1677 ("qtbase" ,qtbase)
1678 ("qtdeclarative" ,qtdeclarative)
1679 ("qtquickcontrols" ,qtquickcontrols)
1680 ("qtsvg" ,qtsvg)
1681 ("qttools" ,qttools)))
1682 (arguments
1683 `(#:tests? #f ; No tests
1684 #:phases
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")
1689 "/bin/quaternion")
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)
1696 "/lib/qt5/qml"))
1697 '("qtdeclarative" "qtquickcontrols"))))
1698 #t)))))
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
1707
1708 (define-public hangups
1709 (package
1710 (name "hangups")
1711 (version "0.4.6")
1712 (source
1713 (origin
1714 (method url-fetch)
1715 (uri (pypi-uri "hangups" version))
1716 (sha256
1717 (base32 "0mvpfd5dc3zgcvwfidcd2qyn59xl5biv728mxifw0ls5rzkc9chs"))))
1718 (build-system python-build-system)
1719 (arguments
1720 `(#:phases
1721 (modify-phases %standard-phases
1722 (add-before 'build 'relax-dependencies
1723 ;; Relax overly strict package version specifications.
1724 (lambda _
1725 (substitute* "setup.py"
1726 (("==") ">="))
1727 #t)))))
1728 (propagated-inputs
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")
1741 (description
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.
1744
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)))
1749
1750 (define-public telegram-purple
1751 (package
1752 (name "telegram-purple")
1753 (version "1.3.1")
1754 (home-page "https://github.com/majn/telegram-purple")
1755 (source (origin
1756 (method git-fetch)
1757 (uri (git-reference
1758 (url home-page)
1759 (commit (string-append "v" version))
1760 (recursive? #t)))
1761 (sha256
1762 (base32
1763 "0p93jpjpx7hszwffzgixw04zkrpsiyzz4za3gfr4j07krc4771fp"))
1764 (modules '((guix build utils)))
1765 (snippet
1766 '(begin
1767 (substitute* "Makefile.in"
1768 ;; By default these two directories point to Pidgin's own
1769 ;; prefix.
1770 (("^PLUGIN_DIR_PURPLE=.*")
1771 (string-append
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")
1776
1777 ;; Honor sysconfdir instead of trying to write to /etc.
1778 (("DESTDIR\\)/etc/telegram-purple")
1779 "DESTDIR)@sysconfdir@/telegram-purple"))
1780 #t))
1781 (patches (search-patches "telegram-purple-adjust-test.patch"))
1782 (file-name (git-file-name name version))))
1783 (build-system gnu-build-system)
1784 (native-inputs
1785 `(("pkg-config" ,pkg-config)
1786 ("which" ,which)))
1787 (inputs
1788 `(("pidgin" ,pidgin)
1789 ("libgcrypt" ,libgcrypt)
1790 ("libwebp" ,libwebp)
1791 ("glib" ,glib)
1792 ("gettext" ,gnu-gettext)
1793 ("gtk+" ,gtk+-2)
1794 ("zlib" ,zlib)))
1795 (arguments
1796 `(#:phases
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
1803 (lambda _
1804 (with-output-to-file "./commit.h"
1805 (lambda ()
1806 (display
1807 (string-append "//generated by guix, use version instead of "
1808 "commit\n"
1809 "#ifndef GIT_COMMIT\n"
1810 "# define GIT_COMMIT \"v"
1811 ,version "\"\n"
1812 "#endif\n"))))
1813 #t))
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.
1817 (lambda _
1818 (let ((bash (which "bash")))
1819 (setenv "SHELL" bash)
1820 (setenv "CONFIG_SHELL" bash)
1821 #t))))))
1822 (synopsis "Telegram messaging support for Pidgin")
1823 (description
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.")
1827
1828 ;; Code under tgl/ (the Telegram library) is LGPLv2.1+, but the plugin
1829 ;; itself is GPLv2+.
1830 (license license:gpl2+)))
1831
1832 ;;; messaging.scm ends here