gnu: gajim: Update to 0.16.6.
[jackhill/guix/guix.git] / gnu / packages / messaging.scm
CommitLineData
7c706558 1;;; GNU Guix --- Functional package management for GNU
0c0207a9 2;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
b977cd2b 3;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu>
ea119a28 4;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
2e88d113 5;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
1ae27aac 6;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
07ab3b8e 7;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
3973e137 8;;; Copyright © 2016 ng0 <ngillmann@runbox.com>
bc1c995e 9;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
7c706558
MW
10;;;
11;;; This file is part of GNU Guix.
12;;;
13;;; GNU Guix is free software; you can redistribute it and/or modify it
14;;; under the terms of the GNU General Public License as published by
15;;; the Free Software Foundation; either version 3 of the License, or (at
16;;; your option) any later version.
17;;;
18;;; GNU Guix is distributed in the hope that it will be useful, but
19;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21;;; GNU General Public License for more details.
22;;;
23;;; You should have received a copy of the GNU General Public License
24;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26(define-module (gnu packages messaging)
29e83e1c 27 #:use-module ((guix licenses) #:prefix license:)
b1a2bc89 28 #:use-module (guix utils)
7c706558
MW
29 #:use-module (guix packages)
30 #:use-module (guix download)
901c1aae 31 #:use-module (guix git-download)
7c706558 32 #:use-module (guix build-system gnu)
b1a2bc89 33 #:use-module (guix build-system glib-or-gtk)
246bc76a 34 #:use-module (guix build-system python)
8b3099cf 35 #:use-module (gnu packages)
bc1c995e 36 #:use-module (gnu packages aidc)
b1a2bc89
MW
37 #:use-module (gnu packages autotools)
38 #:use-module (gnu packages avahi)
39 #:use-module (gnu packages check)
901c1aae 40 #:use-module (gnu packages crypto)
b1a2bc89
MW
41 #:use-module (gnu packages cyrus-sasl)
42 #:use-module (gnu packages databases)
99828fa7 43 #:use-module (gnu packages documentation)
b977cd2b
JL
44 #:use-module (gnu packages enchant)
45 #:use-module (gnu packages gnome)
46 #:use-module (gnu packages gtk)
b1a2bc89
MW
47 #:use-module (gnu packages xorg)
48 #:use-module (gnu packages xdisorg)
b977cd2b 49 #:use-module (gnu packages libcanberra)
8f3afba4 50 #:use-module (gnu packages networking)
b1a2bc89 51 #:use-module (gnu packages libidn)
1ae27aac 52 #:use-module (gnu packages lua)
b977cd2b 53 #:use-module (gnu packages xml)
8b3099cf 54 #:use-module (gnu packages gnupg)
b1a2bc89 55 #:use-module (gnu packages ncurses)
8b3099cf
MW
56 #:use-module (gnu packages pkg-config)
57 #:use-module (gnu packages glib)
8b3099cf
MW
58 #:use-module (gnu packages python)
59 #:use-module (gnu packages perl)
ea119a28 60 #:use-module (gnu packages tcl)
8b3099cf 61 #:use-module (gnu packages compression)
ea119a28
TUBK
62 #:use-module (gnu packages check)
63 #:use-module (gnu packages admin)
a7fd7b68 64 #:use-module (gnu packages linux)
a10052ac 65 #:use-module (gnu packages tls)
901c1aae 66 #:use-module (gnu packages icu4c)
aeca1c0e 67 #:use-module (gnu packages qt)
901c1aae 68 #:use-module (gnu packages video)
3b38d78e
EE
69 #:use-module (gnu packages xiph)
70 #:use-module (gnu packages audio)
71 #:use-module (gnu packages fontutils))
7c706558
MW
72
73(define-public libotr
74 (package
75 (name "libotr")
89e58e8e 76 (version "4.1.1")
7c706558
MW
77 (source (origin
78 (method url-fetch)
79 (uri (string-append "https://otr.cypherpunks.ca/libotr-"
80 version ".tar.gz"))
81 (sha256
89e58e8e 82 (base32
e3d3546e 83 "1x8rliydhbibmzwdbyr7pd7n87m2jmxnqkpvaalnf4154hj1hfwb"))
fc1adab1 84 (patches (search-patches "libotr-test-auth-fix.patch"))))
7c706558
MW
85 (build-system gnu-build-system)
86 (propagated-inputs
87 `(("libgcrypt" ,libgcrypt))) ; libotr headers include gcrypt.h
88 (inputs `(("libgpg-error" ,libgpg-error)))
89e58e8e 89 (native-inputs `(("perl" ,perl))) ; for the test suite
7c706558
MW
90 (synopsis "Off-the-Record (OTR) Messaging Library and Toolkit")
91 (description
92 "OTR allows you to have private conversations over instant messaging by
008b5257
MW
93providing: (1) Encryption: No one else can read your instant messages. (2)
94Authentication: You are assured the correspondent is who you think it is. (3)
95Deniability: The messages you send do not have digital signatures that are
96checkable by a third party. Anyone can forge messages after a conversation to
97make them look like they came from you. However, during a conversation, your
98correspondent is assured the messages he sees are authentic and
99unmodified. (4) Perfect forward secrecy: If you lose control of your private
100keys, no previous conversation is compromised.")
7c706558 101 (home-page "https://otr.cypherpunks.ca/")
29e83e1c 102 (license (list license:lgpl2.1 license:gpl2))))
7c706558 103
11057c4b
AW
104;; These patches together fix https://github.com/bitlbee/bitlbee/pull/55, are
105;; already upstream, and should be unnecessary when the next bitlbee comes
106;; out.
107(define %bitlbee-buddy-nick-change-patch
108 (origin
109 (method url-fetch)
110 (uri "https://github.com/bitlbee/bitlbee/commit/a42fda42.patch")
111 (sha256
112 (base32
113 "1mzjhcdn0rxir5mzgqz9kv142ai38p1iq2lajqx89wb7x0bp51zx"))))
114(define %bitlbee-always-use-nicks-patch
115 (origin
116 (method url-fetch)
117 (uri "https://github.com/bitlbee/bitlbee/commit/3320d6d9.patch")
118 (sha256
119 (base32
120 "14d9kb5zdzh5hzakdvrbviz83rix0j2lq9rzb58b2fn92fp8yixd"))))
121
8b3099cf
MW
122(define-public bitlbee
123 (package
124 (name "bitlbee")
ac47ad99 125 (version "3.4.2")
8b3099cf
MW
126 (source (origin
127 (method url-fetch)
95791189 128 (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
8b3099cf
MW
129 version ".tar.gz"))
130 (sha256
11057c4b
AW
131 (base32 "0mza8lnfwibmklz8hdzg4f7p83hblf4h6fbf7d732kzpvra5bj39"))
132 (patches
133 (list %bitlbee-buddy-nick-change-patch
134 %bitlbee-always-use-nicks-patch))))
8b3099cf
MW
135 (build-system gnu-build-system)
136 (native-inputs `(("pkg-config" ,pkg-config)
137 ("check" ,check)))
138 (inputs `(("glib" ,glib)
fa40e4d4 139 ("libotr" ,libotr)
8b3099cf 140 ("gnutls" ,gnutls)
8b3099cf
MW
141 ("python" ,python-2)
142 ("perl" ,perl)))
143 (arguments
144 `(#:phases (alist-cons-after
145 'install 'install-etc
146 (lambda* (#:key (make-flags '()) #:allow-other-keys)
147 (zero? (apply system* "make" "install-etc" make-flags)))
148 (alist-replace
149 'configure
150 ;; bitlbee's configure script does not tolerate many of the
151 ;; variable settings that Guix would pass to it.
152 (lambda* (#:key outputs #:allow-other-keys)
153 (zero? (system* "./configure"
154 (string-append "--prefix="
155 (assoc-ref outputs "out"))
156 "--otr=1")))
157 %standard-phases))))
158 (synopsis "IRC to instant messaging gateway")
159 (description "BitlBee brings IM (instant messaging) to IRC clients, for
160people who have an IRC client running all the time and don't want to run an
161additional IM client. BitlBee currently supports XMPP/Jabber (including
162Google Talk), MSN Messenger, Yahoo! Messenger, AIM and ICQ, and the Twitter
163microblogging network (plus all other Twitter API compatible services like
164identi.ca and status.net).")
165 (home-page "http://www.bitlbee.org/")
29e83e1c 166 (license (list license:gpl2+ license:bsd-2))))
8b3099cf 167
b977cd2b
JL
168(define-public hexchat
169 (package
170 (name "hexchat")
8ea83d60 171 (version "2.12.2")
b977cd2b
JL
172 (source (origin
173 (method url-fetch)
174 (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
175 version ".tar.xz"))
176 (sha256
177 (base32
8ea83d60 178 "1xnclfbrgbkqndxygi5f27q00jd7yy54jbd1061jmhxa6wzpibbd"))))
b977cd2b
JL
179 (build-system gnu-build-system)
180 (native-inputs `(("pkg-config" ,pkg-config)
181 ("intltool" ,intltool)))
182 (inputs `(("dbus-glib" ,dbus-glib)
183 ("dbus" ,dbus)
184 ("enchant" ,enchant)
185 ("glib:bin" ,glib "bin") ;need glib-genmarshal
186 ("gtk" ,gtk+-2)
187 ("libcanberra" ,libcanberra)
188 ("libnotify" ,libnotify)
189 ("openssl" ,openssl)
71af71dc
TGR
190
191 ;; Bindings for add-on scripts.
192 ("luajit" ,luajit)
193 ("perl-xml-parser" ,perl-xml-parser)
194 ("python-2" ,python-2)))
b977cd2b
JL
195 (synopsis "Graphical IRC Client")
196 (description
71af71dc
TGR
197 "HexChat lets you connect to multiple IRC networks at once. The main
198window shows the list of currently connected networks and their channels, the
199current conversation and the list of users. It uses colors to differentiate
200between users and to highlight messages. It checks spelling using available
b977cd2b
JL
201dictionaries. HexChat can be extended with multiple addons.")
202 (home-page "http://hexchat.net/")
29e83e1c 203 (license license:gpl2+)))
b977cd2b 204
ea119a28
TUBK
205(define-public ngircd
206 (package
207 (name "ngircd")
208 (version "22")
209 (source (origin
210 (method url-fetch)
211 (uri (string-append "http://arthur.barton.de/pub/ngircd/ngircd-"
212 version ".tar.xz"))
213 (sha256
214 (base32
215 "17k3g9qd9d010czk5846qxvzkmw4fihv8l6m2a2287crbxm3xhd4"))
fc1adab1
AK
216 (patches (search-patches "ngircd-no-dns-in-tests.patch"
217 "ngircd-handle-zombies.patch"))))
ea119a28
TUBK
218 (build-system gnu-build-system)
219 ;; Needed for the test suite.
220 (native-inputs `(("procps" ,procps)
221 ("expect" ,expect)
222 ("inetutils" ,inetutils)))
8f3afba4 223 ;; XXX Add libident.
ea119a28 224 (inputs `(("zlib" ,zlib)
8f3afba4 225 ("libwrap" ,tcp-wrappers)
ea119a28
TUBK
226 ("gnutls" ,gnutls)
227 ,@(if (string-suffix? "-linux"
228 (or (%current-target-system)
229 (%current-system)))
230 `(("linux-pam" ,linux-pam))
231 '())))
232 (arguments
233 `(#:configure-flags
8f3afba4 234 '("--with-gnutls" "--with-iconv" "--enable-ipv6" "--with-tcp-wrappers"
ea119a28
TUBK
235 ,@(if (string-suffix? "-linux"
236 (or (%current-target-system)
237 (%current-system)))
238 '("--with-pam")
239 '()))
240 #:phases
241 ;; Necessary for the test suite.
242 (alist-cons-after
243 'configure 'post-configure
244 (lambda _
245 (substitute* "src/ngircd/Makefile"
9af288a6
TUBK
246 (("/bin/sh") (which "sh")))
247 ;; The default getpid.sh does a sloppy grep over 'ps -ax' output,
248 ;; which fails arbitrarily.
249 (with-output-to-file "src/testsuite/getpid.sh"
250 (lambda ()
251 (display
252 (string-append
253 "#!" (which "sh") "\n"
254 "ps -C \"$1\" -o pid=\n"))))
255 ;; Our variant of getpid.sh does not work for interpreter names if a
256 ;; shebang script is run directly as "./foo", so patch cases where
257 ;; the test suite relies on this.
258 (substitute* "src/testsuite/start-server.sh"
259 ;; It runs 'getpid.sh sh' to test if it works at all. Run it on
260 ;; 'make' instead.
261 (("getpid.sh sh") "getpid.sh make")))
ea119a28
TUBK
262 %standard-phases)))
263 (home-page "http://ngircd.barton.de/")
264 (synopsis "Lightweight Internet Relay Chat server for small networks")
265 (description
266 "ngIRCd is a lightweight Internet Relay Chat server for small or private
267networks. It is easy to configure, can cope with dynamic IP addresses, and
268supports IPv6, SSL-protected connections as well as PAM for authentication.")
29e83e1c 269 (license license:gpl2+)))
ea119a28 270
b1a2bc89
MW
271(define-public pidgin
272 (package
273 (name "pidgin")
e31f05d4 274 (version "2.11.0")
b1a2bc89
MW
275 (source
276 (origin
277 (method url-fetch)
278 (uri (string-append "mirror://sourceforge/pidgin/Pidgin/"
279 version "/" name "-" version ".tar.bz2"))
280 (sha256
281 (base32
e31f05d4 282 "0crkggjj6y07v1kdwil9vw532b0vrs6p33nmlvdkpnl60m2169pp"))
fc1adab1 283 (patches (search-patches "pidgin-add-search-path.patch"))))
b1a2bc89
MW
284 (build-system glib-or-gtk-build-system)
285 (native-inputs
286 `(("pkg-config" ,pkg-config)
287 ("check" ,check)
288 ("intltool" ,intltool)
289 ("gconf" ,gconf)
290 ("python" ,python-2)
291 ("doxygen" ,doxygen)))
292 (inputs
293 `(("gtk+" ,gtk+-2)
294 ("libgcrypt" ,libgcrypt)
295 ("gnutls" ,gnutls)
296 ("cyrus-sasl" ,cyrus-sasl)
297 ("dbus" ,dbus)
298 ("dbus-glib" ,dbus-glib)
299 ("python2-dbus" ,python2-dbus)
300 ("libidn" ,libidn)
301 ("libltdl" ,libltdl)
302 ("libxml2" ,libxml2)
303 ;; TODO: gstreamer: patches needed to support gstreamer-1.0 or later
304 ;; TODO: farstream
305 ;; TODO: meanwhile
306 ;; TODO: network-manager
307 ;; TODO: gtkspell
308 ;; TODO: libxephyr
309 ;; TODO: libgadu
310 ("libxslt" ,libxslt)
311 ("avahi" ,avahi)
312 ("ncurses" ,ncurses)
313 ("sqlite" ,sqlite)
314 ("libice" ,libice)
315 ("libsm" ,libsm)
316 ("libxscrnsaver" ,libxscrnsaver)
317 ("startup-notification" ,startup-notification)))
318 (arguments
319 `(#:configure-flags
320 (list "--disable-gtkspell"
321 "--disable-tcl"
322 "--disable-meanwhile"
323 "--disable-nm" ; XXX remove when we have network-manager
324 "--disable-vv" ; XXX remove when we have farstream and gstreamer
325 "--disable-gstreamer" ; XXX patches needed to support gstreamer-1.0
326 "--enable-cyrus-sasl"
327 (string-append "--with-ncurses-headers="
328 (assoc-ref %build-inputs "ncurses")
329 "/include"))))
330 (native-search-paths
331 (list (search-path-specification
332 (variable "PURPLE_PLUGIN_PATH")
333 (files (list (string-append "lib/purple-"
334 (version-prefix version 1))
335 "lib/pidgin")))))
336 (home-page "http://www.pidgin.im/")
337 (synopsis "Graphical multi-protocol instant messaging client")
338 (description
339 "Pidgin is a modular instant messaging client that supports many popular
340chat protocols.")
341 (license
342 (list
29e83e1c 343 license:gpl2+ ; Most of the code
344 license:lgpl2.1 ; GG protocol plugin (libpurple/protocols/gg/lib)
345 license:lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
b1a2bc89 346 ;; The following licenses cover the zephyr protocol plugin:
29e83e1c 347 (license:non-copyleft
b1a2bc89
MW
348 "file://libpurple/protocols/zephyr/mit-copyright.h"
349 "See libpurple/protocols/zephyr/mit-copyright.h in the distribution.")
29e83e1c 350 (license:non-copyleft
b1a2bc89
MW
351 "file://libpurple/protocols/zephyr/mit-sipb-copyright.h"
352 "See libpurple/protocols/zephyr/mit-sipb-copyright.h in the distribution.")))))
353
0a143f67
MW
354(define-public pidgin-otr
355 (package
356 (name "pidgin-otr")
f9733422 357 (version "4.0.2")
0a143f67
MW
358 (source (origin
359 (method url-fetch)
360 (uri (string-append "https://otr.cypherpunks.ca/"
361 name "-" version ".tar.gz"))
362 (sha256
363 (base32
f9733422 364 "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl"))))
0a143f67
MW
365 (build-system gnu-build-system)
366 (native-inputs
367 `(("pkg-config" ,pkg-config)
368 ("intltool" ,intltool)))
369 (inputs
370 `(("pidgin" ,pidgin)
371 ("libotr" ,libotr)
372 ("libgpg-error" ,libgpg-error)
373 ("libgcrypt" ,libgcrypt)
374 ("glib" ,glib)
375 ("gtk+" ,gtk+-2)))
376 (home-page "https://otr.cypherpunks.ca/")
377 (synopsis "Off-the-Record Messaging plugin for Pidgin")
378 (description
379 "Pidgin-OTR is a plugin that adds support for OTR to the Pidgin instant
380messaging client. OTR (Off-the-Record) Messaging allows you to have private
381conversations over instant messaging by providing: (1) Encryption: No one else
382can read your instant messages. (2) Authentication: You are assured the
383correspondent is who you think it is. (3) Deniability: The messages you send
384do not have digital signatures that are checkable by a third party. Anyone
385can forge messages after a conversation to make them look like they came from
386you. However, during a conversation, your correspondent is assured the
387messages he sees are authentic and unmodified. (4) Perfect forward secrecy:
388If you lose control of your private keys, no previous conversation is
389compromised.")
29e83e1c 390 (license license:gpl2)))
0a143f67 391
a10052ac
DT
392(define-public znc
393 (package
394 (name "znc")
555d02e7 395 (version "1.6.3")
a10052ac
DT
396 (source (origin
397 (method url-fetch)
eb2371bc 398 (uri (string-append "http://znc.in/releases/archive/znc-"
a10052ac
DT
399 version ".tar.gz"))
400 (sha256
401 (base32
555d02e7 402 "09xqi5fs40x6nj9gq99bnw1a7saq96bvqxknxx0ilq7yfvg4c733"))))
a10052ac
DT
403 (build-system gnu-build-system)
404 (arguments
405 '(#:tests? #f ; tries to download GoogleTest with wget
406 #:configure-flags '("--enable-python"
407 "--enable-perl"
408 "--enable-cyrus")))
409 (native-inputs
410 `(("pkg-config" ,pkg-config)
411 ("perl" ,perl)
412 ("python" ,python)))
413 (inputs
414 `(("openssl" ,openssl)
415 ("zlib" ,zlib)
416 ("icu4c" ,icu4c)
417 ("cyrus-sasl" ,cyrus-sasl)))
418 (home-page "http://znc.in")
419 (synopsis "IRC network bouncer")
420 (description "ZNC is an IRC network bouncer or BNC. It can detach the
421client from the actual IRC server, and also from selected channels. Multiple
422clients from different locations can connect to a single ZNC account
423simultaneously and therefore appear under the same nickname on IRC.")
29e83e1c 424 (license license:asl2.0)))
a10052ac 425
246bc76a
RW
426(define-public python-nbxmpp
427 (package
428 (name "python-nbxmpp")
429 (version "0.5.3")
430 (source
431 (origin
432 (method url-fetch)
433 (uri (string-append "https://pypi.python.org/packages/source/n/nbxmpp/"
434 "nbxmpp-" version ".tar.gz"))
435 (sha256
436 (base32
437 "0dcr786dyips1fdvgsn8yvpgcz5j7217fi05c29cfypdl8jnp6mp"))))
438 (build-system python-build-system)
439 ;; No tests included
440 (arguments `(#:tests? #f))
441 (home-page "http://python-nbxmpp.gajim.org")
442 (synopsis "Non-blocking Jabber/XMPP module")
443 (description
444 "The goal of this python library is to provide a way for Python
445applications to use Jabber/XMPP networks in a non-blocking way. This library
446was initially a fork of xmpppy, but is using non-blocking sockets.")
29e83e1c 447 (license license:gpl3+)))
246bc76a
RW
448
449(define-public python2-nbxmpp
450 (package-with-python2 python-nbxmpp))
451
1f321f87
RW
452(define-public gajim
453 (package
454 (name "gajim")
0f6b6cb9 455 (version "0.16.6")
1f321f87
RW
456 (source (origin
457 (method url-fetch)
458 (uri (string-append "https://gajim.org/downloads/"
459 (version-major+minor version)
460 "/gajim-" version ".tar.bz2"))
461 (sha256
462 (base32
0f6b6cb9 463 "1p3qwzy07f0wkika9yigyiq167l2k6wn12flqa7x55z4ihbysmqk"))))
1f321f87
RW
464 (build-system gnu-build-system)
465 (arguments
0f6b6cb9 466 `(#:phases
1f321f87
RW
467 (modify-phases %standard-phases
468 (add-after 'install 'wrap-program
0f6b6cb9
AI
469 (lambda* (#:key outputs #:allow-other-keys)
470 ;; Make sure all Python scripts run with the correct PYTHONPATH.
471 (let ((out (assoc-ref outputs "out"))
472 (path (getenv "PYTHONPATH")))
473 (for-each (lambda (name)
474 (let ((file (string-append out "/bin/" name)))
475 ;; Wrapping destroys identification of intended
476 ;; application, so we need to override "APP".
477 (substitute* file
478 (("APP=`basename \\$0`")
479 (string-append "APP=" name)))
480 (wrap-program file
481 `("PYTHONPATH" ":" prefix (,path)))))
482 '("gajim" "gajim-remote" "gajim-history-manager")))
483 #t)))))
1f321f87
RW
484 (native-inputs
485 `(("intltool" ,intltool)))
486 (propagated-inputs
487 `(("python2-nbxmpp" ,python2-nbxmpp)
488 ("python2-pyopenssl" ,python2-pyopenssl)
489 ("python2-gnupg" ,python2-gnupg)))
490 (inputs
491 `(("python2-pygtk" ,python2-pygtk)
492 ("python" ,python-2)))
493 (home-page "https://gajim.org/")
494 (synopsis "Jabber (XMPP) client")
495 (description "Gajim is a feature-rich and easy to use Jabber/XMPP client.
496Among its features are: a tabbed chat window and single window modes; support
497for group chat (with Multi-User Chat protocol), invitation, chat to group chat
498transformation; audio and video conferences; file transfer; TLS, GPG and
499end-to-end encryption support; XML console.")
d6465efa 500 (license license:gpl3)))
1f321f87 501
1ae27aac
RW
502(define-public prosody
503 (package
504 (name "prosody")
505 (version "0.9.10")
506 (source (origin
507 (method url-fetch)
508 (uri (string-append "https://prosody.im/downloads/source/"
509 "prosody-" version ".tar.gz"))
510 (sha256
511 (base32
512 "0bv6s5c0iizz015hh1lxlwlw1iwvisywajm2rcrbdfyrskzfwdj8"))))
513 (build-system gnu-build-system)
514 (arguments
515 `(#:tests? #f ; no "check" target
7f39e131 516 #:configure-flags (list "--no-example-certs")
1ae27aac
RW
517 #:modules ((ice-9 match)
518 (srfi srfi-1)
519 (guix build gnu-build-system)
520 (guix build utils))
521 #:phases
522 (modify-phases %standard-phases
523 (add-after 'unpack 'fix-configure-script
524 (lambda _
525 ;; The configure script aborts when it encounters unexpected
526 ;; arguments. Make it more tolerant.
527 (substitute* "configure"
528 (("exit 1") ""))
529 #t))
530 (add-after 'install 'wrap-programs
531 (lambda* (#:key inputs outputs #:allow-other-keys)
532 ;; Make sure all executables in "bin" find the required Lua
533 ;; modules at runtime.
534 (let* ((out (assoc-ref outputs "out"))
535 (bin (string-append out "/bin/"))
536 (deps (delete #f (map (match-lambda
537 ((label . directory)
538 (if (string-prefix? "lua" label)
539 directory #f)))
540 inputs)))
541 (path (string-join
542 (map (lambda (path)
543 (string-append path "/share/lua/5.1/?.lua;"
544 path "/share/lua/5.1/?/?.lua"))
545 (cons out deps))
546 ";"))
547 (cpath (string-join
548 (map (lambda (path)
549 (string-append path "/lib/lua/5.1/?.so;"
550 path "/lib/lua/5.1/?/?.so"))
551 (cons out deps))
552 ";")))
553 (for-each (lambda (file)
554 (wrap-program file
555 `("LUA_PATH" ";" = (,path))
556 `("LUA_CPATH" ";" = (,cpath))))
557 (find-files bin ".*"))
558 #t))))))
559 (inputs
560 `(("libidn" ,libidn)
561 ("openssl" ,openssl)
562 ("lua" ,lua-5.1)
563 ("lua5.1-expat" ,lua5.1-expat)
564 ("lua5.1-socket" ,lua5.1-socket)
565 ("lua5.1-filesystem" ,lua5.1-filesystem)
566 ("lua5.1-sec" ,lua5.1-sec)))
567 (home-page "https://prosody.im/")
568 (synopsis "Jabber (XMPP) server")
569 (description "Prosody is a modern XMPP communication server. It aims to
570be easy to set up and configure, and efficient with system resources.
571Additionally, for developers it aims to be easy to extend and give a flexible
572system on which to rapidly develop added functionality, or prototype new
573protocols.")
29e83e1c 574 (license license:x11)))
1ae27aac 575
901c1aae 576(define-public libtoxcore
577 (let ((revision "1")
578 (commit "755f084e8720b349026c85afbad58954cb7ff1d4"))
579 (package
580 (name "libtoxcore")
581 (version (string-append "0.0.0" "-"
582 revision "."(string-take commit 7)))
583 (source (origin
584 (method git-fetch)
585 (uri (git-reference
586 (url "https://github.com/irungentoo/toxcore.git")
587 (commit commit)))
588 (file-name (string-append name "-" version "-checkout"))
589 (sha256
590 (base32
591 "0ap1gvlyihnfivv235dbrgsxsiiz70bhlmlr5gn1027w3h5kqz8w"))))
592 (build-system gnu-build-system)
593 (native-inputs
594 `(("autoconf" ,autoconf)
595 ("automake" ,automake)
596 ("libtool" ,libtool)
597 ;; TODO: Add when test suite is capable of passing.
598 ;; ("check" ,check)
599 ("pkg-config" ,pkg-config)))
600 (inputs
601 `(("libsodium" ,libsodium)
602 ("opus" ,opus)
603 ("libvpx" ,libvpx)))
604 (arguments
605 `(#:phases
606 (modify-phases %standard-phases
607 (add-after 'unpack 'autoconf
608 (lambda _
609 (zero? (system* "autoreconf" "-vfi")))))
610 #:tests? #f)) ; FIXME: Testsuite fails, reasons unspecific.
611 (synopsis "Library for the Tox encrypted messenger protocol")
612 (description
613 "C library implementation of the Tox encrypted messenger protocol.")
29e83e1c 614 (license license:gpl3+)
901c1aae 615 (home-page "https://tox.chat"))))
616
3b38d78e
EE
617(define-public utox
618 (package
619 (name "utox")
620 (version "0.9.8")
621 (source
622 (origin
623 (method url-fetch)
624 (uri (string-append "https://github.com/GrayHatter/uTox/archive/v"
625 version ".tar.gz"))
626 (file-name (string-append name "-" version ".tar.gz"))
627 (sha256
628 (base32
629 "13hfqbwzcgvfbvf9yjm62aqsvxnpqppb50c88sys43m7022yqcsy"))))
630 (build-system gnu-build-system)
631 (arguments
632 '(#:make-flags (list (string-append "PREFIX=" %output)
633 "CC=gcc")
634 #:tests? #f ; No tests
635 #:phases
636 (modify-phases %standard-phases
637 ;; No configure script
638 (delete 'configure))))
639 (inputs
640 `(("dbus" ,dbus)
641 ("filteraudio" ,filteraudio)
642 ("fontconfig" ,fontconfig)
643 ("freetype" ,freetype)
644 ("libsodium" ,libsodium)
645 ("libtoxcore" ,libtoxcore)
646 ("libvpx" ,libvpx)
647 ("libx11" ,libx11)
648 ("libxext" ,libxext)
649 ("libxrender" ,libxrender)
650 ("openal" ,openal)
651 ("v4l-utils" ,v4l-utils)))
652 (native-inputs
653 `(("pkg-config" ,pkg-config)))
654 (synopsis "Lightweight Tox client")
655 (description "A lightweight Tox client. Tox is a distributed and secure
656instant messenger with audio and video chat capabilities.")
657 (home-page "http://utox.org/")
29e83e1c 658 (license license:gpl3)))
bc1c995e
AP
659
660(define-public qtox
661 (package
662 (name "qtox")
663 (version "1.5.1")
664 (source
665 (origin
666 (method url-fetch)
667 (uri (string-append "https://github.com/qTox/qTox/archive/v"
668 version ".tar.gz"))
669 (sha256
670 (base32 "0y15mc39x54k1kz36cw9412kl1p1p6nzlx97gagv4gg3vybfhbjv"))
671 (file-name (string-append name "-" version ".tar.gz"))))
672 (inputs
673 `(("ffmpeg" ,ffmpeg)
674 ("glib" ,glib)
675 ("gtk+" ,gtk+-2)
676 ("libsodium" ,libsodium)
677 ("libtoxcore" ,libtoxcore)
678 ("libvpx" ,libvpx)
679 ("libxscrnsaver" ,libxscrnsaver)
680 ("libx11" ,libx11)
681 ("openal" ,openal)
682 ("qrencode" ,qrencode)
683 ("qt" ,qt)
684 ("sqlcipher" ,sqlcipher)))
685 (native-inputs
686 `(("pkg-config" ,pkg-config)
687 ("qmake" ,qt)))
688 (build-system gnu-build-system)
689 (arguments
690 '(#:phases
691 (modify-phases %standard-phases
692 (add-after 'unpack 'fix-reproducibility-issues
693 (lambda _
694 (substitute* "src/main.cpp"
695 (("__DATE__") "\"\"")
696 (("__TIME__") "\"\"")
697 (("TIMESTAMP") "\"\""))
698 #t))
699 (replace 'configure
700 (lambda* (#:key outputs #:allow-other-keys)
701 (zero?
702 (system* "qmake"
703 (string-append "PREFIX="
704 (assoc-ref outputs "out")))))))))
705 (home-page "https://qtox.github.io/")
706 (synopsis "Tox chat client using Qt")
707 (description "qTox is a Tox client that follows the Tox design
708guidelines. It provides an easy to use application that allows you to
709connect with friends and family without anyone else listening in.")
710 (license license:gpl3+)))
3b38d78e 711
aeca1c0e 712(define-public pybitmessage
713 (package
714 (name "pybitmessage")
715 (version "0.6.1")
716 (source
717 (origin
718 (method url-fetch)
719 (uri (string-append "https://github.com/Bitmessage/"
720 "PyBitmessage/archive/v" version ".tar.gz"))
721 (file-name (string-append name "-" version ".tar.gz"))
722 (sha256
723 (base32
724 "1ffj7raxpp277kphj98190fxrwfx16vmbspk7k3azg3bh5f5idnf"))))
725 (inputs
726 `(("python" ,python-2)
727 ("python:tk" ,python-2 "tk")
728 ("openssl" ,openssl)
729 ("sqlite" ,sqlite)
730 ("qt" ,qt-4)
731 ("python2-pyqt-4" ,python2-pyqt-4)
732 ("python2-sip" ,python2-sip)
733 ("python2-pysqlite" ,python2-pysqlite)
734 ("python2-pyopenssl" ,python2-pyopenssl)))
735 (native-inputs
736 `(("pkg-config" ,pkg-config)))
737 (build-system gnu-build-system)
738 (arguments
739 `(#:imported-modules ((guix build python-build-system)
740 ,@%gnu-build-system-modules)
741 #:make-flags (list (string-append "PREFIX="
742 (assoc-ref %outputs "out")))
743 #:tests? #f ; no test target
744 #:phases
745 (modify-phases %standard-phases
746 (add-before 'build 'fix-makefile
747 (lambda* (#:key inputs #:allow-other-keys)
748 (substitute* "Makefile"
749 (("mkdir -p \\$\\{DESTDIR\\}/usr") "")
750 (("/usr/local") "")
751 (("/usr") "")
752 (("#!/bin/sh") (string-append "#!" (which "bash")))
753 (("python2") (which "python"))
754 (("/opt/openssl-compat-bitcoin/lib/")
755 (string-append (assoc-ref inputs "openssl") "/lib/")))
756 #t))
757 (add-after 'unpack 'fix-unmatched-python-shebangs
758 (lambda* (#:key inputs #:allow-other-keys)
759 (substitute* "src/bitmessagemain.py"
760 (("#!/usr/bin/env python2.7")
761 (string-append "#!" (which "python"))))
762 (substitute* "src/bitmessagecli.py"
763 (("#!/usr/bin/env python2.7.x")
764 (string-append "#!" (which "python"))))
765 #t))
766 (add-after 'unpack 'fix-depends
767 (lambda* (#:key inputs #:allow-other-keys)
768 (substitute* "src/depends.py"
769 (("libcrypto.so")
770 (string-append (assoc-ref inputs "openssl")
771 "/lib/libcrypto.so")))
772 #t))
773 (add-after 'unpack 'fix-local-files-in-paths
774 (lambda* (#:key outputs #:allow-other-keys)
775 (substitute* "src/proofofwork.py"
776 (("bitmsghash.so")
777 (string-append (assoc-ref outputs "out")
778 "/lib/bitmsghash.so")))
779 #t))
780 (add-after 'unpack 'fix-pyelliptic
781 (lambda* (#:key inputs #:allow-other-keys)
782 (substitute* "src/pyelliptic/openssl.py"
783 (("libcrypto.so")
784 (string-append (assoc-ref inputs "openssl")
785 "/lib/libcrypto.so"))
786 (("libssl.so")
787 (string-append (assoc-ref inputs "openssl")
788 "/lib/libssl.so")))
789 #t))
790 ;; XXX: Make does not build and install bitmsghash, do it
791 ;; and place it in /lib.
792 (add-before 'build 'build-and-install-bitmsghash
793 (lambda* (#:key outputs #:allow-other-keys)
794 (chdir "src/bitmsghash")
795 (system* "make")
796 (chdir "../..")
797 (install-file "src/bitmsghash/bitmsghash.so"
798 (string-append (assoc-ref outputs "out") "/lib"))
799 #t))
800 (add-after 'install 'wrap
801 (@@ (guix build python-build-system) wrap)))))
802 (license license:expat)
803 (description
804 "Distributed and trustless peer-to-peer communications protocol
805for sending encrypted messages to one person or many subscribers.")
806 (synopsis "Distributed peer-to-peer communication")
807 (home-page "https://bitmessage.org/")))
808
c788c5fe
JD
809(define-public ytalk
810 (package
811 (name "ytalk")
812 (version "3.3.0")
813 (source
814 (origin
815 (method url-fetch)
816 (uri (string-append "ftp://ftp.ourproject.org/pub/ytalk/ytalk-"
817 version ".tar.gz"))
818 (sha256
819 (base32
820 "1d3jhnj8rgzxyxjwfa22vh45qwzjvxw1qh8fz6b7nfkj3zvk9jvf"))))
821 (build-system gnu-build-system)
822 (inputs
823 `(("ncurses" ,ncurses)))
824 (home-page "http://ytalk.ourproject.org")
825 (synopsis "Multi-user chat program")
826 (description "Ytalk is a replacement for the BSD talk program. Its main
827advantage is the ability to communicate with any arbitrary number of users at
828once. It supports both talk protocols (\"talk\" and \"ntalk\") and can communicate
829with several different talk daemons at the same time.")
830 (license license:gpl2+)))
831
3973e137 832(define-public gloox
833 (package
834 (name "gloox")
835 (version "1.0.17")
836 (source
837 (origin
838 (method url-fetch)
839 (uri (string-append "https://camaya.net/download/gloox-"
840 version ".tar.bz2"))
841 (sha256
842 (base32
843 "09c01jr5nrm7f1ly42wg0pqqscmp48pv8y2fjx1vwbavjxdq59ri"))))
844 (build-system gnu-build-system)
845 (inputs
846 `(("libidn" ,libidn)
847 ("gnutls" ,gnutls)
848 ("zlib" ,zlib)))
849 (native-inputs
850 `(("pkg-config" ,pkg-config)))
851 (synopsis "Portable high-level Jabber/XMPP library for C++")
852 (description
853 "gloox is a full-featured Jabber/XMPP client library,
854written in ANSI C++. It makes writing spec-compliant clients easy
855and allows for hassle-free integration of Jabber/XMPP functionality
856into existing applications.")
857 (home-page "https://camaya.net/gloox")
858 (license license:gpl3)))
c788c5fe 859
7c706558 860;;; messaging.scm ends here