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