gnu: Use HTTPS for almost all gnu.org HOME-PAGEs.
[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 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 Ricardo Wurmus <rekado@elephly.net>
7 ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
8 ;;; Copyright © 2016, 2017 <contact.ng0@cryptolab.net>
9 ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
10 ;;; Copyright © 2016, 2017 Clément Lassieur <clement@lassieur.org>
11 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
12 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
13 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
14 ;;;
15 ;;; This file is part of GNU Guix.
16 ;;;
17 ;;; GNU Guix is free software; you can redistribute it and/or modify it
18 ;;; under the terms of the GNU General Public License as published by
19 ;;; the Free Software Foundation; either version 3 of the License, or (at
20 ;;; your option) any later version.
21 ;;;
22 ;;; GNU Guix is distributed in the hope that it will be useful, but
23 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
24 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 ;;; GNU General Public License for more details.
26 ;;;
27 ;;; You should have received a copy of the GNU General Public License
28 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
29
30 (define-module (gnu packages messaging)
31 #:use-module ((guix licenses) #:prefix license:)
32 #:use-module (guix utils)
33 #:use-module (guix packages)
34 #:use-module (guix download)
35 #:use-module (guix git-download)
36 #:use-module (guix build-system gnu)
37 #:use-module (guix build-system glib-or-gtk)
38 #:use-module (guix build-system python)
39 #:use-module (guix build-system perl)
40 #:use-module (guix build-system cmake)
41 #:use-module (gnu packages)
42 #:use-module (gnu packages aidc)
43 #:use-module (gnu packages aspell)
44 #:use-module (gnu packages autotools)
45 #:use-module (gnu packages avahi)
46 #:use-module (gnu packages base)
47 #:use-module (gnu packages check)
48 #:use-module (gnu packages crypto)
49 #:use-module (gnu packages curl)
50 #:use-module (gnu packages cyrus-sasl)
51 #:use-module (gnu packages databases)
52 #:use-module (gnu packages documentation)
53 #:use-module (gnu packages enchant)
54 #:use-module (gnu packages gettext)
55 #:use-module (gnu packages gnome)
56 #:use-module (gnu packages gtk)
57 #:use-module (gnu packages xorg)
58 #:use-module (gnu packages xdisorg)
59 #:use-module (gnu packages libcanberra)
60 #:use-module (gnu packages man)
61 #:use-module (gnu packages networking)
62 #:use-module (gnu packages libidn)
63 #:use-module (gnu packages lua)
64 #:use-module (gnu packages xml)
65 #:use-module (gnu packages gnupg)
66 #:use-module (gnu packages ncurses)
67 #:use-module (gnu packages pkg-config)
68 #:use-module (gnu packages glib)
69 #:use-module (gnu packages python)
70 #:use-module (gnu packages pcre)
71 #:use-module (gnu packages perl)
72 #:use-module (gnu packages tcl)
73 #:use-module (gnu packages compression)
74 #:use-module (gnu packages check)
75 #:use-module (gnu packages admin)
76 #:use-module (gnu packages linux)
77 #:use-module (gnu packages tls)
78 #:use-module (gnu packages icu4c)
79 #:use-module (gnu packages qt)
80 #:use-module (gnu packages video)
81 #:use-module (gnu packages web)
82 #:use-module (gnu packages xiph)
83 #:use-module (gnu packages audio)
84 #:use-module (gnu packages bison)
85 #:use-module (gnu packages fontutils)
86 #:use-module (gnu packages bash)
87 #:use-module (gnu packages guile)
88 #:use-module (gnu packages less)
89 #:use-module (gnu packages readline)
90 #:use-module (gnu packages texinfo))
91
92 (define-public libotr
93 (package
94 (name "libotr")
95 (version "4.1.1")
96 (source (origin
97 (method url-fetch)
98 (uri (string-append "https://otr.cypherpunks.ca/libotr-"
99 version ".tar.gz"))
100 (sha256
101 (base32
102 "1x8rliydhbibmzwdbyr7pd7n87m2jmxnqkpvaalnf4154hj1hfwb"))
103 (patches (search-patches "libotr-test-auth-fix.patch"))))
104 (build-system gnu-build-system)
105 (propagated-inputs
106 `(("libgcrypt" ,libgcrypt))) ; libotr headers include gcrypt.h
107 (inputs `(("libgpg-error" ,libgpg-error)))
108 (native-inputs `(("perl" ,perl))) ; for the test suite
109 (synopsis "Off-the-Record (OTR) Messaging Library and Toolkit")
110 (description
111 "OTR allows you to have private conversations over instant messaging by
112 providing: (1) Encryption: No one else can read your instant messages. (2)
113 Authentication: You are assured the correspondent is who you think it is. (3)
114 Deniability: The messages you send do not have digital signatures that are
115 checkable by a third party. Anyone can forge messages after a conversation to
116 make them look like they came from you. However, during a conversation, your
117 correspondent is assured the messages he sees are authentic and
118 unmodified. (4) Perfect forward secrecy: If you lose control of your private
119 keys, no previous conversation is compromised.")
120 (home-page "https://otr.cypherpunks.ca/")
121 (license (list license:lgpl2.1 license:gpl2))))
122
123 (define-public bitlbee
124 (package
125 (name "bitlbee")
126 (version "3.5.1")
127 (source (origin
128 (method url-fetch)
129 (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
130 version ".tar.gz"))
131 (sha256
132 (base32 "0sgsn0fv41rga46mih3fyv65cvfa6rvki8x92dn7bczbi7yxfdln"))))
133 (build-system gnu-build-system)
134 (native-inputs `(("pkg-config" ,pkg-config)
135 ("check" ,check)))
136 (inputs `(("glib" ,glib)
137 ("libotr" ,libotr)
138 ("gnutls" ,gnutls)
139 ("python" ,python-2)
140 ("perl" ,perl)))
141 (arguments
142 `(#:phases (alist-cons-after
143 'install 'install-etc
144 (lambda* (#:key (make-flags '()) #:allow-other-keys)
145 (zero? (apply system* "make" "install-etc" make-flags)))
146 (alist-replace
147 'configure
148 ;; bitlbee's configure script does not tolerate many of the
149 ;; variable settings that Guix would pass to it.
150 (lambda* (#:key outputs #:allow-other-keys)
151 (zero? (system* "./configure"
152 (string-append "--prefix="
153 (assoc-ref outputs "out"))
154 "--otr=1")))
155 %standard-phases))))
156 (synopsis "IRC to instant messaging gateway")
157 (description "BitlBee brings IM (instant messaging) to IRC clients, for
158 people who have an IRC client running all the time and don't want to run an
159 additional IM client. BitlBee currently supports XMPP/Jabber (including
160 Google Talk), MSN Messenger, Yahoo! Messenger, AIM and ICQ, and the Twitter
161 microblogging network (plus all other Twitter API compatible services like
162 identi.ca and status.net).")
163 (home-page "http://www.bitlbee.org/")
164 (license (list license:gpl2+ license:bsd-2))))
165
166 (define-public hexchat
167 (package
168 (name "hexchat")
169 (version "2.12.2")
170 (source (origin
171 (method url-fetch)
172 (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
173 version ".tar.xz"))
174 (sha256
175 (base32
176 "1xnclfbrgbkqndxygi5f27q00jd7yy54jbd1061jmhxa6wzpibbd"))))
177 (build-system gnu-build-system)
178 (native-inputs `(("pkg-config" ,pkg-config)
179 ("intltool" ,intltool)))
180 (inputs `(("dbus-glib" ,dbus-glib)
181 ("dbus" ,dbus)
182 ("enchant" ,enchant)
183 ("glib:bin" ,glib "bin") ;need glib-genmarshal
184 ("gtk" ,gtk+-2)
185 ("libcanberra" ,libcanberra)
186 ("libnotify" ,libnotify)
187 ("openssl" ,openssl)
188
189 ;; Bindings for add-on scripts.
190 ("luajit" ,luajit)
191 ("perl-xml-parser" ,perl-xml-parser)
192 ("python-2" ,python-2)))
193 (synopsis "Graphical IRC Client")
194 (description
195 "HexChat lets you connect to multiple IRC networks at once. The main
196 window shows the list of currently connected networks and their channels, the
197 current conversation and the list of users. It uses colors to differentiate
198 between users and to highlight messages. It checks spelling using available
199 dictionaries. HexChat can be extended with multiple addons.")
200 (home-page "http://hexchat.net/")
201 (license license:gpl2+)))
202
203 (define-public ngircd
204 (package
205 (name "ngircd")
206 (version "24")
207 (source (origin
208 (method url-fetch)
209 (uri (string-append "https://arthur.barton.de/pub/ngircd/ngircd-"
210 version ".tar.xz"))
211 (sha256
212 (base32
213 "020h9d1awyxqr0l42x1fhs47q7cmm17fdxzjish8p2kq23ma0gqp"))
214 (patches (search-patches "ngircd-handle-zombies.patch"))))
215 (build-system gnu-build-system)
216 ;; Needed for the test suite.
217 (native-inputs `(("procps" ,procps)
218 ("expect" ,expect)
219 ("inetutils" ,inetutils)))
220 ;; XXX Add libident.
221 (inputs `(("zlib" ,zlib)
222 ("libwrap" ,tcp-wrappers)
223 ("gnutls" ,gnutls)
224 ,@(if (string-suffix? "-linux"
225 (or (%current-target-system)
226 (%current-system)))
227 `(("linux-pam" ,linux-pam))
228 '())))
229 (arguments
230 `(#:configure-flags
231 '("--with-gnutls" "--with-iconv" "--enable-ipv6" "--with-tcp-wrappers"
232 ,@(if (string-suffix? "-linux"
233 (or (%current-target-system)
234 (%current-system)))
235 '("--with-pam")
236 '()))
237 #:phases
238 (modify-phases %standard-phases
239 ;; Necessary for the test suite.
240 (add-after 'configure 'post-configure
241 (lambda _
242 (substitute* "src/ngircd/Makefile"
243 (("/bin/sh") (which "sh")))
244 ;; The default getpid.sh does a sloppy grep over 'ps -ax' output,
245 ;; which fails arbitrarily.
246 (with-output-to-file "src/testsuite/getpid.sh"
247 (lambda ()
248 (display
249 (string-append
250 "#!" (which "sh") "\n"
251 "ps -C \"$1\" -o pid=\n"))))
252 ;; Our variant of getpid.sh does not match interpreter names
253 ;; when the script's shebang is invoked directly as "./foo".
254 ;; Patch cases where the test suite relies on this.
255 (substitute* "src/testsuite/start-server.sh"
256 ;; It runs 'getpid.sh sh' to test if it works at all. Run it on
257 ;; 'make' instead.
258 (("getpid.sh sh") "getpid.sh make")))))))
259 (home-page "https://ngircd.barton.de/")
260 (synopsis "Lightweight Internet Relay Chat server for small networks")
261 (description
262 "ngIRCd is a lightweight @dfn{Internet Relay Chat} (IRC) server for small
263 or private networks. It is easy to configure, can cope with dynamic IP
264 addresses, and supports IPv6, SSL-protected connections, as well as PAM for
265 authentication.")
266 (license license:gpl2+)))
267
268 (define-public pidgin
269 (package
270 (name "pidgin")
271 (version "2.12.0")
272 (source
273 (origin
274 (method url-fetch)
275 (uri (string-append "mirror://sourceforge/pidgin/Pidgin/"
276 version "/" name "-" version ".tar.bz2"))
277 (sha256
278 (base32
279 "1y5p2mq3bfw35b66jsafmbva0w5gg1k99y9z8fyp3jfksqv3agcc"))
280 (patches (search-patches "pidgin-add-search-path.patch"))))
281 (build-system glib-or-gtk-build-system)
282 (native-inputs
283 `(("pkg-config" ,pkg-config)
284 ("check" ,check)
285 ("intltool" ,intltool)
286 ("gconf" ,gconf)
287 ("python" ,python-2)
288 ("doxygen" ,doxygen)))
289 (inputs
290 `(("gtk+" ,gtk+-2)
291 ("libgcrypt" ,libgcrypt)
292 ("gnutls" ,gnutls)
293 ("cyrus-sasl" ,cyrus-sasl)
294 ("dbus" ,dbus)
295 ("dbus-glib" ,dbus-glib)
296 ("python2-dbus" ,python2-dbus)
297 ("libidn" ,libidn)
298 ("libltdl" ,libltdl)
299 ("libxml2" ,libxml2)
300 ;; TODO: gstreamer: patches needed to support gstreamer-1.0 or later
301 ;; TODO: farstream
302 ;; TODO: meanwhile
303 ;; TODO: network-manager
304 ;; TODO: gtkspell
305 ;; TODO: libxephyr
306 ;; TODO: libgadu
307 ("libxslt" ,libxslt)
308 ("avahi" ,avahi)
309 ("ncurses" ,ncurses)
310 ("sqlite" ,sqlite)
311 ("libice" ,libice)
312 ("libsm" ,libsm)
313 ("libxscrnsaver" ,libxscrnsaver)
314 ("startup-notification" ,startup-notification)))
315 (arguments
316 `(#:configure-flags
317 (list "--disable-gtkspell"
318 "--disable-tcl"
319 "--disable-meanwhile"
320 "--disable-nm" ; XXX remove when we have network-manager
321 "--disable-vv" ; XXX remove when we have farstream and gstreamer
322 "--disable-gstreamer" ; XXX patches needed to support gstreamer-1.0
323 "--enable-cyrus-sasl"
324 (string-append "--with-ncurses-headers="
325 (assoc-ref %build-inputs "ncurses")
326 "/include"))))
327 (native-search-paths
328 (list (search-path-specification
329 (variable "PURPLE_PLUGIN_PATH")
330 (files (list (string-append "lib/purple-"
331 (version-prefix version 1))
332 "lib/pidgin")))))
333 (home-page "http://www.pidgin.im/")
334 (synopsis "Graphical multi-protocol instant messaging client")
335 (description
336 "Pidgin is a modular instant messaging client that supports many popular
337 chat protocols.")
338 (license
339 (list
340 license:gpl2+ ; Most of the code
341 license:lgpl2.1 ; GG protocol plugin (libpurple/protocols/gg/lib)
342 license:lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
343 ;; The following licenses cover the zephyr protocol plugin:
344 (license:non-copyleft
345 "file://libpurple/protocols/zephyr/mit-copyright.h"
346 "See libpurple/protocols/zephyr/mit-copyright.h in the distribution.")
347 (license:non-copyleft
348 "file://libpurple/protocols/zephyr/mit-sipb-copyright.h"
349 "See libpurple/protocols/zephyr/mit-sipb-copyright.h in the distribution.")))))
350
351 (define-public pidgin-otr
352 (package
353 (name "pidgin-otr")
354 (version "4.0.2")
355 (source (origin
356 (method url-fetch)
357 (uri (string-append "https://otr.cypherpunks.ca/"
358 name "-" version ".tar.gz"))
359 (sha256
360 (base32
361 "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl"))))
362 (build-system gnu-build-system)
363 (native-inputs
364 `(("pkg-config" ,pkg-config)
365 ("intltool" ,intltool)))
366 (inputs
367 `(("pidgin" ,pidgin)
368 ("libotr" ,libotr)
369 ("libgpg-error" ,libgpg-error)
370 ("libgcrypt" ,libgcrypt)
371 ("glib" ,glib)
372 ("gtk+" ,gtk+-2)))
373 (home-page "https://otr.cypherpunks.ca/")
374 (synopsis "Off-the-Record Messaging plugin for Pidgin")
375 (description
376 "Pidgin-OTR is a plugin that adds support for OTR to the Pidgin instant
377 messaging client. OTR (Off-the-Record) Messaging allows you to have private
378 conversations over instant messaging by providing: (1) Encryption: No one else
379 can read your instant messages. (2) Authentication: You are assured the
380 correspondent is who you think it is. (3) Deniability: The messages you send
381 do not have digital signatures that are checkable by a third party. Anyone
382 can forge messages after a conversation to make them look like they came from
383 you. However, during a conversation, your correspondent is assured the
384 messages he sees are authentic and unmodified. (4) Perfect forward secrecy:
385 If you lose control of your private keys, no previous conversation is
386 compromised.")
387 (license license:gpl2)))
388
389 (define-public znc
390 (package
391 (name "znc")
392 (version "1.6.5")
393 (source (origin
394 (method url-fetch)
395 (uri (string-append "http://znc.in/releases/archive/znc-"
396 version ".tar.gz"))
397 (sha256
398 (base32
399 "1jia6kq6bp8yxfj02d5vj9vqb4pylqcldspyjj6iz82kkka2a0ig"))))
400 (build-system gnu-build-system)
401 (arguments
402 `(#:phases
403 (modify-phases %standard-phases
404 (add-after 'unpack 'unpack-googletest
405 (lambda* (#:key inputs #:allow-other-keys)
406 (zero? (system* "tar" "xf"
407 (assoc-ref inputs "googletest-source"))))))
408 #:configure-flags '("--enable-python"
409 "--enable-perl"
410 "--enable-cyrus"
411 ,(string-append "--with-gtest="
412 "googletest-release-"
413 (package-version googletest)
414 "/googletest"))
415 #:test-target "test"))
416 (native-inputs
417 `(("googletest-source" ,(package-source googletest))
418 ("pkg-config" ,pkg-config)
419 ("perl" ,perl)
420 ("python" ,python)))
421 (inputs
422 `(("openssl" ,openssl)
423 ("zlib" ,zlib)
424 ("icu4c" ,icu4c)
425 ("cyrus-sasl" ,cyrus-sasl)))
426 (home-page "http://znc.in")
427 (synopsis "IRC network bouncer")
428 (description "ZNC is an IRC network bouncer or BNC. It can detach the
429 client from the actual IRC server, and also from selected channels. Multiple
430 clients from different locations can connect to a single ZNC account
431 simultaneously and therefore appear under the same nickname on IRC.")
432 (license license:asl2.0)))
433
434 (define-public python-nbxmpp
435 (package
436 (name "python-nbxmpp")
437 (version "0.5.3")
438 (source
439 (origin
440 (method url-fetch)
441 (uri (string-append "https://pypi.python.org/packages/source/n/nbxmpp/"
442 "nbxmpp-" version ".tar.gz"))
443 (sha256
444 (base32
445 "0dcr786dyips1fdvgsn8yvpgcz5j7217fi05c29cfypdl8jnp6mp"))))
446 (build-system python-build-system)
447 ;; No tests included
448 (arguments `(#:tests? #f))
449 (home-page "http://python-nbxmpp.gajim.org")
450 (synopsis "Non-blocking Jabber/XMPP module")
451 (description
452 "The goal of this python library is to provide a way for Python
453 applications to use Jabber/XMPP networks in a non-blocking way. This library
454 was initially a fork of xmpppy, but is using non-blocking sockets.")
455 (license license:gpl3+)))
456
457 (define-public python2-nbxmpp
458 (package-with-python2 python-nbxmpp))
459
460 (define-public gajim
461 (package
462 (name "gajim")
463 (version "0.16.7")
464 (source (origin
465 (method url-fetch)
466 (uri (string-append "https://gajim.org/downloads/"
467 (version-major+minor version)
468 "/gajim-" version ".tar.bz2"))
469 (sha256
470 (base32
471 "13sxz0hpvyj2yvcbsfqq9yn0hp1d1zsxsj40r0v16jlibha5da9n"))))
472 (build-system gnu-build-system)
473 (arguments
474 `(#:phases
475 (modify-phases %standard-phases
476 (add-after 'install 'wrap-program
477 (lambda* (#:key outputs #:allow-other-keys)
478 ;; Make sure all Python scripts run with the correct PYTHONPATH.
479 (let ((out (assoc-ref outputs "out"))
480 (path (getenv "PYTHONPATH")))
481 (for-each (lambda (name)
482 (let ((file (string-append out "/bin/" name)))
483 ;; Wrapping destroys identification of intended
484 ;; application, so we need to override "APP".
485 (substitute* file
486 (("APP=`basename \\$0`")
487 (string-append "APP=" name)))
488 (wrap-program file
489 `("PYTHONPATH" ":" prefix (,path)))))
490 '("gajim" "gajim-remote" "gajim-history-manager")))
491 #t)))))
492 (native-inputs
493 `(("intltool" ,intltool)))
494 (inputs
495 `(("python2-nbxmpp" ,python2-nbxmpp)
496 ("python2-pyopenssl" ,python2-pyopenssl)
497 ("python2-gnupg" ,python2-gnupg)
498 ("python2-pygtk" ,python2-pygtk)
499 ("python" ,python-2)))
500 (home-page "https://gajim.org/")
501 (synopsis "Jabber (XMPP) client")
502 (description "Gajim is a feature-rich and easy to use Jabber/XMPP client.
503 Among its features are: a tabbed chat window and single window modes; support
504 for group chat (with Multi-User Chat protocol), invitation, chat to group chat
505 transformation; audio and video conferences; file transfer; TLS, GPG and
506 end-to-end encryption support; XML console.")
507 (license license:gpl3)))
508
509 (define-public prosody
510 (package
511 (name "prosody")
512 (version "0.9.12")
513 (source (origin
514 (method url-fetch)
515 (uri (string-append "https://prosody.im/downloads/source/"
516 "prosody-" version ".tar.gz"))
517 (sha256
518 (base32
519 "139yxqpinajl32ryrybvilh54ddb1q6s0ajjhlcs4a0rnwia6n8s"))))
520 (build-system gnu-build-system)
521 (arguments
522 `(#:tests? #f ; no "check" target
523 #:configure-flags (list "--no-example-certs")
524 #:modules ((ice-9 match)
525 (srfi srfi-1)
526 (guix build gnu-build-system)
527 (guix build utils))
528 #:phases
529 (modify-phases %standard-phases
530 (add-after 'unpack 'fix-configure-script
531 (lambda _
532 ;; The configure script aborts when it encounters unexpected
533 ;; arguments. Make it more tolerant.
534 (substitute* "configure"
535 (("exit 1") ""))
536 #t))
537 (add-after 'unpack 'fix-makefile
538 (lambda _
539 (substitute* "Makefile"
540 ;; prosodyctl needs to read the configuration file.
541 (("^INSTALLEDCONFIG =.*") "INSTALLEDCONFIG = /etc/prosody\n")
542 ;; prosodyctl needs a place to put auto-generated certificates.
543 (("^INSTALLEDDATA =.*") "INSTALLEDDATA = /var/lib/prosody\n"))
544 #t))
545 (add-after 'install 'wrap-programs
546 (lambda* (#:key inputs outputs #:allow-other-keys)
547 ;; Make sure all executables in "bin" find the required Lua
548 ;; modules at runtime.
549 (let* ((out (assoc-ref outputs "out"))
550 (bin (string-append out "/bin/"))
551 (deps (delete #f (map (match-lambda
552 ((label . directory)
553 (if (string-prefix? "lua" label)
554 directory #f)))
555 inputs)))
556 (lua-path (string-join
557 (map (lambda (path)
558 (string-append
559 path "/share/lua/5.1/?.lua;"
560 path "/share/lua/5.1/?/?.lua"))
561 (cons out deps))
562 ";"))
563 (lua-cpath (string-join
564 (map (lambda (path)
565 (string-append
566 path "/lib/lua/5.1/?.so;"
567 path "/lib/lua/5.1/?/?.so"))
568 (cons out deps))
569 ";"))
570 (openssl (assoc-ref inputs "openssl"))
571 (coreutils (assoc-ref inputs "coreutils"))
572 (path (map (lambda (dir)
573 (string-append dir "/bin"))
574 (list openssl coreutils))))
575 (for-each (lambda (file)
576 (wrap-program file
577 `("LUA_PATH" ";" = (,lua-path))
578 `("LUA_CPATH" ";" = (,lua-cpath))
579 `("PATH" ":" prefix ,path)))
580 (find-files bin ".*"))
581 #t))))))
582 (inputs
583 `(("libidn" ,libidn)
584 ("openssl" ,openssl)
585 ("lua" ,lua-5.1)
586 ("lua5.1-expat" ,lua5.1-expat)
587 ("lua5.1-socket" ,lua5.1-socket)
588 ("lua5.1-filesystem" ,lua5.1-filesystem)
589 ("lua5.1-sec" ,lua5.1-sec)))
590 (home-page "https://prosody.im/")
591 (synopsis "Jabber (XMPP) server")
592 (description "Prosody is a modern XMPP communication server. It aims to
593 be easy to set up and configure, and efficient with system resources.
594 Additionally, for developers it aims to be easy to extend and give a flexible
595 system on which to rapidly develop added functionality, or prototype new
596 protocols.")
597 (license license:x11)))
598
599 (define-public libtoxcore
600 (let ((revision "1")
601 (commit "755f084e8720b349026c85afbad58954cb7ff1d4"))
602 (package
603 (name "libtoxcore")
604 (version (string-append "0.0.0" "-"
605 revision "."(string-take commit 7)))
606 (source (origin
607 (method git-fetch)
608 (uri (git-reference
609 (url "https://github.com/irungentoo/toxcore.git")
610 (commit commit)))
611 (file-name (string-append name "-" version "-checkout"))
612 (sha256
613 (base32
614 "0ap1gvlyihnfivv235dbrgsxsiiz70bhlmlr5gn1027w3h5kqz8w"))))
615 (build-system gnu-build-system)
616 (native-inputs
617 `(("autoconf" ,autoconf)
618 ("automake" ,automake)
619 ("libtool" ,libtool)
620 ;; TODO: Add when test suite is capable of passing.
621 ;; ("check" ,check)
622 ("pkg-config" ,pkg-config)))
623 (inputs
624 `(("libsodium" ,libsodium)
625 ("opus" ,opus)
626 ("libvpx" ,libvpx)))
627 (arguments
628 `(#:phases
629 (modify-phases %standard-phases
630 (add-after 'unpack 'autoconf
631 (lambda _
632 (zero? (system* "autoreconf" "-vfi")))))
633 #:tests? #f)) ; FIXME: Testsuite fails, reasons unspecific.
634 (synopsis "Library for the Tox encrypted messenger protocol")
635 (description
636 "C library implementation of the Tox encrypted messenger protocol.")
637 (license license:gpl3+)
638 (home-page "https://tox.chat"))))
639
640 ;; Some tox clients move to c-toxcore, which seems to be where all the
641 ;; recent development happens. It is run by the same developers as toxcore,
642 ;; forked into a group namespace.
643 (define-public c-toxcore
644 (package
645 (name "c-toxcore")
646 (version "0.1.1")
647 (source
648 (origin
649 (method url-fetch)
650 (uri (string-append "https://github.com/TokTok/c-toxcore/archive/v"
651 version ".tar.gz"))
652 (file-name (string-append name "-" version ".tar.gz"))
653 (sha256
654 (base32
655 "0dybpz44pi0zm8djppjna0r8yh5wvl3l885dv2f1wp5366bk59n3"))))
656 (build-system gnu-build-system)
657 (native-inputs
658 `(("autoconf" ,autoconf)
659 ("automake" ,automake)
660 ("libtool" ,libtool)
661 ("check" ,check)
662 ("pkg-config" ,pkg-config)))
663 (inputs
664 `(("libsodium" ,libsodium)
665 ("opus" ,opus)
666 ("libvpx" ,libvpx)))
667 (arguments
668 `(#:phases
669 (modify-phases %standard-phases
670 (add-after 'unpack 'autoconf
671 ;; The tarball source is not bootstrapped.
672 (lambda _
673 (zero? (system* "autoreconf" "-vfi")))))
674 #:tests? #f)) ; FIXME: Testsuite fails, needs internet connection.
675 (synopsis "Library for the Tox encrypted messenger protocol")
676 (description
677 "Official fork of the C library implementation of the Tox
678 encrypted messenger protocol.")
679 (license license:gpl3+)
680 (home-page "https://tox.chat")))
681
682 (define-public utox
683 (package
684 (name "utox")
685 (version "0.11.0")
686 (source
687 (origin
688 (method url-fetch)
689 (uri (string-append "https://github.com/uTox/uTox/archive/v"
690 version ".tar.gz"))
691 (file-name (string-append name "-" version ".tar.gz"))
692 (sha256
693 (base32
694 "15s4iwjk1s0kihjqn0f07c9618clbphpr827mds3xddkiwnjz37v"))))
695 (build-system cmake-build-system)
696 (arguments
697 '(#:tests? #f ; No test phase.
698 #:phases
699 (modify-phases %standard-phases
700 (add-after 'unpack 'fix-freetype-include
701 (lambda _
702 (substitute* "CMakeLists.txt"
703 (("/usr/include/freetype2")
704 (string-append (assoc-ref %build-inputs "freetype")
705 "/include/freetype2")))))
706 (add-before 'install 'patch-cmake-find-utox
707 (lambda _
708 (substitute* "../build/cmake_install.cmake"
709 (("/uTox-0.11.0/utox")
710 "/build/utox")))))))
711 (inputs
712 ;; TODO: Fix the file chooser dialog; which input does it need?
713 `(("dbus" ,dbus)
714 ("filteraudio" ,filteraudio)
715 ("fontconfig" ,fontconfig)
716 ("freetype" ,freetype)
717 ("libsodium" ,libsodium)
718 ("c-toxcore" ,c-toxcore)
719 ("libvpx" ,libvpx)
720 ("libx11" ,libx11)
721 ("libxext" ,libxext)
722 ("libxrender" ,libxrender)
723 ("openal" ,openal)
724 ("v4l-utils" ,v4l-utils)))
725 (synopsis "Lightweight Tox client")
726 (description
727 "Utox is a lightweight Tox client. Tox is a distributed and secure
728 instant messenger with audio and video chat capabilities.")
729 (home-page "http://utox.org/")
730 (license license:gpl3)))
731
732 (define-public qtox
733 (package
734 (name "qtox")
735 (version "1.5.1")
736 (source
737 (origin
738 (method url-fetch)
739 (uri (string-append "https://github.com/qTox/qTox/archive/v"
740 version ".tar.gz"))
741 (sha256
742 (base32 "0y15mc39x54k1kz36cw9412kl1p1p6nzlx97gagv4gg3vybfhbjv"))
743 (file-name (string-append name "-" version ".tar.gz"))))
744 (inputs
745 `(("ffmpeg" ,ffmpeg)
746 ("glib" ,glib)
747 ("gtk+" ,gtk+-2)
748 ("libsodium" ,libsodium)
749 ("libtoxcore" ,libtoxcore)
750 ("libvpx" ,libvpx)
751 ("libxscrnsaver" ,libxscrnsaver)
752 ("libx11" ,libx11)
753 ("openal" ,openal)
754 ("qrencode" ,qrencode)
755 ("qt" ,qt)
756 ("sqlcipher" ,sqlcipher)))
757 (native-inputs
758 `(("pkg-config" ,pkg-config)
759 ("qmake" ,qt)))
760 (build-system gnu-build-system)
761 (arguments
762 '(#:phases
763 (modify-phases %standard-phases
764 (add-after 'unpack 'fix-reproducibility-issues
765 (lambda _
766 (substitute* "src/main.cpp"
767 (("__DATE__") "\"\"")
768 (("__TIME__") "\"\"")
769 (("TIMESTAMP") "\"\""))
770 #t))
771 (replace 'configure
772 (lambda* (#:key outputs #:allow-other-keys)
773 (zero?
774 (system* "qmake"
775 (string-append "PREFIX="
776 (assoc-ref outputs "out")))))))))
777 (home-page "https://qtox.github.io/")
778 (synopsis "Tox chat client using Qt")
779 (description "qTox is a Tox client that follows the Tox design
780 guidelines. It provides an easy to use application that allows you to
781 connect with friends and family without anyone else listening in.")
782 (license license:gpl3+)))
783
784 (define-public pybitmessage
785 (package
786 (name "pybitmessage")
787 (version "0.6.1")
788 (source
789 (origin
790 (method url-fetch)
791 (uri (string-append "https://github.com/Bitmessage/"
792 "PyBitmessage/archive/v" version ".tar.gz"))
793 (file-name (string-append name "-" version ".tar.gz"))
794 (sha256
795 (base32
796 "1ffj7raxpp277kphj98190fxrwfx16vmbspk7k3azg3bh5f5idnf"))))
797 (inputs
798 `(("python" ,python-2)
799 ("python:tk" ,python-2 "tk")
800 ("openssl" ,openssl)
801 ("sqlite" ,sqlite)
802 ("qt" ,qt-4)
803 ("python2-pyqt-4" ,python2-pyqt-4)
804 ("python2-sip" ,python2-sip)
805 ("python2-pysqlite" ,python2-pysqlite)
806 ("python2-pyopenssl" ,python2-pyopenssl)))
807 (native-inputs
808 `(("pkg-config" ,pkg-config)))
809 (build-system gnu-build-system)
810 (arguments
811 `(#:imported-modules ((guix build python-build-system)
812 ,@%gnu-build-system-modules)
813 #:make-flags (list (string-append "PREFIX="
814 (assoc-ref %outputs "out")))
815 #:tests? #f ; no test target
816 #:phases
817 (modify-phases %standard-phases
818 (add-before 'build 'fix-makefile
819 (lambda* (#:key inputs #:allow-other-keys)
820 (substitute* "Makefile"
821 (("mkdir -p \\$\\{DESTDIR\\}/usr") "")
822 (("/usr/local") "")
823 (("/usr") "")
824 (("#!/bin/sh") (string-append "#!" (which "sh")))
825 (("python2") (which "python"))
826 (("/opt/openssl-compat-bitcoin/lib/")
827 (string-append (assoc-ref inputs "openssl") "/lib/")))
828 #t))
829 (add-after 'unpack 'fix-unmatched-python-shebangs
830 (lambda* (#:key inputs #:allow-other-keys)
831 (substitute* "src/bitmessagemain.py"
832 (("#!/usr/bin/env python2.7")
833 (string-append "#!" (which "python"))))
834 (substitute* "src/bitmessagecli.py"
835 (("#!/usr/bin/env python2.7.x")
836 (string-append "#!" (which "python"))))
837 #t))
838 (add-after 'unpack 'fix-depends
839 (lambda* (#:key inputs #:allow-other-keys)
840 (substitute* "src/depends.py"
841 (("libcrypto.so")
842 (string-append (assoc-ref inputs "openssl")
843 "/lib/libcrypto.so")))
844 #t))
845 (add-after 'unpack 'fix-local-files-in-paths
846 (lambda* (#:key outputs #:allow-other-keys)
847 (substitute* "src/proofofwork.py"
848 (("bitmsghash.so")
849 (string-append (assoc-ref outputs "out")
850 "/lib/bitmsghash.so")))
851 #t))
852 (add-after 'unpack 'fix-pyelliptic
853 (lambda* (#:key inputs #:allow-other-keys)
854 (substitute* "src/pyelliptic/openssl.py"
855 (("libcrypto.so")
856 (string-append (assoc-ref inputs "openssl")
857 "/lib/libcrypto.so"))
858 (("libssl.so")
859 (string-append (assoc-ref inputs "openssl")
860 "/lib/libssl.so")))
861 #t))
862 ;; XXX: Make does not build and install bitmsghash, do it
863 ;; and place it in /lib.
864 (add-before 'build 'build-and-install-bitmsghash
865 (lambda* (#:key outputs #:allow-other-keys)
866 (chdir "src/bitmsghash")
867 (system* "make")
868 (chdir "../..")
869 (install-file "src/bitmsghash/bitmsghash.so"
870 (string-append (assoc-ref outputs "out") "/lib"))
871 #t))
872 (add-after 'install 'wrap
873 (@@ (guix build python-build-system) wrap)))))
874 (license license:expat)
875 (description
876 "Distributed and trustless peer-to-peer communications protocol
877 for sending encrypted messages to one person or many subscribers.")
878 (synopsis "Distributed peer-to-peer communication")
879 (home-page "https://bitmessage.org/")))
880
881 (define-public ytalk
882 (package
883 (name "ytalk")
884 (version "3.3.0")
885 (source
886 (origin
887 (method url-fetch)
888 (uri (string-append "ftp://ftp.ourproject.org/pub/ytalk/ytalk-"
889 version ".tar.gz"))
890 (sha256
891 (base32
892 "1d3jhnj8rgzxyxjwfa22vh45qwzjvxw1qh8fz6b7nfkj3zvk9jvf"))))
893 (build-system gnu-build-system)
894 (inputs
895 `(("ncurses" ,ncurses)))
896 (home-page "http://ytalk.ourproject.org")
897 (synopsis "Multi-user chat program")
898 (description "Ytalk is a replacement for the BSD talk program. Its main
899 advantage is the ability to communicate with any arbitrary number of users at
900 once. It supports both talk protocols (\"talk\" and \"ntalk\") and can communicate
901 with several different talk daemons at the same time.")
902 (license license:gpl2+)))
903
904 (define-public gloox
905 (package
906 (name "gloox")
907 (version "1.0.17")
908 (source
909 (origin
910 (method url-fetch)
911 (uri (string-append "https://camaya.net/download/gloox-"
912 version ".tar.bz2"))
913 (sha256
914 (base32
915 "09c01jr5nrm7f1ly42wg0pqqscmp48pv8y2fjx1vwbavjxdq59ri"))))
916 (build-system gnu-build-system)
917 (inputs
918 `(("libidn" ,libidn)
919 ("gnutls" ,gnutls)
920 ("zlib" ,zlib)))
921 (native-inputs
922 `(("pkg-config" ,pkg-config)))
923 (synopsis "Portable high-level Jabber/XMPP library for C++")
924 (description
925 "gloox is a full-featured Jabber/XMPP client library,
926 written in ANSI C++. It makes writing spec-compliant clients easy
927 and allows for hassle-free integration of Jabber/XMPP functionality
928 into existing applications.")
929 (home-page "https://camaya.net/gloox")
930 (license license:gpl3)))
931
932 (define-public perl-net-psyc
933 (package
934 (name "perl-net-psyc")
935 (version "1.1")
936 (source
937 (origin
938 (method url-fetch)
939 (uri (string-append "http://perlpsyc.psyc.eu/"
940 "perlpsyc-" version ".zip"))
941 (file-name (string-append name "-" version ".zip"))
942 (sha256
943 (base32
944 "1lw6807qrbmvzbrjn1rna1dhir2k70xpcjvyjn45y35hav333a42"))
945 ;; psycmp3 currently depends on MP3::List and rxaudio (shareware),
946 ;; we can add it back when this is no longer the case.
947 (snippet '(delete-file "contrib/psycmp3"))))
948 (build-system perl-build-system)
949 (inputs
950 `(("perl-curses" ,perl-curses)
951 ("perl-io-socket-ssl" ,perl-io-socket-ssl)))
952 (arguments
953 `(#:phases
954 (modify-phases %standard-phases
955 (delete 'configure) ; No configure script
956 ;; There is a Makefile, but it does not install everything
957 ;; (leaves out psycion) and says
958 ;; "# Just to give you a rough idea". XXX: Fix it upstream.
959 (replace 'build
960 (lambda _
961 (zero? (system* "make" "manuals"))))
962 (replace 'install
963 (lambda* (#:key outputs #:allow-other-keys)
964 (let* ((out (assoc-ref outputs "out"))
965 (doc (string-append out "/share/doc/perl-net-psyc"))
966 (man1 (string-append out "/share/man/man1"))
967 (man3 (string-append out "/share/man/man3"))
968 (bin (string-append out "/bin"))
969 (libpsyc (string-append out "/lib/psyc/ion"))
970 (libperl (string-append out "/lib/perl5/site_perl/"
971 ,(package-version perl))))
972
973 (copy-recursively "lib/perl5" libperl)
974 (copy-recursively "lib/psycion" libpsyc)
975 (copy-recursively "bin" bin)
976 (install-file "cgi/psycpager" (string-append doc "/cgi"))
977 (copy-recursively "contrib" (string-append doc "/contrib"))
978 (copy-recursively "hooks" (string-append doc "/hooks"))
979 (copy-recursively "sdj" (string-append doc "/sdj"))
980 (install-file "README.txt" doc)
981 (install-file "TODO.txt" doc)
982 (copy-recursively "share/man/man1" man1)
983 (copy-recursively "share/man/man3" man3)
984 #t)))
985 (add-after 'install 'wrap-programs
986 (lambda* (#:key outputs #:allow-other-keys)
987 ;; Make sure all executables in "bin" find the Perl modules
988 ;; provided by this package at runtime.
989 (let* ((out (assoc-ref outputs "out"))
990 (bin (string-append out "/bin/"))
991 (path (getenv "PERL5LIB")))
992 (for-each (lambda (file)
993 (wrap-program file
994 `("PERL5LIB" ":" prefix (,path))))
995 (find-files bin "\\.*$"))
996 #t))))))
997 (description
998 "@code{Net::PSYC} with support for TCP, UDP, Event.pm, @code{IO::Select} and
999 Gtk2 event loops. This package includes 12 applications and additional scripts:
1000 psycion (a @uref{http://about.psyc.eu,PSYC} chat client), remotor (a control console
1001 for @uref{https://torproject.org,tor} router) and many more.")
1002 (synopsis "Perl implementation of PSYC protocol")
1003 (home-page "http://perlpsyc.psyc.eu/")
1004 (license (list license:gpl2
1005 (package-license perl)
1006 ;; contrib/irssi-psyc.pl:
1007 license:public-domain
1008 ;; bin/psycplay states AGPL with no version:
1009 license:agpl3+))))
1010
1011 (define-public libpsyc
1012 (package
1013 (name "libpsyc")
1014 (version "20160913")
1015 (source (origin
1016 (method url-fetch)
1017 (uri (string-append "http://www.psyced.org/files/"
1018 name "-" version ".tar.xz"))
1019 (sha256
1020 (base32
1021 "14q89fxap05ajkfn20rnhc6b1h4i3i2adyr7y6hs5zqwb2lcmc1p"))))
1022 (build-system gnu-build-system)
1023 (native-inputs
1024 `(("perl" ,perl)
1025 ("netcat" ,netcat)
1026 ("procps" ,procps)))
1027 (arguments
1028 `(#:make-flags
1029 (list "CC=gcc"
1030 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1031 #:phases
1032 (modify-phases %standard-phases
1033 ;; The rust bindings are the only ones in use, the lpc bindings
1034 ;; are in psyclpc. The other bindings are not used by anything,
1035 ;; the chances are high that the bindings do not even work,
1036 ;; therefore we do not include them.
1037 ;; TODO: Get a cargo build system in Guix.
1038 (delete 'configure)))) ; no configure script
1039 (home-page "http://about.psyc.eu/libpsyc")
1040 (description
1041 "@code{libpsyc} is a PSYC library in C which implements
1042 core aspects of PSYC, useful for all kinds of clients and servers
1043 including psyced.")
1044 (synopsis "PSYC library in C")
1045 (license license:agpl3+)))
1046
1047 ;; This commit removes the historic bundled pcre and makes psyclpc reproducible.
1048 (define-public psyclpc
1049 (let* ((commit "61cf9aa81297085e5c40170fd01221c752f8deba")
1050 (revision "2"))
1051 (package
1052 (name "psyclpc")
1053 (version (string-append "20160821-" revision "." (string-take commit 7)))
1054 (source (origin
1055 (method git-fetch)
1056 (uri (git-reference
1057 (url "git://git.psyced.org/git/psyclpc")
1058 (commit commit)))
1059 (file-name (string-append name "-" version "-checkout"))
1060 (sha256
1061 (base32
1062 "1viwqymbhn3cwvx0zl58rlzl5gw47zxn0ldg2nbi55ghm5zxl1z5"))))
1063 (build-system gnu-build-system)
1064 (arguments
1065 `(#:tests? #f ; There are no tests/checks.
1066 #:configure-flags
1067 ;; If you have questions about this part, look at
1068 ;; "src/settings/psyced" and the ebuild.
1069 (list
1070 "--enable-use-tls=yes"
1071 "--enable-use-mccp" ; Mud Client Compression Protocol, leave this enabled.
1072 (string-append "--prefix="
1073 (assoc-ref %outputs "out"))
1074 ;; src/Makefile: Set MUD_LIB to the directory which contains
1075 ;; the mud data. defaults to MUD_LIB = @libdir@
1076 (string-append "--libdir="
1077 (assoc-ref %outputs "out")
1078 "/opt/psyced/world")
1079 (string-append "--bindir="
1080 (assoc-ref %outputs "out")
1081 "/opt/psyced/bin")
1082 ;; src/Makefile: Set ERQ_DIR to directory which contains the
1083 ;; stuff which ERQ can execute (hopefully) savely. Was formerly
1084 ;; defined in config.h. defaults to ERQ_DIR= @libexecdir@
1085 (string-append "--libexecdir="
1086 (assoc-ref %outputs "out")
1087 "/opt/psyced/run"))
1088 #:phases
1089 (modify-phases %standard-phases
1090 (add-before 'configure 'chdir-to-src
1091 ;; We need to pass this as env variables
1092 ;; and manually change the directory.
1093 (lambda _
1094 (chdir "src")
1095 (setenv "CONFIG_SHELL" (which "sh"))
1096 (setenv "SHELL" (which "sh"))
1097 #t)))
1098 #:make-flags (list "install-all")))
1099 (inputs
1100 `(("zlib" ,zlib)
1101 ("openssl" ,openssl)
1102 ("pcre" ,pcre)))
1103 (native-inputs
1104 `(("pkg-config" ,pkg-config)
1105 ("bison" ,bison)
1106 ("gettext" ,gettext-minimal)
1107 ("help2man" ,help2man)
1108 ("autoconf" ,autoconf)
1109 ("automake" ,automake)))
1110 (home-page "http://lpc.psyc.eu/")
1111 (synopsis "psycLPC is a multi-user network server programming language")
1112 (description
1113 "LPC is a bytecode language, invented to specifically implement
1114 multi user virtual environments on the internet. This technology is used for
1115 MUDs and also the psyced implementation of the Protocol for SYnchronous
1116 Conferencing (PSYC). psycLPC is a fork of LDMud with some new features and
1117 many bug fixes.")
1118 (license license:gpl2))))
1119
1120 (define-public loudmouth
1121 (package
1122 (name "loudmouth")
1123 (version "1.5.3")
1124 (source
1125 (origin
1126 (method url-fetch)
1127 (uri (string-append "https://mcabber.com/files/loudmouth/"
1128 name "-" version ".tar.bz2"))
1129 (sha256
1130 (base32
1131 "0b6kd5gpndl9nzis3n6hcl0ldz74bnbiypqgqa1vgb0vrcar8cjl"))))
1132 (build-system gnu-build-system)
1133 (inputs
1134 `(("glib" ,glib)
1135 ("gnutls" ,gnutls)
1136 ("libidn" ,libidn)))
1137 (native-inputs
1138 `(("pkg-config" ,pkg-config)
1139 ("check" ,check)
1140 ("glib" ,glib "bin") ; gtester
1141 ("gtk-doc" ,gtk-doc)))
1142 (home-page "https://mcabber.com/")
1143 (description
1144 "Loudmouth is a lightweight and easy-to-use C library for programming
1145 with the XMPP (formerly known as Jabber) protocol. It is designed to be
1146 easy to get started with and yet extensible to let you do anything the XMPP
1147 protocol allows.")
1148 (synopsis "Asynchronous XMPP library")
1149 ;; The files have LGPL2.0+ headers, but COPYING specifies LGPL2.1.
1150 (license license:lgpl2.0+)))
1151
1152 (define-public mcabber
1153 (package
1154 (name "mcabber")
1155 (version "1.0.5")
1156 (source
1157 (origin
1158 (method url-fetch)
1159 (uri (string-append "https://mcabber.com/files/"
1160 name "-" version ".tar.bz2"))
1161 (sha256
1162 (base32
1163 "0ixdzk5b3s31a4bdfqgqrsiq7vbgdzhqr49p9pz9cq9bgn0h1wm0"))))
1164 (build-system gnu-build-system)
1165 (arguments
1166 '(#:configure-flags (list "--enable-otr"
1167 "--enable-aspell")))
1168 (inputs
1169 `(("gpgme" ,gpgme)
1170 ("libotr" ,libotr)
1171 ("aspell" ,aspell)
1172 ("libidn" ,libidn)
1173 ("glib" ,glib)
1174 ("ncurses" ,ncurses)
1175 ("loudmouth" ,loudmouth)))
1176 (native-inputs
1177 `(("pkg-config" ,pkg-config)))
1178 (home-page "https://mcabber.com")
1179 (description
1180 "Mcabber is a small XMPP (Jabber) console client, which includes features
1181 such as SASL and TLS support, @dfn{Multi-User Chat} (MUC) support, logging,
1182 command-completion, OpenPGP encryption, @dfn{Off-the-Record Messaging} (OTR)
1183 support, and more.")
1184 (synopsis "Small XMPP console client")
1185 (license license:gpl2+)))
1186
1187 (define-public freetalk
1188 (package
1189 (name "freetalk")
1190 (version "4.1")
1191 (source (origin
1192 (method url-fetch)
1193 (uri (string-append "mirror://gnu/freetalk/freetalk-"
1194 version ".tar.gz"))
1195 (sha256
1196 (base32
1197 "1rmrn7a1bb7vm26yaklrvx008a9qhwc32s57dwrlf40lv9gffwny"))))
1198 (build-system gnu-build-system)
1199 (arguments
1200 `(#:phases
1201 (modify-phases %standard-phases
1202 (add-before 'configure 'autogen
1203 (lambda _
1204 (zero? (system* "sh" "autogen.sh"))))
1205 ;; For 'system' commands in Scheme code.
1206 (add-after 'install 'wrap-program
1207 (lambda* (#:key inputs outputs #:allow-other-keys)
1208 (let* ((out (assoc-ref outputs "out"))
1209 (bash (assoc-ref inputs "bash"))
1210 (coreutils (assoc-ref inputs "coreutils"))
1211 (less (assoc-ref inputs "less")))
1212 (wrap-program (string-append out "/bin/freetalk")
1213 `("PATH" ":" prefix
1214 ,(map (lambda (dir)
1215 (string-append dir "/bin"))
1216 (list bash coreutils less))))
1217 #t))))))
1218 (native-inputs
1219 `(("autoconf" ,autoconf)
1220 ("automake" ,automake)
1221 ("pkg-config" ,pkg-config)
1222 ("texinfo" ,texinfo)))
1223 (inputs
1224 `(("bash" ,bash)
1225 ("glib" ,glib)
1226 ("guile" ,guile-2.0)
1227 ("less" ,less)
1228 ("loudmouth" ,loudmouth)
1229 ("readline" ,readline)))
1230 (synopsis "Extensible console-based Jabber client")
1231 (description
1232 "GNU Freetalk is a command-line Jabber/XMPP chat client. It notably uses
1233 the Readline library to handle input, so it features convenient navigation of
1234 text as well as tab-completion of buddy names, commands and English words. It
1235 is also scriptable and extensible via Guile.")
1236 (home-page "https://www.gnu.org/software/freetalk/")
1237 (license license:gpl3+)))
1238
1239 (define-public libmesode
1240 (package
1241 (name "libmesode")
1242 (version "0.9.1")
1243 (source (origin
1244 (method url-fetch)
1245 (uri (string-append "https://github.com/boothj5/libmesode/archive/"
1246 version ".tar.gz"))
1247 (file-name (string-append name "-" version ".tar.gz"))
1248 (sha256
1249 (base32
1250 "0iaj56fkd5bjvqpvq3324ni895rmbj1akbfqipjydnghfwaym4z6"))))
1251 (build-system gnu-build-system)
1252 (arguments
1253 `(#:phases
1254 (modify-phases %standard-phases
1255 (add-before 'configure 'bootstrap
1256 (lambda _
1257 (zero? (system* "./bootstrap.sh")))))))
1258 (inputs
1259 `(("expat" ,expat)
1260 ("openssl" ,openssl)))
1261 (native-inputs
1262 `(("autoconf" ,autoconf)
1263 ("automake" ,automake)
1264 ("libtool" ,libtool)
1265 ("pkg-config" ,pkg-config)))
1266 (synopsis "C library for writing XMPP clients")
1267 (description "Libmesode is a fork of libstrophe for use with Profanity
1268 XMPP Client. In particular, libmesode provides extra TLS functionality such as
1269 manual SSL certificate verification.")
1270 (home-page "https://github.com/boothj5/libmesode")
1271 ;; Dual licensed.
1272 (license (list license:gpl3+ license:x11))))
1273
1274 (define-public libstrophe
1275 (package
1276 (name "libstrophe")
1277 (version "0.9.1")
1278 (source (origin
1279 (method url-fetch)
1280 (uri (string-append "https://github.com/strophe/libstrophe/archive/"
1281 version ".tar.gz"))
1282 (file-name (string-append name "-" version ".tar.gz"))
1283 (sha256
1284 (base32
1285 "1hzwdax4nsz0fncf5bjfza0cn0lc6xsf38y569ql1gg5hvwr6169"))))
1286 (build-system gnu-build-system)
1287 (arguments
1288 `(#:phases
1289 (modify-phases %standard-phases
1290 (add-before 'configure 'bootstrap
1291 (lambda _
1292 (zero? (system* "./bootstrap.sh")))))))
1293 (inputs
1294 `(("expat" ,expat)
1295 ("openssl" ,openssl)))
1296 (native-inputs
1297 `(("autoconf" ,autoconf)
1298 ("automake" ,automake)
1299 ("libtool" ,libtool)
1300 ("pkg-config" ,pkg-config)))
1301 (synopsis "C library for writing XMPP clients")
1302 (description "Libstrophe is a minimal XMPP library written in C. It has
1303 almost no external dependencies, only an XML parsing library (expat or libxml
1304 are both supported).")
1305 (home-page "http://strophe.im/libstrophe")
1306 ;; Dual licensed.
1307 (license (list license:gpl3+ license:x11))))
1308
1309 (define-public profanity
1310 (package
1311 (name "profanity")
1312 (version "0.5.1")
1313 (source (origin
1314 (method url-fetch)
1315 (uri (string-append "http://www.profanity.im/profanity-"
1316 version ".tar.gz"))
1317 (sha256
1318 (base32
1319 "1f7ylw3mhhnii52mmk40hyc4kqhpvjdr3hmsplzkdhsfww9kflg3"))))
1320 (build-system gnu-build-system)
1321 (inputs
1322 `(("curl" ,curl)
1323 ("expat" ,expat)
1324 ("glib" ,glib)
1325 ("gpgme" ,gpgme)
1326 ("libmesode" ,libmesode)
1327 ("libotr" ,libotr)
1328 ("ncurses" ,ncurses)
1329 ("openssl" ,openssl)
1330 ("readline" ,readline)))
1331 (native-inputs
1332 `(("autoconf" ,autoconf)
1333 ("autoconf-archive" ,autoconf-archive)
1334 ("automake" ,automake)
1335 ("cmocka" ,cmocka)
1336 ("libtool" ,libtool)
1337 ("pkg-config" ,pkg-config)))
1338 (synopsis "Console-based XMPP client")
1339 (description "Profanity is a console based XMPP client written in C
1340 using ncurses and libmesode, inspired by Irssi.")
1341 (home-page "http://www.profanity.im")
1342 (license license:gpl3+)))
1343
1344 (define-public libircclient
1345 (package
1346 (name "libircclient")
1347 (version "1.9")
1348 (source
1349 (origin
1350 (method url-fetch)
1351 (uri (string-append "mirror://sourceforge/libircclient/libircclient/"
1352 version "/libircclient-" version ".tar.gz"))
1353 (sha256
1354 (base32
1355 "0r60i76jh4drjh2jgp5sx71chagqllmkaq49zv67nrhqwvp9ghw1"))))
1356 (build-system gnu-build-system)
1357 (inputs
1358 `(("openssl" ,openssl)))
1359 (arguments
1360 `(#:configure-flags
1361 (list (string-append "--libdir="
1362 (assoc-ref %outputs "out") "/lib")
1363 "--enable-shared"
1364 "--enable-ipv6"
1365 "--enable-openssl")
1366 ;; no test suite
1367 #:tests? #f))
1368 (home-page "https://www.ulduzsoft.com/libircclient/")
1369 (synopsis "Library implementing the client IRC protocol")
1370 (description "Libircclient is a library which implements the client IRC
1371 protocol. It is designed to be small, fast, portable and compatible with the
1372 RFC standards as well as non-standard but popular features. It can be used for
1373 building the IRC clients and bots.")
1374 (license license:lgpl3+)))
1375
1376 ;;; messaging.scm ends here