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