gnu: quaternion: Update to 0.0.9.4e.
[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>
74b86713 3;;; Copyright © 2014, 2017 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>
b11af07a 6;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
9e21a1c8 7;;; Copyright © 2015, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
3c986a7d 8;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
bc1c995e 9;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
5cfec72f 10;;; Copyright © 2016, 2017, 2018, 2019 Clément Lassieur <clement@lassieur.org>
13292ee5 11;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
a1da0fb2 12;;; Copyright © 2017, 2018, 2020 Arun Isaac <arunisaac@systemreboot.net>
d774fabe 13;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
d109b1e8 14;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
90eb705d 15;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
c2a601c9 16;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
31060bff 17;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
ba2fa414 18;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
638a108f 19;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
85ad4ffb 20;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
b40f4052 21;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
79edfcf2 22;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
93600aae 23;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
7c706558
MW
24;;;
25;;; This file is part of GNU Guix.
26;;;
27;;; GNU Guix is free software; you can redistribute it and/or modify it
28;;; under the terms of the GNU General Public License as published by
29;;; the Free Software Foundation; either version 3 of the License, or (at
30;;; your option) any later version.
31;;;
32;;; GNU Guix is distributed in the hope that it will be useful, but
33;;; WITHOUT ANY WARRANTY; without even the implied warranty of
34;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
35;;; GNU General Public License for more details.
36;;;
37;;; You should have received a copy of the GNU General Public License
38;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
39
40(define-module (gnu packages messaging)
8b3099cf 41 #:use-module (gnu packages)
661da251 42 #:use-module (gnu packages admin)
bc1c995e 43 #:use-module (gnu packages aidc)
cd4a232d 44 #:use-module (gnu packages aspell)
661da251 45 #:use-module (gnu packages audio)
b1a2bc89
MW
46 #:use-module (gnu packages autotools)
47 #:use-module (gnu packages avahi)
5b494618 48 #:use-module (gnu packages base)
661da251
TGR
49 #:use-module (gnu packages bash)
50 #:use-module (gnu packages bison)
44ddf0f1 51 #:use-module (gnu packages boost)
b1a2bc89 52 #:use-module (gnu packages check)
661da251 53 #:use-module (gnu packages compression)
57163f91 54 #:use-module (gnu packages cpp)
901c1aae 55 #:use-module (gnu packages crypto)
a829c650 56 #:use-module (gnu packages curl)
b1a2bc89
MW
57 #:use-module (gnu packages cyrus-sasl)
58 #:use-module (gnu packages databases)
99828fa7 59 #:use-module (gnu packages documentation)
b977cd2b 60 #:use-module (gnu packages enchant)
661da251 61 #:use-module (gnu packages fontutils)
ebfc2ecc 62 #:use-module (gnu packages gettext)
661da251 63 #:use-module (gnu packages glib)
b977cd2b 64 #:use-module (gnu packages gnome)
661da251 65 #:use-module (gnu packages gnupg)
403604c3 66 #:use-module (gnu packages gperf)
b977cd2b 67 #:use-module (gnu packages gtk)
661da251
TGR
68 #:use-module (gnu packages guile)
69 #:use-module (gnu packages icu4c)
61f81618 70 #:use-module (gnu packages image)
661da251 71 #:use-module (gnu packages less)
b977cd2b 72 #:use-module (gnu packages libcanberra)
b1a2bc89 73 #:use-module (gnu packages libidn)
661da251 74 #:use-module (gnu packages linux)
57163f91 75 #:use-module (gnu packages logging)
1ae27aac 76 #:use-module (gnu packages lua)
661da251 77 #:use-module (gnu packages man)
b40f4052 78 #:use-module (gnu packages markup)
b1a2bc89 79 #:use-module (gnu packages ncurses)
661da251
TGR
80 #:use-module (gnu packages networking)
81 #:use-module (gnu packages pcre)
82 #:use-module (gnu packages perl)
83 #:use-module (gnu packages photo)
403604c3 84 #:use-module (gnu packages php)
8b3099cf 85 #:use-module (gnu packages pkg-config)
f65fdd95 86 #:use-module (gnu packages protobuf)
8b3099cf 87 #:use-module (gnu packages python)
cc6f4912 88 #:use-module (gnu packages python-crypto)
f65fdd95 89 #:use-module (gnu packages python-web)
44d10b1f 90 #:use-module (gnu packages python-xyz)
661da251
TGR
91 #:use-module (gnu packages qt)
92 #:use-module (gnu packages readline)
cd0322a3 93 #:use-module (gnu packages sqlite)
ea119a28 94 #:use-module (gnu packages tcl)
661da251 95 #:use-module (gnu packages texinfo)
61f81618 96 #:use-module (gnu packages textutils)
a10052ac 97 #:use-module (gnu packages tls)
901c1aae 98 #:use-module (gnu packages video)
ebfc2ecc 99 #:use-module (gnu packages web)
661da251 100 #:use-module (gnu packages xdisorg)
3b38d78e 101 #:use-module (gnu packages xiph)
661da251
TGR
102 #:use-module (gnu packages xml)
103 #:use-module (gnu packages xorg)
104 #:use-module (guix build-system cmake)
105 #:use-module (guix build-system glib-or-gtk)
106 #:use-module (guix build-system gnu)
107 #:use-module (guix build-system meson)
108 #:use-module (guix build-system perl)
109 #:use-module (guix build-system python)
34e31612 110 #:use-module (guix build-system qt)
435d8a83 111 #:use-module (guix build-system trivial)
661da251
TGR
112 #:use-module (guix download)
113 #:use-module (guix git-download)
e0aa5b5b 114 #:use-module (guix hg-download)
661da251
TGR
115 #:use-module ((guix licenses) #:prefix license:)
116 #:use-module (guix packages)
117 #:use-module (guix utils))
7c706558
MW
118
119(define-public libotr
120 (package
121 (name "libotr")
89e58e8e 122 (version "4.1.1")
7c706558
MW
123 (source (origin
124 (method url-fetch)
125 (uri (string-append "https://otr.cypherpunks.ca/libotr-"
126 version ".tar.gz"))
127 (sha256
89e58e8e 128 (base32
e3d3546e 129 "1x8rliydhbibmzwdbyr7pd7n87m2jmxnqkpvaalnf4154hj1hfwb"))
fc1adab1 130 (patches (search-patches "libotr-test-auth-fix.patch"))))
7c706558
MW
131 (build-system gnu-build-system)
132 (propagated-inputs
133 `(("libgcrypt" ,libgcrypt))) ; libotr headers include gcrypt.h
134 (inputs `(("libgpg-error" ,libgpg-error)))
89e58e8e 135 (native-inputs `(("perl" ,perl))) ; for the test suite
7c706558
MW
136 (synopsis "Off-the-Record (OTR) Messaging Library and Toolkit")
137 (description
138 "OTR allows you to have private conversations over instant messaging by
008b5257
MW
139providing: (1) Encryption: No one else can read your instant messages. (2)
140Authentication: You are assured the correspondent is who you think it is. (3)
141Deniability: The messages you send do not have digital signatures that are
142checkable by a third party. Anyone can forge messages after a conversation to
143make them look like they came from you. However, during a conversation, your
144correspondent is assured the messages he sees are authentic and
145unmodified. (4) Perfect forward secrecy: If you lose control of your private
146keys, no previous conversation is compromised.")
7c706558 147 (home-page "https://otr.cypherpunks.ca/")
29e83e1c 148 (license (list license:lgpl2.1 license:gpl2))))
7c706558 149
0d549f60
RH
150(define-public libsignal-protocol-c
151 (package
152 (name "libsignal-protocol-c")
05ca7a91 153 (version "2.3.2")
0d549f60
RH
154 (source (origin
155 (method url-fetch)
156 (uri (string-append "https://github.com/WhisperSystems/"
157 "libsignal-protocol-c/archive/v" version
158 ".tar.gz"))
159 (file-name (string-append name "-" version ".tar.gz"))
160 (sha256
161 (base32
05ca7a91 162 "0380hl6fw3ppf265fg897pyrpqygpx4m9j8ifq118bim8lq6z0pk"))))
0d549f60
RH
163 (arguments
164 `(;; Required for proper linking and for tests to run.
165 #:configure-flags '("-DBUILD_SHARED_LIBS=on" "-DBUILD_TESTING=1")))
166 (build-system cmake-build-system)
167 (inputs `( ;; Required for tests:
c695fb76
TGR
168 ("check" ,check)
169 ("openssl" ,openssl)))
170 (native-inputs `(("pkg-config" ,pkg-config)))
0d549f60
RH
171 (home-page "https://github.com/WhisperSystems/libsignal-protocol-c")
172 (synopsis "Implementation of a ratcheting forward secrecy protocol")
173 (description "libsignal-protocol-c is an implementation of a ratcheting
174forward secrecy protocol that works in synchronous and asynchronous
175messaging environments. It can be used with messaging software to provide
176end-to-end encryption.")
177 (license license:gpl3+)))
178
8b3099cf
MW
179(define-public bitlbee
180 (package
181 (name "bitlbee")
f9ea47a9 182 (version "3.6")
8b3099cf
MW
183 (source (origin
184 (method url-fetch)
95791189 185 (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
8b3099cf
MW
186 version ".tar.gz"))
187 (sha256
f9ea47a9 188 (base32 "0zhhcbcr59sx9h4maf8zamzv2waya7sbsl7w74gbyilvy93dw5cz"))))
8b3099cf
MW
189 (build-system gnu-build-system)
190 (native-inputs `(("pkg-config" ,pkg-config)
2a84b550
MB
191 ;; Note: Change to 'check' for versions > 3.6.
192 ("check" ,check-0.12)))
8b3099cf 193 (inputs `(("glib" ,glib)
fa40e4d4 194 ("libotr" ,libotr)
8b3099cf 195 ("gnutls" ,gnutls)
d7554047 196 ("python" ,python)
8b3099cf
MW
197 ("perl" ,perl)))
198 (arguments
dc1d3cde
KK
199 `(#:phases
200 (modify-phases %standard-phases
d7554047
TL
201 (add-before 'configure 'set-python
202 (lambda _ (setenv "PYTHON" (which "python3")) #t))
dc1d3cde
KK
203 (add-after 'install 'install-etc
204 (lambda* (#:key (make-flags '()) #:allow-other-keys)
bea06837 205 (apply invoke "make" "install-etc" make-flags)))
31060bff
PAR
206 (add-after 'install-etc 'install-lib
207 (lambda* (#:key (make-flags '()) #:allow-other-keys)
bea06837 208 (apply invoke "make" "install-dev" make-flags)))
dc1d3cde
KK
209 (replace 'configure
210 ;; bitlbee's configure script does not tolerate many of the
211 ;; variable settings that Guix would pass to it.
212 (lambda* (#:key outputs #:allow-other-keys)
bea06837
RW
213 (invoke "./configure"
214 (string-append "--prefix="
215 (assoc-ref outputs "out"))
216 "--otr=1"))))))
8b3099cf
MW
217 (synopsis "IRC to instant messaging gateway")
218 (description "BitlBee brings IM (instant messaging) to IRC clients, for
219people who have an IRC client running all the time and don't want to run an
220additional IM client. BitlBee currently supports XMPP/Jabber (including
221Google Talk), MSN Messenger, Yahoo! Messenger, AIM and ICQ, and the Twitter
222microblogging network (plus all other Twitter API compatible services like
223identi.ca and status.net).")
85ad4ffb 224 (home-page "https://www.bitlbee.org/")
29e83e1c 225 (license (list license:gpl2+ license:bsd-2))))
8b3099cf 226
b992bfea
PAR
227(define-public bitlbee-discord
228 (package
229 (name "bitlbee-discord")
886e9772 230 (version "0.4.2")
d1ef0e02
TGR
231 (source
232 (origin
233 (method git-fetch)
234 (uri (git-reference
235 (url "https://github.com/sm00th/bitlbee-discord.git")
236 (commit version)))
237 (file-name (git-file-name name version))
238 (sha256
886e9772 239 (base32 "02pigk2vbz0jdz11f96sygdvp1j762yjn62h124fkcsc070g7a2f"))))
b992bfea
PAR
240 (build-system gnu-build-system)
241 (arguments
242 `(#:phases
243 (modify-phases %standard-phases
e6a24cd0 244 (add-after 'unpack 'patch-autogen
b992bfea
PAR
245 (lambda _
246 (let ((sh (which "sh")))
247 (substitute* "autogen.sh" (("/bin/sh") sh))
e6a24cd0
RW
248 (setenv "CONFIG_SHELL" sh))
249 #t))
b992bfea
PAR
250 (replace 'configure
251 (lambda* (#:key inputs outputs #:allow-other-keys)
252 (invoke "./configure"
253 (string-append "--with-plugindir="
254 (assoc-ref outputs "out")
255 "/lib/bitlbee/")))))))
256 (inputs `(("glib" ,glib)))
257 (native-inputs `(("pkg-config" ,pkg-config)
258 ("autoconf" ,autoconf)
259 ("automake" ,automake)
260 ("texinfo" ,texinfo)
261 ("libtool" ,libtool)
886e9772 262 ("bitlbee" ,bitlbee) ; needs bitlbee headers
b992bfea
PAR
263 ("bash" ,bash)))
264 (synopsis "Discord plugin for Bitlbee")
265 (description "Bitlbee-discord is a plugin for Bitlbee witch provides
266access to servers running the Discord protocol.")
267 (home-page "https://github.com/sm00th/bitlbee-discord/")
268 (license license:gpl2+)))
269
a17ab977
LC
270(define-public purple-mattermost
271 (package
272 (name "purple-mattermost")
273 (version "1.2")
274 (home-page "https://github.com/EionRobb/purple-mattermost")
275 (source (origin
276 (method git-fetch)
277 (uri (git-reference (url home-page)
278 (commit (string-append "v" version))))
279 (file-name (git-file-name name version))
280 (sha256
281 (base32
282 "0fm49iv58l09qpy8vkca3am642fxiwcrrh6ykimyc2mas210b5g2"))))
283 (build-system gnu-build-system)
284 (arguments
285 `(#:phases (modify-phases %standard-phases
286 (replace 'configure
287 (lambda* (#:key inputs outputs #:allow-other-keys)
288 ;; Adjust the makefile to install files in the right
289 ;; place.
290 (let ((out (assoc-ref outputs "out")))
291 (substitute* "Makefile"
292 (("MATTERMOST_DEST = .*")
293 (string-append "MATTERMOST_DEST = " out
294 "/lib/purple-2\n")) ;XXX: hardcoded
295 (("MATTERMOST_ICONS_DEST = .*")
296 (string-append "MATTERMOST_ICONS_DEST = "
297 out
298 "/share/pixmaps/pidgin/protocols\n")))
299 #t))))
300 #:make-flags (list "CC=gcc"
301 ,(string-append "PLUGIN_VERSION=" version))
302 #:tests? #f))
303 (inputs `(("glib" ,glib)
304 ("json-glib" ,json-glib)
305 ("discount" ,discount)
306 ("pidgin" ,pidgin)))
307 (native-inputs `(("pkg-config" ,pkg-config)))
308 (synopsis "Purple plug-in to access Mattermost instant messaging")
309 (description
310 "Purple-Mattermost is a plug-in for Purple, the instant messaging library
311used by Pidgin and Bitlbee, among others, to access
312@uref{https://mattermost.com/, Mattermost} servers.")
313 (license license:gpl3+)))
314
b977cd2b
JL
315(define-public hexchat
316 (package
317 (name "hexchat")
d774fabe 318 (version "2.14.3")
b977cd2b
JL
319 (source (origin
320 (method url-fetch)
321 (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
322 version ".tar.xz"))
323 (sha256
324 (base32
d774fabe 325 "10p829jm1r6kidkgf5lhqhyqc5mxdcq96q3zhadsckasvc9rs6lh"))))
c2a601c9
LF
326 (build-system meson-build-system)
327 (native-inputs `(("gettext" ,gettext-minimal)
9e21a1c8 328 ("glib:bin" ,glib "bin") ;need glib-genmarshal
c2a601c9 329 ("perl" ,perl)
74b86713 330 ("pkg-config" ,pkg-config)))
b977cd2b
JL
331 (inputs `(("dbus-glib" ,dbus-glib)
332 ("dbus" ,dbus)
333 ("enchant" ,enchant)
b977cd2b
JL
334 ("gtk" ,gtk+-2)
335 ("libcanberra" ,libcanberra)
336 ("libnotify" ,libnotify)
c2a601c9 337 ("libproxy" ,libproxy)
b977cd2b 338 ("openssl" ,openssl)
71af71dc
TGR
339
340 ;; Bindings for add-on scripts.
341 ("luajit" ,luajit)
342 ("perl-xml-parser" ,perl-xml-parser)
343 ("python-2" ,python-2)))
74b86713 344 (arguments
c2a601c9 345 `(#:phases
74b86713 346 (modify-phases %standard-phases
c2a601c9
LF
347 (add-after 'unpack 'skip-desktop-database-updates
348 (lambda _
349 ;; The build scripts update icon and desktop file databases when
350 ;; DESTDIR is not set. We can't update these databases from
351 ;; within the build chroot, but we also don't set DESTDIR. So, we
352 ;; just skip this code.
353 (substitute* "meson_post_install.py"
354 (("if 'DESTDIR' not in os.environ:")
355 "if False:"))
189be331 356 #t)))))
f255bec6 357 (synopsis "Graphical IRC client")
b977cd2b 358 (description
71af71dc
TGR
359 "HexChat lets you connect to multiple IRC networks at once. The main
360window shows the list of currently connected networks and their channels, the
361current conversation and the list of users. It uses colors to differentiate
362between users and to highlight messages. It checks spelling using available
b977cd2b 363dictionaries. HexChat can be extended with multiple addons.")
e02013b7 364 (home-page "https://hexchat.net/")
29e83e1c 365 (license license:gpl2+)))
b977cd2b 366
ea119a28
TUBK
367(define-public ngircd
368 (package
369 (name "ngircd")
31f6c612 370 (version "25")
ea119a28
TUBK
371 (source (origin
372 (method url-fetch)
6809d937 373 (uri (string-append "https://arthur.barton.de/pub/ngircd/ngircd-"
ea119a28
TUBK
374 version ".tar.xz"))
375 (sha256
376 (base32
31f6c612 377 "0kpf5qi98m9f833r4rx9n6h9p31biwk798jwc1mgzmix7sp7r6f4"))
4fd95d91 378 (patches (search-patches "ngircd-handle-zombies.patch"))))
ea119a28
TUBK
379 (build-system gnu-build-system)
380 ;; Needed for the test suite.
381 (native-inputs `(("procps" ,procps)
382 ("expect" ,expect)
383 ("inetutils" ,inetutils)))
8f3afba4 384 ;; XXX Add libident.
ea119a28 385 (inputs `(("zlib" ,zlib)
8f3afba4 386 ("libwrap" ,tcp-wrappers)
ea119a28
TUBK
387 ("gnutls" ,gnutls)
388 ,@(if (string-suffix? "-linux"
389 (or (%current-target-system)
390 (%current-system)))
391 `(("linux-pam" ,linux-pam))
392 '())))
393 (arguments
394 `(#:configure-flags
8f3afba4 395 '("--with-gnutls" "--with-iconv" "--enable-ipv6" "--with-tcp-wrappers"
ea119a28
TUBK
396 ,@(if (string-suffix? "-linux"
397 (or (%current-target-system)
398 (%current-system)))
399 '("--with-pam")
400 '()))
401 #:phases
341ed63f
TGR
402 (modify-phases %standard-phases
403 ;; Necessary for the test suite.
404 (add-after 'configure 'post-configure
405 (lambda _
406 (substitute* "src/ngircd/Makefile"
407 (("/bin/sh") (which "sh")))
408 ;; The default getpid.sh does a sloppy grep over 'ps -ax' output,
409 ;; which fails arbitrarily.
410 (with-output-to-file "src/testsuite/getpid.sh"
411 (lambda ()
412 (display
413 (string-append
414 "#!" (which "sh") "\n"
415 "ps -C \"$1\" -o pid=\n"))))
416 ;; Our variant of getpid.sh does not match interpreter names
417 ;; when the script's shebang is invoked directly as "./foo".
418 ;; Patch cases where the test suite relies on this.
419 (substitute* "src/testsuite/start-server.sh"
420 ;; It runs 'getpid.sh sh' to test if it works at all. Run it on
421 ;; 'make' instead.
422 (("getpid.sh sh") "getpid.sh make")))))))
6809d937 423 (home-page "https://ngircd.barton.de/")
ea119a28
TUBK
424 (synopsis "Lightweight Internet Relay Chat server for small networks")
425 (description
07b7a665
TGR
426 "ngIRCd is a lightweight @dfn{Internet Relay Chat} (IRC) server for small
427or private networks. It is easy to configure, can cope with dynamic IP
428addresses, and supports IPv6, SSL-protected connections, as well as PAM for
429authentication.")
29e83e1c 430 (license license:gpl2+)))
ea119a28 431
b1a2bc89
MW
432(define-public pidgin
433 (package
434 (name "pidgin")
0fcb0e50 435 (version "2.13.0")
b1a2bc89
MW
436 (source
437 (origin
438 (method url-fetch)
439 (uri (string-append "mirror://sourceforge/pidgin/Pidgin/"
a4cf65c8 440 version "/pidgin-" version ".tar.bz2"))
b1a2bc89 441 (sha256
0fcb0e50 442 (base32 "13vdqj70315p9rzgnbxjp9c51mdzf1l4jg1kvnylc4bidw61air7"))
fc1adab1 443 (patches (search-patches "pidgin-add-search-path.patch"))))
b1a2bc89
MW
444 (build-system glib-or-gtk-build-system)
445 (native-inputs
446 `(("pkg-config" ,pkg-config)
447 ("check" ,check)
448 ("intltool" ,intltool)
449 ("gconf" ,gconf)
450 ("python" ,python-2)
451 ("doxygen" ,doxygen)))
452 (inputs
453 `(("gtk+" ,gtk+-2)
454 ("libgcrypt" ,libgcrypt)
455 ("gnutls" ,gnutls)
456 ("cyrus-sasl" ,cyrus-sasl)
457 ("dbus" ,dbus)
458 ("dbus-glib" ,dbus-glib)
459 ("python2-dbus" ,python2-dbus)
460 ("libidn" ,libidn)
461 ("libltdl" ,libltdl)
462 ("libxml2" ,libxml2)
463 ;; TODO: gstreamer: patches needed to support gstreamer-1.0 or later
464 ;; TODO: farstream
465 ;; TODO: meanwhile
b1a2bc89
MW
466 ;; TODO: gtkspell
467 ;; TODO: libxephyr
468 ;; TODO: libgadu
469 ("libxslt" ,libxslt)
470 ("avahi" ,avahi)
471 ("ncurses" ,ncurses)
569958ae 472 ("network-manager" ,network-manager)
b1a2bc89
MW
473 ("sqlite" ,sqlite)
474 ("libice" ,libice)
475 ("libsm" ,libsm)
476 ("libxscrnsaver" ,libxscrnsaver)
477 ("startup-notification" ,startup-notification)))
478 (arguments
479 `(#:configure-flags
480 (list "--disable-gtkspell"
481 "--disable-tcl"
482 "--disable-meanwhile"
b1a2bc89
MW
483 "--disable-vv" ; XXX remove when we have farstream and gstreamer
484 "--disable-gstreamer" ; XXX patches needed to support gstreamer-1.0
485 "--enable-cyrus-sasl"
486 (string-append "--with-ncurses-headers="
487 (assoc-ref %build-inputs "ncurses")
488 "/include"))))
489 (native-search-paths
490 (list (search-path-specification
491 (variable "PURPLE_PLUGIN_PATH")
492 (files (list (string-append "lib/purple-"
9cf5f134 493 (version-major version))
b1a2bc89 494 "lib/pidgin")))))
dbe2dfa5 495 (home-page "https://www.pidgin.im/")
b1a2bc89
MW
496 (synopsis "Graphical multi-protocol instant messaging client")
497 (description
498 "Pidgin is a modular instant messaging client that supports many popular
499chat protocols.")
500 (license
501 (list
29e83e1c 502 license:gpl2+ ; Most of the code
503 license:lgpl2.1 ; GG protocol plugin (libpurple/protocols/gg/lib)
504 license:lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
b1a2bc89 505 ;; The following licenses cover the zephyr protocol plugin:
29e83e1c 506 (license:non-copyleft
b1a2bc89
MW
507 "file://libpurple/protocols/zephyr/mit-copyright.h"
508 "See libpurple/protocols/zephyr/mit-copyright.h in the distribution.")
29e83e1c 509 (license:non-copyleft
b1a2bc89
MW
510 "file://libpurple/protocols/zephyr/mit-sipb-copyright.h"
511 "See libpurple/protocols/zephyr/mit-sipb-copyright.h in the distribution.")))))
512
0a143f67
MW
513(define-public pidgin-otr
514 (package
515 (name "pidgin-otr")
f9733422 516 (version "4.0.2")
0a143f67
MW
517 (source (origin
518 (method url-fetch)
519 (uri (string-append "https://otr.cypherpunks.ca/"
520 name "-" version ".tar.gz"))
521 (sha256
522 (base32
f9733422 523 "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl"))))
0a143f67
MW
524 (build-system gnu-build-system)
525 (native-inputs
526 `(("pkg-config" ,pkg-config)
527 ("intltool" ,intltool)))
528 (inputs
529 `(("pidgin" ,pidgin)
530 ("libotr" ,libotr)
531 ("libgpg-error" ,libgpg-error)
532 ("libgcrypt" ,libgcrypt)
533 ("glib" ,glib)
534 ("gtk+" ,gtk+-2)))
535 (home-page "https://otr.cypherpunks.ca/")
536 (synopsis "Off-the-Record Messaging plugin for Pidgin")
537 (description
538 "Pidgin-OTR is a plugin that adds support for OTR to the Pidgin instant
539messaging client. OTR (Off-the-Record) Messaging allows you to have private
540conversations over instant messaging by providing: (1) Encryption: No one else
541can read your instant messages. (2) Authentication: You are assured the
542correspondent is who you think it is. (3) Deniability: The messages you send
543do not have digital signatures that are checkable by a third party. Anyone
544can forge messages after a conversation to make them look like they came from
545you. However, during a conversation, your correspondent is assured the
546messages he sees are authentic and unmodified. (4) Perfect forward secrecy:
547If you lose control of your private keys, no previous conversation is
548compromised.")
29e83e1c 549 (license license:gpl2)))
0a143f67 550
a10052ac
DT
551(define-public znc
552 (package
553 (name "znc")
14c6e8b6 554 (version "1.8.0")
a10052ac
DT
555 (source (origin
556 (method url-fetch)
eb2371bc 557 (uri (string-append "http://znc.in/releases/archive/znc-"
a10052ac
DT
558 version ".tar.gz"))
559 (sha256
560 (base32
14c6e8b6 561 "0m5xf60r40pgbg9lyk56dafxj2hj149pn2wf8vzsp8xgq4kv5zcl"))))
2b0f3293 562 (build-system cmake-build-system)
a10052ac 563 (arguments
2b0f3293
TGR
564 `(#:configure-flags
565 (list "-DWANT_CYRUS=ON"
44ddf0f1 566 "-DWANT_I18N=ON"
2b0f3293
TGR
567 "-DWANT_PERL=ON"
568 "-DWANT_PYTHON=ON")
569 #:phases
500fc65b
TGR
570 (modify-phases %standard-phases
571 (add-after 'unpack 'unpack-googletest
2b0f3293 572 ;; Copy the googletest sources to where the CMake build expects them.
500fc65b 573 (lambda* (#:key inputs #:allow-other-keys)
2b0f3293
TGR
574 (let ((source (assoc-ref inputs "googletest-source"))
575 (target "third_party/googletest"))
576 (mkdir-p target)
577 (copy-recursively source target)
578 #t))))))
a10052ac 579 (native-inputs
44ddf0f1
TGR
580 `(("boost" ,boost)
581 ("gettext" ,gettext-minimal)
582 ("googletest-source" ,(package-source googletest))
d7463e01 583 ("pkg-config" ,pkg-config)))
a10052ac 584 (inputs
d7463e01 585 `(("cyrus-sasl" ,cyrus-sasl)
a10052ac 586 ("icu4c" ,icu4c)
d7463e01
TGR
587 ("openssl" ,openssl)
588 ("perl" ,perl)
589 ("python" ,python)
590 ("zlib" ,zlib)))
83e07539 591 (home-page "https://znc.in")
a10052ac 592 (synopsis "IRC network bouncer")
1a544482
TGR
593 (description "ZNC is an @dfn{IRC network bouncer} or @dfn{BNC}. It can
594detach the client from the actual IRC server, and also from selected channels.
595Multiple clients from different locations can connect to a single ZNC account
a10052ac 596simultaneously and therefore appear under the same nickname on IRC.")
29e83e1c 597 (license license:asl2.0)))
a10052ac 598
246bc76a
RW
599(define-public python-nbxmpp
600 (package
601 (name "python-nbxmpp")
bf98373f 602 (version "0.6.10")
246bc76a
RW
603 (source
604 (origin
605 (method url-fetch)
46cb089f 606 (uri (pypi-uri "nbxmpp" version))
246bc76a
RW
607 (sha256
608 (base32
bf98373f 609 "1vq89nhamciblyi5579bppnm4sb0zk5cg5hdipfpz174fxvl2wyd"))))
246bc76a 610 (build-system python-build-system)
46cb089f
TGR
611 (arguments
612 `(#:tests? #f)) ; no tests
613 (home-page "https://dev.gajim.org/gajim/python-nbxmpp")
246bc76a
RW
614 (synopsis "Non-blocking Jabber/XMPP module")
615 (description
616 "The goal of this python library is to provide a way for Python
617applications to use Jabber/XMPP networks in a non-blocking way. This library
46cb089f 618was initially a fork of xmpppy, but uses non-blocking sockets.")
29e83e1c 619 (license license:gpl3+)))
246bc76a
RW
620
621(define-public python2-nbxmpp
622 (package-with-python2 python-nbxmpp))
623
1f321f87
RW
624(define-public gajim
625 (package
626 (name "gajim")
bdb372a6 627 (version "1.1.3")
1f321f87
RW
628 (source (origin
629 (method url-fetch)
630 (uri (string-append "https://gajim.org/downloads/"
631 (version-major+minor version)
632 "/gajim-" version ".tar.bz2"))
633 (sha256
634 (base32
bdb372a6 635 "0bzxwcpdd4ydh6d6mzpr0gxwhcb0x9ympk55fpvm1hcw9d28a716"))))
e2d8b4a8 636 (build-system python-build-system)
1f321f87 637 (arguments
5cfec72f 638 `(#:phases
1f321f87 639 (modify-phases %standard-phases
9e3644a8
CL
640 (add-after 'unpack 'add-plugin-dirs
641 (lambda _
642 (substitute* "gajim/common/configpaths.py"
a624c363
RW
643 (("_paths\\['PLUGINS_USER'\\]\\]")
644 "_paths['PLUGINS_USER']] + \
645([os.getenv('GAJIM_PLUGIN_PATH')] \
646if os.getenv('GAJIM_PLUGIN_PATH') \
647and Path(os.getenv('GAJIM_PLUGIN_PATH')).is_dir() \
648else [])"))
9e3644a8 649 #t))
5cfec72f
CL
650 (replace 'check
651 (lambda _
652 (invoke "python" "./setup.py" "test" "-s" "test.no_gui")))
e3a2dd55 653 (add-after 'install 'wrap-gi-typelib-path
0f6b6cb9 654 (lambda* (#:key outputs #:allow-other-keys)
e2d8b4a8
CL
655 (let ((out (assoc-ref outputs "out")))
656 (for-each
657 (lambda (name)
658 (let ((file (string-append out "/bin/" name))
659 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
660 (wrap-program file
343f5efb
RW
661 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
662 ;; For translations
663 `("XDG_DATA_DIRS" ":" prefix
664 (,(string-append (assoc-ref outputs "out") "/share"))))))
e2d8b4a8
CL
665 '("gajim" "gajim-remote" "gajim-history-manager")))
666 #t))
e2d8b4a8
CL
667 (add-after 'install 'install-icons
668 (lambda* (#:key inputs outputs #:allow-other-keys)
669 (let* ((out (assoc-ref outputs "out"))
670 (adwaita (string-append
671 (assoc-ref inputs "adwaita-icon-theme")
672 "/share/icons/Adwaita"))
673 (hicolor (string-append
674 (assoc-ref inputs "hicolor-icon-theme")
675 "/share/icons/hicolor"))
676 (icons (string-append
677 out "/lib/python"
678 ,(version-major+minor (package-version python))
679 "/site-packages/gajim/data/icons")))
680 (with-directory-excursion icons
681 (symlink adwaita "Adwaita")
682 (copy-recursively hicolor "hicolor")))
8584965b 683 #t))
e3a2dd55 684 (add-after 'install-icons 'wrap-gsettings-schema-dir
8584965b
RH
685 (lambda* (#:key inputs outputs #:allow-other-keys)
686 (wrap-program (string-append (assoc-ref outputs "out")
687 "/bin/gajim")
688 ;; For GtkFileChooserDialog.
689 `("GSETTINGS_SCHEMA_DIR" =
690 (,(string-append (assoc-ref inputs "gtk+")
60c5b444
CL
691 "/share/glib-2.0/schemas"))))
692 #t)))))
9e3644a8
CL
693 (native-search-paths
694 (list (search-path-specification
695 (variable "GAJIM_PLUGIN_PATH")
696 (separator #f) ;single entry
697 (files '("share/gajim/plugins")))
698 ;; Gajim needs to use the propagated inputs of its plugins.
699 (search-path-specification
700 (variable "PYTHONPATH")
701 (files (list (string-append
702 "lib/python"
abad22dd
LC
703
704 ;; FIXME: Cannot use this expression as it would
705 ;; introduce a circular dependency at the top level.
706 ;; (version-major+minor (package-version python))
707 "3.7"
708
9e3644a8 709 "/site-packages"))))))
1f321f87 710 (native-inputs
e2d8b4a8 711 `(("intltool" ,intltool)
37a350ec 712 ("python-docutils" ,python-docutils)
ff337525 713 ("xorg-server" ,xorg-server-for-tests)))
51a0887d 714 (inputs
e2d8b4a8
CL
715 `(("adwaita-icon-theme" ,adwaita-icon-theme)
716 ("gnome-keyring" ,gnome-keyring)
717 ("gtk+" ,gtk+)
718 ("gtkspell3" ,gtkspell3)
719 ("hicolor-icon-theme" ,hicolor-icon-theme)
720 ("libsecret" ,libsecret)
992a4965 721 ("python-cssutils" ,python-cssutils)
e2d8b4a8 722 ("python-dbus" ,python-dbus)
e2d8b4a8 723 ("python-gnupg" ,python-gnupg)
992a4965 724 ("python-keyring" ,python-keyring)
e2d8b4a8
CL
725 ("python-nbxmpp" ,python-nbxmpp)
726 ("python-pillow" ,python-pillow)
992a4965 727 ("python-precis-i18n" ,python-precis-i18n)
e2d8b4a8
CL
728 ("python-pycairo" ,python-pycairo)
729 ("python-pygobject" ,python-pygobject)
730 ("python-pyopenssl" ,python-pyopenssl)
731 ("python-qrcode" ,python-qrcode)))
1f321f87
RW
732 (home-page "https://gajim.org/")
733 (synopsis "Jabber (XMPP) client")
734 (description "Gajim is a feature-rich and easy to use Jabber/XMPP client.
735Among its features are: a tabbed chat window and single window modes; support
736for group chat (with Multi-User Chat protocol), invitation, chat to group chat
737transformation; audio and video conferences; file transfer; TLS, GPG and
738end-to-end encryption support; XML console.")
d6465efa 739 (license license:gpl3)))
1f321f87 740
435d8a83
CL
741(define-public gajim-omemo
742 (package
743 (name "gajim-omemo")
b019965c 744 (version "2.6.29")
435d8a83
CL
745 (source (origin
746 (method url-fetch/zipbomb)
747 (uri (string-append
748 "https://ftp.gajim.org/plugins_releases/omemo_"
749 version ".zip"))
750 (sha256
751 (base32
b019965c 752 "1mif5qkrvxclqbqmq6njini4laznbs5nn82w2f1hkl8c1284dvgi"))))
435d8a83
CL
753 (build-system trivial-build-system)
754 (arguments
755 `(#:modules ((guix build utils))
756 #:builder
757 (begin
758 (use-modules (guix build utils))
759 (let* ((out (assoc-ref %outputs "out"))
760 (share (in-vicinity out "share/gajim/plugins"))
761 (source (assoc-ref %build-inputs "source")))
762 (mkdir-p share)
763 (copy-recursively source share)
764 #t))))
765 (propagated-inputs
766 `(("python-axolotl" ,python-axolotl)))
767 (home-page
768 "https://dev.gajim.org/gajim/gajim-plugins/wikis/OmemoGajimPlugin")
769 (synopsis "Gajim OMEMO plugin")
770 (description
771 "This package provides the Gajim OMEMO plugin. OMEMO is an XMPP
772Extension Protocol (XEP) for secure multi-client end-to-end encryption based
773on Axolotl and PEP.")
774 (license license:gpl3+)))
775
50cb3c8d 776(define-public dino
a1da0fb2
AI
777 (package
778 (name "dino")
779 (version "0.1.0")
780 (source
781 (origin
782 (method url-fetch)
783 (uri (string-append "https://github.com/dino/dino/releases/download/v"
784 version "/dino-" version ".tar.gz"))
785 (sha256
786 (base32
787 "0dcq2jhpywgxrp9x1qqmrl2z50hazspqj547b9zz70apy3y4418h"))))
788 (build-system cmake-build-system)
789 (arguments
790 `(#:tests? #f
791 #:parallel-build? #f ; not supported
792 #:modules ((guix build cmake-build-system)
793 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
794 (guix build utils))
795 #:imported-modules (,@%gnu-build-system-modules
796 (guix build cmake-build-system)
797 (guix build glib-or-gtk-build-system))
798 #:phases
799 (modify-phases %standard-phases
800 (add-after 'install 'glib-or-gtk-wrap
801 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
802 (inputs
803 `(("libgee" ,libgee)
804 ("libsignal-protocol-c" ,libsignal-protocol-c)
805 ("libgcrypt" ,libgcrypt)
806 ("libsoup" ,libsoup)
807 ("qrencode" ,qrencode)
fc58cb5b 808 ("sqlite" ,sqlite)
a1da0fb2
AI
809 ("gpgme" ,gpgme)
810 ("gtk+" ,gtk+)
811 ("glib-networking" ,glib-networking)
812 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
813 (native-inputs
814 `(("pkg-config" ,pkg-config)
815 ("glib" ,glib "bin")
816 ("vala" ,vala)
817 ("gettext" ,gettext-minimal)))
818 (home-page "https://dino.im")
819 (synopsis "Graphical Jabber (XMPP) client")
820 (description "Dino is a Jabber (XMPP) client which aims to fit well into
50cb3c8d 821a graphical desktop environment like GNOME.")
a1da0fb2 822 (license license:gpl3+)))
50cb3c8d 823
1ae27aac
RW
824(define-public prosody
825 (package
826 (name "prosody")
c688e314 827 (version "0.11.3")
1ae27aac
RW
828 (source (origin
829 (method url-fetch)
830 (uri (string-append "https://prosody.im/downloads/source/"
831 "prosody-" version ".tar.gz"))
832 (sha256
833 (base32
c688e314 834 "11xz4milv2962qf75vrdwsvd8sy2332nf69202rmvz5989pvvnng"))))
1ae27aac
RW
835 (build-system gnu-build-system)
836 (arguments
627e6d8c 837 `(#:tests? #f ;tests require "busted"
7f39e131 838 #:configure-flags (list "--no-example-certs")
1ae27aac
RW
839 #:modules ((ice-9 match)
840 (srfi srfi-1)
841 (guix build gnu-build-system)
842 (guix build utils))
843 #:phases
844 (modify-phases %standard-phases
845 (add-after 'unpack 'fix-configure-script
846 (lambda _
847 ;; The configure script aborts when it encounters unexpected
848 ;; arguments. Make it more tolerant.
849 (substitute* "configure"
850 (("exit 1") ""))
851 #t))
84bf2a2e
CL
852 (add-after 'unpack 'fix-makefile
853 (lambda _
627e6d8c 854 (substitute* "GNUmakefile"
84bf2a2e
CL
855 ;; prosodyctl needs to read the configuration file.
856 (("^INSTALLEDCONFIG =.*") "INSTALLEDCONFIG = /etc/prosody\n")
857 ;; prosodyctl needs a place to put auto-generated certificates.
858 (("^INSTALLEDDATA =.*") "INSTALLEDDATA = /var/lib/prosody\n"))
859 #t))
1ae27aac
RW
860 (add-after 'install 'wrap-programs
861 (lambda* (#:key inputs outputs #:allow-other-keys)
862 ;; Make sure all executables in "bin" find the required Lua
863 ;; modules at runtime.
864 (let* ((out (assoc-ref outputs "out"))
865 (bin (string-append out "/bin/"))
866 (deps (delete #f (map (match-lambda
867 ((label . directory)
868 (if (string-prefix? "lua" label)
869 directory #f)))
870 inputs)))
5b494618
CL
871 (lua-path (string-join
872 (map (lambda (path)
873 (string-append
627e6d8c
CL
874 path "/share/lua/5.2/?.lua;"
875 path "/share/lua/5.2/?/?.lua"))
5b494618
CL
876 (cons out deps))
877 ";"))
878 (lua-cpath (string-join
879 (map (lambda (path)
880 (string-append
627e6d8c
CL
881 path "/lib/lua/5.2/?.so;"
882 path "/lib/lua/5.2/?/?.so"))
5b494618
CL
883 (cons out deps))
884 ";"))
885 (openssl (assoc-ref inputs "openssl"))
886 (coreutils (assoc-ref inputs "coreutils"))
887 (path (map (lambda (dir)
888 (string-append dir "/bin"))
889 (list openssl coreutils))))
1ae27aac
RW
890 (for-each (lambda (file)
891 (wrap-program file
5b494618
CL
892 `("LUA_PATH" ";" = (,lua-path))
893 `("LUA_CPATH" ";" = (,lua-cpath))
894 `("PATH" ":" prefix ,path)))
1ae27aac
RW
895 (find-files bin ".*"))
896 #t))))))
897 (inputs
898 `(("libidn" ,libidn)
899 ("openssl" ,openssl)
627e6d8c
CL
900 ("lua" ,lua-5.2)
901 ("lua5.2-bitop" ,lua5.2-bitop)
902 ("lua5.2-expat" ,lua5.2-expat)
903 ("lua5.2-socket" ,lua5.2-socket)
904 ("lua5.2-filesystem" ,lua5.2-filesystem)
905 ("lua5.2-sec" ,lua5.2-sec)))
1ae27aac
RW
906 (home-page "https://prosody.im/")
907 (synopsis "Jabber (XMPP) server")
908 (description "Prosody is a modern XMPP communication server. It aims to
909be easy to set up and configure, and efficient with system resources.
910Additionally, for developers it aims to be easy to extend and give a flexible
911system on which to rapidly develop added functionality, or prototype new
912protocols.")
29e83e1c 913 (license license:x11)))
1ae27aac 914
e0aa5b5b
CL
915(define-public prosody-http-upload
916 (let ((changeset "765735bb590b")
917 (revision "1"))
918 (package
919 (name "prosody-http-upload")
920 (version (string-append "0-" revision "." (string-take changeset 7)))
921 (source (origin
922 (method hg-fetch)
923 (uri (hg-reference
924 (url "https://hg.prosody.im/prosody-modules/")
925 (changeset changeset)))
926 (file-name (string-append name "-" version "-checkout"))
927 (sha256
928 (base32
929 "142wrcism70nf8ffahhd961cqg2pi1h7ic8adfs3zwh0j3pnf41f"))))
930 (build-system trivial-build-system)
931 (arguments
932 '(#:modules ((guix build utils))
933 #:builder
934 (begin
935 (use-modules (guix build utils))
936 (let ((out (assoc-ref %outputs "out"))
937 (source (assoc-ref %build-inputs "source")))
938 (with-directory-excursion (in-vicinity source "mod_http_upload")
939 (install-file "mod_http_upload.lua" out))
940 #t))))
941 (home-page "https://modules.prosody.im/mod_http_upload.html")
942 (synopsis "XEP-0363: Allow clients to upload files over HTTP")
943 (description "This module implements XEP-0363: it allows clients to
944upload files over HTTP.")
945 (license (package-license prosody)))))
946
be1ce9fd
CL
947(define-public prosody-smacks
948 (let ((changeset "67f1d1f22625")
949 (revision "1"))
950 (package
951 (name "prosody-smacks")
952 (version (string-append "0-" revision "." (string-take changeset 7)))
953 (source (origin
954 (method hg-fetch)
955 (uri (hg-reference
956 (url "https://hg.prosody.im/prosody-modules/")
957 (changeset changeset)))
958 (file-name (string-append name "-" version "-checkout"))
959 (sha256
960 (base32
961 "020ngpax30fgarah98yvlj0ni8rcdwq60if03a9hqdw8mic0nxxs"))))
962 (build-system trivial-build-system)
963 (arguments
964 '(#:modules ((guix build utils))
965 #:builder
966 (begin
967 (use-modules (guix build utils))
968 (let ((out (assoc-ref %outputs "out"))
969 (source (assoc-ref %build-inputs "source")))
970 (with-directory-excursion (in-vicinity source "mod_smacks")
971 (install-file "mod_smacks.lua" out))
972 #t))))
973 (home-page "https://modules.prosody.im/mod_smacks.html")
974 (synopsis "XEP-0198: Reliability and fast reconnects for XMPP")
975 (description "This module implements XEP-0198: when supported by both
976the client and server, it can allow clients to resume a disconnected session,
977and prevent message loss.")
978 (license (package-license prosody)))))
979
901c1aae 980(define-public libtoxcore
aaf0e47f
RW
981 (let ((revision "2")
982 (commit "bf69b54f64003d160d759068f4816b2d9b2e1e21"))
901c1aae 983 (package
984 (name "libtoxcore")
985 (version (string-append "0.0.0" "-"
986 revision "."(string-take commit 7)))
987 (source (origin
988 (method git-fetch)
989 (uri (git-reference
990 (url "https://github.com/irungentoo/toxcore.git")
991 (commit commit)))
992 (file-name (string-append name "-" version "-checkout"))
993 (sha256
994 (base32
aaf0e47f 995 "11lqra4yd7v293cp286ynff5lqz1pprzg8vn3wq6vryj08g88zqb"))))
901c1aae 996 (build-system gnu-build-system)
aaf0e47f 997 (arguments `(#:tests? #f)) ; FIXME: tests hang, some fail.
901c1aae 998 (native-inputs
999 `(("autoconf" ,autoconf)
1000 ("automake" ,automake)
1001 ("libtool" ,libtool)
aaf0e47f 1002 ("check" ,check)
901c1aae 1003 ("pkg-config" ,pkg-config)))
1004 (inputs
1005 `(("libsodium" ,libsodium)
1006 ("opus" ,opus)
1007 ("libvpx" ,libvpx)))
901c1aae 1008 (synopsis "Library for the Tox encrypted messenger protocol")
1009 (description
1010 "C library implementation of the Tox encrypted messenger protocol.")
29e83e1c 1011 (license license:gpl3+)
901c1aae 1012 (home-page "https://tox.chat"))))
1013
0ed5554a 1014;; Some tox clients move to c-toxcore, which seems to be where all the
1015;; recent development happens. It is run by the same developers as toxcore,
1016;; forked into a group namespace.
1017(define-public c-toxcore
1018 (package
1019 (name "c-toxcore")
90eb705d 1020 (version "0.2.9")
0ed5554a 1021 (source
1022 (origin
60186836
RW
1023 (method git-fetch)
1024 (uri (git-reference
1025 (url "https://github.com/TokTok/c-toxcore.git")
1026 (commit (string-append "v" version))))
1027 (file-name (git-file-name name version))
0ed5554a 1028 (sha256
1029 (base32
90eb705d 1030 "0aljr9hqybla6p61af6fdkv0x8gph7c2wacqqa9hq2z9w0p4fs5j"))))
230bd4bb
RH
1031 (arguments
1032 `(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable
1033 ; for now.
9840b8fa 1034 (build-system cmake-build-system)
0ed5554a 1035 (native-inputs
9840b8fa
RW
1036 `(("pkg-config" ,pkg-config)))
1037 (propagated-inputs
0ed5554a 1038 `(("libsodium" ,libsodium)
1039 ("opus" ,opus)
1040 ("libvpx" ,libvpx)))
9840b8fa 1041 (home-page "https://tox.chat")
0ed5554a 1042 (synopsis "Library for the Tox encrypted messenger protocol")
1043 (description
9840b8fa
RW
1044 "Official fork of the C library implementation of the Tox encrypted
1045messenger protocol.")
1046 (license license:gpl3+)))
0ed5554a 1047
3b38d78e
EE
1048(define-public utox
1049 (package
1050 (name "utox")
48c97c27 1051 (version "0.17.1")
3b38d78e
EE
1052 (source
1053 (origin
c11df2e8
RH
1054 (method git-fetch)
1055 (uri (git-reference
1056 (url "https://github.com/uTox/uTox.git")
48c97c27 1057 (commit (string-append "v" version))
c11df2e8
RH
1058 (recursive? #t))) ;; Needed for 'minini' git submodule.
1059 (file-name (string-append name "-" version "-checkout"))
3b38d78e
EE
1060 (sha256
1061 (base32
48c97c27 1062 "17kwqw24iqljp2icih9k6ikx12gzr8zzqr8y5h35bg8m5s8pasq5"))))
c413c6ad 1063 (build-system cmake-build-system)
3b38d78e 1064 (arguments
c11df2e8
RH
1065 `(#:configure-flags '("-DENABLE_TESTS=on")
1066 #:phases
3b38d78e 1067 (modify-phases %standard-phases
907ab9e8
RH
1068 (add-before 'build 'patch-absolute-filename-libgtk-3
1069 (lambda* (#:key inputs outputs #:allow-other-keys)
c11df2e8 1070 (substitute* "../source/src/xlib/gtk.c"
907ab9e8
RH
1071 (("libgtk-3.so")
1072 (string-append (assoc-ref inputs "gtk+")
1073 "/lib/libgtk-3.so")))))
1074 (add-after 'install 'wrap-program
1075 (lambda* (#:key inputs outputs #:allow-other-keys)
1076 (wrap-program (string-append (assoc-ref outputs "out")
1077 "/bin/utox")
1078 ;; For GtkFileChooserDialog.
1079 `("GSETTINGS_SCHEMA_DIR" =
1080 (,(string-append (assoc-ref inputs "gtk+")
1081 "/share/glib-2.0/schemas")))))))))
3b38d78e
EE
1082 (inputs
1083 `(("dbus" ,dbus)
1084 ("filteraudio" ,filteraudio)
1085 ("fontconfig" ,fontconfig)
1086 ("freetype" ,freetype)
1087 ("libsodium" ,libsodium)
c413c6ad 1088 ("c-toxcore" ,c-toxcore)
907ab9e8 1089 ("gtk+" ,gtk+)
3b38d78e
EE
1090 ("libvpx" ,libvpx)
1091 ("libx11" ,libx11)
1092 ("libxext" ,libxext)
1093 ("libxrender" ,libxrender)
1094 ("openal" ,openal)
1095 ("v4l-utils" ,v4l-utils)))
1e0ea1d8
LF
1096 (native-inputs
1097 `(("check" ,check)
1098 ("pkg-config" ,pkg-config)))
3b38d78e 1099 (synopsis "Lightweight Tox client")
c27b31e8 1100 (description
1101 "Utox is a lightweight Tox client. Tox is a distributed and secure
3b38d78e
EE
1102instant messenger with audio and video chat capabilities.")
1103 (home-page "http://utox.org/")
29e83e1c 1104 (license license:gpl3)))
c413c6ad 1105
bc1c995e
AP
1106(define-public qtox
1107 (package
1108 (name "qtox")
7a426eef 1109 (version "1.16.3")
2eb67681
RW
1110 (source (origin
1111 (method url-fetch)
1112 (uri (string-append "https://github.com/qTox/qTox/archive/v"
1113 version ".tar.gz"))
1114 (sha256
1115 (base32
7a426eef 1116 "10n3cgw9xaqin9la8wpd8v83bkjmimicgbyp5ninsdgsrgky4hmq"))
2eb67681
RW
1117 (file-name (string-append name "-" version ".tar.gz"))))
1118 (build-system cmake-build-system)
1119 (arguments
1120 '(#:phases
1121 (modify-phases %standard-phases
1122 (add-after 'unpack 'fix-reproducibility-issues
1123 (lambda _
1124 (substitute* "src/main.cpp"
1125 (("__DATE__") "\"\"")
1126 (("__TIME__") "\"\"")
1127 (("TIMESTAMP") "\"\""))
dab03baa
DNB
1128 #t))
1129 ;; Ensure that icons are found at runtime.
1130 (add-after 'install 'wrap-executable
1131 (lambda* (#:key inputs outputs #:allow-other-keys)
1132 (let ((out (assoc-ref outputs "out")))
1133 (wrap-program (string-append out "/bin/qtox")
1134 `("QT_PLUGIN_PATH" prefix
1135 ,(list (string-append (assoc-ref inputs "qtsvg")
1136 "/lib/qt5/plugins/"))))))))))
bc1c995e 1137 (inputs
7a426eef 1138 `(("ffmpeg" ,ffmpeg)
dab03baa 1139 ("filteraudio" ,filteraudio)
bc1c995e
AP
1140 ("glib" ,glib)
1141 ("gtk+" ,gtk+-2)
1142 ("libsodium" ,libsodium)
2eb67681 1143 ("c-toxcore" ,c-toxcore)
bc1c995e
AP
1144 ("libvpx" ,libvpx)
1145 ("libxscrnsaver" ,libxscrnsaver)
1146 ("libx11" ,libx11)
3d7a1596
RH
1147 ("libexif" ,libexif)
1148 ("sqlite" ,sqlite)
bc1c995e
AP
1149 ("openal" ,openal)
1150 ("qrencode" ,qrencode)
2eb67681
RW
1151 ("qtbase" ,qtbase)
1152 ("qtsvg" ,qtsvg)
bc1c995e
AP
1153 ("sqlcipher" ,sqlcipher)))
1154 (native-inputs
1155 `(("pkg-config" ,pkg-config)
2eb67681 1156 ("qmake" ,qttools)))
bc1c995e
AP
1157 (home-page "https://qtox.github.io/")
1158 (synopsis "Tox chat client using Qt")
1159 (description "qTox is a Tox client that follows the Tox design
1160guidelines. It provides an easy to use application that allows you to
1161connect with friends and family without anyone else listening in.")
1162 (license license:gpl3+)))
3b38d78e 1163
aeca1c0e 1164(define-public pybitmessage
1165 (package
1166 (name "pybitmessage")
315ed91e 1167 (version "0.6.3.2")
aeca1c0e 1168 (source
1169 (origin
315ed91e
RW
1170 (method git-fetch)
1171 (uri (git-reference
1172 (url "https://github.com/Bitmessage/PyBitmessage.git")
1173 (commit version)))
1174 (file-name (string-append name "-" version "-checkout"))
aeca1c0e 1175 (sha256
1176 (base32
315ed91e 1177 "1lmhbpwsqh1v93krlqqhafw2pc3y0qp8zby186yllbph6s8kdp35"))))
58b2835d 1178 (propagated-inputs
1179 ;; TODO:
1180 ;; Package "pyopencl", required in addition to numpy for OpenCL support.
1181 ;; Package "gst123", required in addition to alsa-utils and
1182 ;; mpg123 for sound support.
1183 `(("python2-msgpack" ,python2-msgpack)
1184 ("python2-pythondialog" ,python2-pythondialog)
aeca1c0e 1185 ("python2-pyqt-4" ,python2-pyqt-4)
1186 ("python2-sip" ,python2-sip)
1187 ("python2-pysqlite" ,python2-pysqlite)
1188 ("python2-pyopenssl" ,python2-pyopenssl)))
1189 (native-inputs
58b2835d 1190 `(("openssl" ,openssl)))
1191 (build-system python-build-system)
aeca1c0e 1192 (arguments
58b2835d 1193 `(#:modules ((guix build python-build-system)
1194 (guix build utils))
1195 #:tests? #f ;no test target
1196 #:python ,python-2
aeca1c0e 1197 #:phases
1198 (modify-phases %standard-phases
aeca1c0e 1199 (add-after 'unpack 'fix-unmatched-python-shebangs
1200 (lambda* (#:key inputs #:allow-other-keys)
1201 (substitute* "src/bitmessagemain.py"
1202 (("#!/usr/bin/env python2.7")
1203 (string-append "#!" (which "python"))))
1204 (substitute* "src/bitmessagecli.py"
1205 (("#!/usr/bin/env python2.7.x")
1206 (string-append "#!" (which "python"))))
1207 #t))
1208 (add-after 'unpack 'fix-depends
1209 (lambda* (#:key inputs #:allow-other-keys)
1210 (substitute* "src/depends.py"
1211 (("libcrypto.so")
1212 (string-append (assoc-ref inputs "openssl")
1213 "/lib/libcrypto.so")))
1214 #t))
1215 (add-after 'unpack 'fix-local-files-in-paths
1216 (lambda* (#:key outputs #:allow-other-keys)
1217 (substitute* "src/proofofwork.py"
1218 (("bitmsghash.so")
1219 (string-append (assoc-ref outputs "out")
1220 "/lib/bitmsghash.so")))
1221 #t))
1222 (add-after 'unpack 'fix-pyelliptic
1223 (lambda* (#:key inputs #:allow-other-keys)
1224 (substitute* "src/pyelliptic/openssl.py"
1225 (("libcrypto.so")
1226 (string-append (assoc-ref inputs "openssl")
1227 "/lib/libcrypto.so"))
1228 (("libssl.so")
1229 (string-append (assoc-ref inputs "openssl")
1230 "/lib/libssl.so")))
1231 #t))
58b2835d 1232 (add-after 'unpack 'noninteractive-build
1233 ;; This applies upstream commit 4c597d3f7cf9f83a763472aa165a1a4292019f20
1234 (lambda _
1235 (substitute* "setup.py"
1236 (("except NameError")
1237 "except EOFError, NameError"))
1238 #t))
1239 ;; XXX: python setup.py does not build and install bitmsghash,
1240 ;; without it PyBitmessage tries to compile it at first run
1241 ;; in the store, which due to obvious reasons fails. Do it
aeca1c0e 1242 ;; and place it in /lib.
58b2835d 1243 (add-after 'unpack 'build-and-install-bitmsghash
aeca1c0e 1244 (lambda* (#:key outputs #:allow-other-keys)
58b2835d 1245 (with-directory-excursion "src/bitmsghash"
1246 (system* "make")
1247 (install-file "bitmsghash.so"
1248 (string-append (assoc-ref outputs "out") "/lib")))
1249 #t)))))
aeca1c0e 1250 (license license:expat)
1251 (description
1252 "Distributed and trustless peer-to-peer communications protocol
1253for sending encrypted messages to one person or many subscribers.")
1254 (synopsis "Distributed peer-to-peer communication")
1255 (home-page "https://bitmessage.org/")))
1256
c788c5fe
JD
1257(define-public ytalk
1258 (package
1259 (name "ytalk")
1260 (version "3.3.0")
1261 (source
1262 (origin
1263 (method url-fetch)
1264 (uri (string-append "ftp://ftp.ourproject.org/pub/ytalk/ytalk-"
1265 version ".tar.gz"))
1266 (sha256
1267 (base32
1268 "1d3jhnj8rgzxyxjwfa22vh45qwzjvxw1qh8fz6b7nfkj3zvk9jvf"))))
1269 (build-system gnu-build-system)
1270 (inputs
1271 `(("ncurses" ,ncurses)))
898dc494 1272 (home-page "https://ytalk.ourproject.org")
c788c5fe
JD
1273 (synopsis "Multi-user chat program")
1274 (description "Ytalk is a replacement for the BSD talk program. Its main
1275advantage is the ability to communicate with any arbitrary number of users at
1276once. It supports both talk protocols (\"talk\" and \"ntalk\") and can communicate
1277with several different talk daemons at the same time.")
1278 (license license:gpl2+)))
1279
3973e137 1280(define-public gloox
1281 (package
1282 (name "gloox")
548d1f88 1283 (version "1.0.23")
3973e137 1284 (source
1285 (origin
1286 (method url-fetch)
1287 (uri (string-append "https://camaya.net/download/gloox-"
1288 version ".tar.bz2"))
1289 (sha256
548d1f88 1290 (base32 "12jz8glg9zmyk0iyv1ywf5i0hq93dfq8lvn6lyjgy8730w66mjwp"))))
3973e137 1291 (build-system gnu-build-system)
1292 (inputs
1293 `(("libidn" ,libidn)
1294 ("gnutls" ,gnutls)
1295 ("zlib" ,zlib)))
1296 (native-inputs
1297 `(("pkg-config" ,pkg-config)))
1298 (synopsis "Portable high-level Jabber/XMPP library for C++")
1299 (description
1300 "gloox is a full-featured Jabber/XMPP client library,
1301written in ANSI C++. It makes writing spec-compliant clients easy
1302and allows for hassle-free integration of Jabber/XMPP functionality
1303into existing applications.")
1304 (home-page "https://camaya.net/gloox")
1305 (license license:gpl3)))
c788c5fe 1306
ebfc2ecc 1307(define-public perl-net-psyc
1308 (package
1309 (name "perl-net-psyc")
3fa013af 1310 (version "1.3")
ebfc2ecc 1311 (source
1312 (origin
1313 (method url-fetch)
85b9ae93 1314 (uri (string-append "https://perl.psyc.eu/"
ebfc2ecc 1315 "perlpsyc-" version ".zip"))
1316 (file-name (string-append name "-" version ".zip"))
1317 (sha256
1318 (base32
3fa013af 1319 "0vsjclglkwgbyd9m5ad642fyysxw2x725nhq4r2m9pvqaq6s5yf2"))))
ebfc2ecc 1320 (build-system perl-build-system)
3fa013af
RW
1321 (native-inputs
1322 `(("unzip" ,unzip)))
ebfc2ecc 1323 (inputs
1324 `(("perl-curses" ,perl-curses)
1325 ("perl-io-socket-ssl" ,perl-io-socket-ssl)))
1326 (arguments
1327 `(#:phases
1328 (modify-phases %standard-phases
1329 (delete 'configure) ; No configure script
1330 ;; There is a Makefile, but it does not install everything
1331 ;; (leaves out psycion) and says
1332 ;; "# Just to give you a rough idea". XXX: Fix it upstream.
1333 (replace 'build
3fa013af 1334 (lambda _ (invoke "make" "manuals")))
ebfc2ecc 1335 (replace 'install
1336 (lambda* (#:key outputs #:allow-other-keys)
1337 (let* ((out (assoc-ref outputs "out"))
1338 (doc (string-append out "/share/doc/perl-net-psyc"))
1339 (man1 (string-append out "/share/man/man1"))
1340 (man3 (string-append out "/share/man/man3"))
1341 (bin (string-append out "/bin"))
1342 (libpsyc (string-append out "/lib/psyc/ion"))
1343 (libperl (string-append out "/lib/perl5/site_perl/"
1344 ,(package-version perl))))
1345
1346 (copy-recursively "lib/perl5" libperl)
1347 (copy-recursively "lib/psycion" libpsyc)
1348 (copy-recursively "bin" bin)
1349 (install-file "cgi/psycpager" (string-append doc "/cgi"))
1350 (copy-recursively "contrib" (string-append doc "/contrib"))
1351 (copy-recursively "hooks" (string-append doc "/hooks"))
1352 (copy-recursively "sdj" (string-append doc "/sdj"))
1353 (install-file "README.txt" doc)
1354 (install-file "TODO.txt" doc)
1355 (copy-recursively "share/man/man1" man1)
1356 (copy-recursively "share/man/man3" man3)
1357 #t)))
1358 (add-after 'install 'wrap-programs
1359 (lambda* (#:key outputs #:allow-other-keys)
1360 ;; Make sure all executables in "bin" find the Perl modules
1361 ;; provided by this package at runtime.
1362 (let* ((out (assoc-ref outputs "out"))
1363 (bin (string-append out "/bin/"))
1364 (path (getenv "PERL5LIB")))
1365 (for-each (lambda (file)
1366 (wrap-program file
1367 `("PERL5LIB" ":" prefix (,path))))
1368 (find-files bin "\\.*$"))
1369 #t))))))
1370 (description
1371 "@code{Net::PSYC} with support for TCP, UDP, Event.pm, @code{IO::Select} and
1372Gtk2 event loops. This package includes 12 applications and additional scripts:
85b9ae93 1373psycion (a @uref{https://about.psyc.eu,PSYC} chat client), remotor (a control console
ebfc2ecc 1374for @uref{https://torproject.org,tor} router) and many more.")
1375 (synopsis "Perl implementation of PSYC protocol")
85b9ae93 1376 (home-page "https://perl.psyc.eu")
ebfc2ecc 1377 (license (list license:gpl2
2f3108ad 1378 license:perl-license
ebfc2ecc 1379 ;; contrib/irssi-psyc.pl:
1380 license:public-domain
1381 ;; bin/psycplay states AGPL with no version:
1382 license:agpl3+))))
1383
1384(define-public libpsyc
1385 (package
1386 (name "libpsyc")
1387 (version "20160913")
1388 (source (origin
1389 (method url-fetch)
1390 (uri (string-append "http://www.psyced.org/files/"
1391 name "-" version ".tar.xz"))
1392 (sha256
1393 (base32
1394 "14q89fxap05ajkfn20rnhc6b1h4i3i2adyr7y6hs5zqwb2lcmc1p"))))
1395 (build-system gnu-build-system)
1396 (native-inputs
1397 `(("perl" ,perl)
1398 ("netcat" ,netcat)
1399 ("procps" ,procps)))
1400 (arguments
1401 `(#:make-flags
1402 (list "CC=gcc"
1403 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1404 #:phases
1405 (modify-phases %standard-phases
1406 ;; The rust bindings are the only ones in use, the lpc bindings
1407 ;; are in psyclpc. The other bindings are not used by anything,
1408 ;; the chances are high that the bindings do not even work,
1409 ;; therefore we do not include them.
1410 ;; TODO: Get a cargo build system in Guix.
1411 (delete 'configure)))) ; no configure script
85b9ae93 1412 (home-page "https://about.psyc.eu/libpsyc")
ebfc2ecc 1413 (description
1414 "@code{libpsyc} is a PSYC library in C which implements
1415core aspects of PSYC, useful for all kinds of clients and servers
1416including psyced.")
1417 (synopsis "PSYC library in C")
1418 (license license:agpl3+)))
1419
cf3678df 1420;; This commit removes the historic bundled pcre and makes psyclpc reproducible.
ebfc2ecc 1421(define-public psyclpc
1422 (let* ((commit "61cf9aa81297085e5c40170fd01221c752f8deba")
1423 (revision "2"))
1424 (package
1425 (name "psyclpc")
1426 (version (string-append "20160821-" revision "." (string-take commit 7)))
1427 (source (origin
1428 (method git-fetch)
1429 (uri (git-reference
1430 (url "git://git.psyced.org/git/psyclpc")
1431 (commit commit)))
1432 (file-name (string-append name "-" version "-checkout"))
1433 (sha256
1434 (base32
1435 "1viwqymbhn3cwvx0zl58rlzl5gw47zxn0ldg2nbi55ghm5zxl1z5"))))
1436 (build-system gnu-build-system)
1437 (arguments
1438 `(#:tests? #f ; There are no tests/checks.
1439 #:configure-flags
1440 ;; If you have questions about this part, look at
1441 ;; "src/settings/psyced" and the ebuild.
1442 (list
1443 "--enable-use-tls=yes"
1444 "--enable-use-mccp" ; Mud Client Compression Protocol, leave this enabled.
1445 (string-append "--prefix="
1446 (assoc-ref %outputs "out"))
1447 ;; src/Makefile: Set MUD_LIB to the directory which contains
1448 ;; the mud data. defaults to MUD_LIB = @libdir@
1449 (string-append "--libdir="
1450 (assoc-ref %outputs "out")
1451 "/opt/psyced/world")
1452 (string-append "--bindir="
1453 (assoc-ref %outputs "out")
1454 "/opt/psyced/bin")
1455 ;; src/Makefile: Set ERQ_DIR to directory which contains the
1456 ;; stuff which ERQ can execute (hopefully) savely. Was formerly
1457 ;; defined in config.h. defaults to ERQ_DIR= @libexecdir@
1458 (string-append "--libexecdir="
1459 (assoc-ref %outputs "out")
1460 "/opt/psyced/run"))
1461 #:phases
1462 (modify-phases %standard-phases
1463 (add-before 'configure 'chdir-to-src
1464 ;; We need to pass this as env variables
1465 ;; and manually change the directory.
1466 (lambda _
1467 (chdir "src")
1468 (setenv "CONFIG_SHELL" (which "sh"))
1469 (setenv "SHELL" (which "sh"))
1470 #t)))
1471 #:make-flags (list "install-all")))
1472 (inputs
1473 `(("zlib" ,zlib)
e7e315c0 1474 ("openssl" ,openssl-1.0)
ebfc2ecc 1475 ("pcre" ,pcre)))
1476 (native-inputs
1477 `(("pkg-config" ,pkg-config)
1478 ("bison" ,bison)
1479 ("gettext" ,gettext-minimal)
1480 ("help2man" ,help2man)
1481 ("autoconf" ,autoconf)
1482 ("automake" ,automake)))
1483 (home-page "http://lpc.psyc.eu/")
1484 (synopsis "psycLPC is a multi-user network server programming language")
1485 (description
1486 "LPC is a bytecode language, invented to specifically implement
1487multi user virtual environments on the internet. This technology is used for
1488MUDs and also the psyced implementation of the Protocol for SYnchronous
1489Conferencing (PSYC). psycLPC is a fork of LDMud with some new features and
1490many bug fixes.")
1491 (license license:gpl2))))
1492
fdfb4b96 1493(define-public loudmouth
1494 (package
1495 (name "loudmouth")
1496 (version "1.5.3")
1497 (source
1498 (origin
1499 (method url-fetch)
1500 (uri (string-append "https://mcabber.com/files/loudmouth/"
1501 name "-" version ".tar.bz2"))
1502 (sha256
1503 (base32
1504 "0b6kd5gpndl9nzis3n6hcl0ldz74bnbiypqgqa1vgb0vrcar8cjl"))))
1505 (build-system gnu-build-system)
1506 (inputs
1507 `(("glib" ,glib)
1508 ("gnutls" ,gnutls)
1509 ("libidn" ,libidn)))
1510 (native-inputs
1511 `(("pkg-config" ,pkg-config)
1512 ("check" ,check)
1513 ("glib" ,glib "bin") ; gtester
1514 ("gtk-doc" ,gtk-doc)))
1515 (home-page "https://mcabber.com/")
1516 (description
1517 "Loudmouth is a lightweight and easy-to-use C library for programming
1518with the XMPP (formerly known as Jabber) protocol. It is designed to be
1519easy to get started with and yet extensible to let you do anything the XMPP
1520protocol allows.")
1521 (synopsis "Asynchronous XMPP library")
1522 ;; The files have LGPL2.0+ headers, but COPYING specifies LGPL2.1.
1523 (license license:lgpl2.0+)))
1524
cd4a232d 1525(define-public mcabber
1526 (package
1527 (name "mcabber")
ccccb467 1528 (version "1.1.0")
cd4a232d 1529 (source
1530 (origin
1531 (method url-fetch)
1532 (uri (string-append "https://mcabber.com/files/"
1533 name "-" version ".tar.bz2"))
1534 (sha256
1535 (base32
ccccb467 1536 "1ggh865p1rf10ffsnf4g6qv9i8bls36dxdb1nzs5r9vdqci2rz04"))))
cd4a232d 1537 (build-system gnu-build-system)
1538 (arguments
1539 '(#:configure-flags (list "--enable-otr"
1540 "--enable-aspell")))
1541 (inputs
1542 `(("gpgme" ,gpgme)
1543 ("libotr" ,libotr)
1544 ("aspell" ,aspell)
1545 ("libidn" ,libidn)
1546 ("glib" ,glib)
1547 ("ncurses" ,ncurses)
1548 ("loudmouth" ,loudmouth)))
1549 (native-inputs
1550 `(("pkg-config" ,pkg-config)))
1551 (home-page "https://mcabber.com")
1552 (description
1553 "Mcabber is a small XMPP (Jabber) console client, which includes features
1554such as SASL and TLS support, @dfn{Multi-User Chat} (MUC) support, logging,
1555command-completion, OpenPGP encryption, @dfn{Off-the-Record Messaging} (OTR)
1556support, and more.")
1557 (synopsis "Small XMPP console client")
1558 (license license:gpl2+)))
1559
c631233f
CL
1560(define-public freetalk
1561 (package
1562 (name "freetalk")
1563 (version "4.1")
1564 (source (origin
1565 (method url-fetch)
1566 (uri (string-append "mirror://gnu/freetalk/freetalk-"
1567 version ".tar.gz"))
1568 (sha256
1569 (base32
1570 "1rmrn7a1bb7vm26yaklrvx008a9qhwc32s57dwrlf40lv9gffwny"))))
1571 (build-system gnu-build-system)
1572 (arguments
1573 `(#:phases
1574 (modify-phases %standard-phases
c631233f
CL
1575 ;; For 'system' commands in Scheme code.
1576 (add-after 'install 'wrap-program
1577 (lambda* (#:key inputs outputs #:allow-other-keys)
1578 (let* ((out (assoc-ref outputs "out"))
1579 (bash (assoc-ref inputs "bash"))
1580 (coreutils (assoc-ref inputs "coreutils"))
1581 (less (assoc-ref inputs "less")))
1582 (wrap-program (string-append out "/bin/freetalk")
1583 `("PATH" ":" prefix
1584 ,(map (lambda (dir)
1585 (string-append dir "/bin"))
1586 (list bash coreutils less))))
1587 #t))))))
1588 (native-inputs
1589 `(("autoconf" ,autoconf)
1590 ("automake" ,automake)
1591 ("pkg-config" ,pkg-config)
1592 ("texinfo" ,texinfo)))
1593 (inputs
1594 `(("bash" ,bash)
1595 ("glib" ,glib)
1596 ("guile" ,guile-2.0)
1597 ("less" ,less)
1598 ("loudmouth" ,loudmouth)
1599 ("readline" ,readline)))
1600 (synopsis "Extensible console-based Jabber client")
1601 (description
1602 "GNU Freetalk is a command-line Jabber/XMPP chat client. It notably uses
1603the Readline library to handle input, so it features convenient navigation of
1604text as well as tab-completion of buddy names, commands and English words. It
1605is also scriptable and extensible via Guile.")
6fd52309 1606 (home-page "https://www.gnu.org/software/freetalk/")
c631233f
CL
1607 (license license:gpl3+)))
1608
13292ee5
MM
1609(define-public libmesode
1610 (package
1611 (name "libmesode")
6bf449e8 1612 (version "0.9.3")
13292ee5 1613 (source (origin
c60d5a25
TGR
1614 (method git-fetch)
1615 (uri (git-reference
1616 (url "https://github.com/boothj5/libmesode.git")
1617 (commit version)))
1618 (file-name (git-file-name name version))
13292ee5
MM
1619 (sha256
1620 (base32
6bf449e8 1621 "0xzfg1xx88cn36352nnjlb1p7xyw32yqkhjzq10px88iaaqz1vv0"))))
13292ee5 1622 (build-system gnu-build-system)
13292ee5
MM
1623 (inputs
1624 `(("expat" ,expat)
1625 ("openssl" ,openssl)))
1626 (native-inputs
1627 `(("autoconf" ,autoconf)
1628 ("automake" ,automake)
1629 ("libtool" ,libtool)
1630 ("pkg-config" ,pkg-config)))
1631 (synopsis "C library for writing XMPP clients")
1632 (description "Libmesode is a fork of libstrophe for use with Profanity
1633XMPP Client. In particular, libmesode provides extra TLS functionality such as
1634manual SSL certificate verification.")
1635 (home-page "https://github.com/boothj5/libmesode")
6bf449e8 1636 ;; Dual-licensed.
13292ee5
MM
1637 (license (list license:gpl3+ license:x11))))
1638
781d3b07
MM
1639(define-public libstrophe
1640 (package
1641 (name "libstrophe")
75d9d8af 1642 (version "0.9.3")
3368917c
TGR
1643 (source
1644 (origin
1645 (method git-fetch)
1646 (uri (git-reference
1647 (url "https://github.com/strophe/libstrophe.git")
1648 (commit version)))
1649 (file-name (git-file-name name version))
1650 (sha256
1651 (base32 "1g1l0w9z9hdy5ncdvd9097gi7k7783did6py5h9camlpb2fnk5mk"))))
781d3b07 1652 (build-system gnu-build-system)
781d3b07
MM
1653 (inputs
1654 `(("expat" ,expat)
1655 ("openssl" ,openssl)))
1656 (native-inputs
1657 `(("autoconf" ,autoconf)
1658 ("automake" ,automake)
1659 ("libtool" ,libtool)
1660 ("pkg-config" ,pkg-config)))
1661 (synopsis "C library for writing XMPP clients")
1662 (description "Libstrophe is a minimal XMPP library written in C. It has
1663almost no external dependencies, only an XML parsing library (expat or libxml
1664are both supported).")
1665 (home-page "http://strophe.im/libstrophe")
75d9d8af 1666 ;; Dual-licensed.
781d3b07
MM
1667 (license (list license:gpl3+ license:x11))))
1668
a829c650 1669(define-public profanity
71adb422
TLC
1670 (package
1671 (name "profanity")
d2b5cdfe 1672 (version "0.8.1")
71adb422
TLC
1673 (source (origin
1674 (method url-fetch)
1675 (uri (string-append "https://profanity-im.github.io/profanity-"
1676 version ".tar.gz"))
1677 (sha256
1678 (base32
d2b5cdfe 1679 "15yrx2ir2bilxpjfaxpjb93yjpvpvcvh5r7wbsjx6kmmy7qg2zvb"))))
71adb422 1680 (build-system gnu-build-system)
6bb93af8
TLC
1681 (arguments
1682 '(#:configure-flags
7644b8b5
TLC
1683 (list "--enable-c-plugins"
1684 "--enable-otr"
1685 "--enable-omemo"
a2c60995 1686 "--enable-pgp"
6bb93af8
TLC
1687 "--enable-icons"
1688 "--enable-notifications")))
71adb422
TLC
1689 (inputs
1690 `(("curl" ,curl)
1691 ("expat" ,expat)
1692 ("glib" ,glib)
1693 ("gpgme" ,gpgme)
1694 ("libmesode" ,libmesode)
1695 ("libotr" ,libotr)
1696 ("ncurses" ,ncurses)
1697 ("openssl" ,openssl)
1698 ("readline" ,readline)))
1699 (native-inputs
1700 `(("autoconf" ,autoconf)
1701 ("autoconf-archive" ,autoconf-archive)
1702 ("automake" ,automake)
1703 ("cmocka" ,cmocka)
6bb93af8
TLC
1704 ("gtk+" ,gtk+-2)
1705 ("libnotify" ,libnotify)
71adb422 1706 ("libtool" ,libtool)
6bb93af8 1707 ("libsignal-protocol-c" ,libsignal-protocol-c)
71adb422
TLC
1708 ("pkg-config" ,pkg-config)))
1709 (synopsis "Console-based XMPP client")
1710 (description "Profanity is a console based XMPP client written in C
a829c650 1711using ncurses and libmesode, inspired by Irssi.")
3dfd73f0 1712 (home-page "https://profanity-im.github.io")
71adb422 1713 (license license:gpl3+)))
a829c650 1714
6fdbd86d
AI
1715(define-public libircclient
1716 (package
1717 (name "libircclient")
b619b7f6 1718 (version "1.10")
6fdbd86d
AI
1719 (source
1720 (origin
1721 (method url-fetch)
1722 (uri (string-append "mirror://sourceforge/libircclient/libircclient/"
1723 version "/libircclient-" version ".tar.gz"))
1724 (sha256
1725 (base32
b619b7f6 1726 "0b9wa0h3xc31wpqlvgxgnvqp5wgx3kwsf5s9432m5cj8ycx6zcmv"))))
6fdbd86d
AI
1727 (build-system gnu-build-system)
1728 (inputs
1729 `(("openssl" ,openssl)))
1730 (arguments
1731 `(#:configure-flags
1732 (list (string-append "--libdir="
1733 (assoc-ref %outputs "out") "/lib")
1734 "--enable-shared"
1735 "--enable-ipv6"
1736 "--enable-openssl")
b619b7f6 1737 #:tests? #f)) ; no test suite
6fdbd86d
AI
1738 (home-page "https://www.ulduzsoft.com/libircclient/")
1739 (synopsis "Library implementing the client IRC protocol")
1740 (description "Libircclient is a library which implements the client IRC
1741protocol. It is designed to be small, fast, portable and compatible with the
1742RFC standards as well as non-standard but popular features. It can be used for
1743building the IRC clients and bots.")
1744 (license license:lgpl3+)))
1745
61f81618
TF
1746(define-public toxic
1747 (package
1748 (name "toxic")
1987f95f 1749 (version "0.8.3")
0c273c50
TGR
1750 (source
1751 (origin
1752 (method git-fetch)
1753 (uri (git-reference
1754 (url "https://github.com/JFreegman/toxic.git")
1755 (commit (string-append "v" version))))
1756 (sha256
1987f95f 1757 (base32 "09l2j3lwvrq7bf3051vjsnml9w63790ly3iylgf26gkrmld6k31w"))
0c273c50 1758 (file-name (git-file-name name version))))
61f81618
TF
1759 (build-system gnu-build-system)
1760 (arguments
1987f95f 1761 `(#:tests? #f ; no tests
61f81618
TF
1762 #:make-flags
1763 (list
1764 "CC=gcc"
1765 (string-append "PREFIX="
1766 (assoc-ref %outputs "out")))
1767 #:phases
1768 (modify-phases %standard-phases
1769 (delete 'configure)
1770 (add-before 'build 'enable-python-scripting
1771 (lambda _
93600aae
MB
1772 ;; XXX: For compatibility with Python 3.8, adjust python3-config
1773 ;; invokation to include --embed; see
1774 ;; <https://github.com/JFreegman/toxic/issues/533>.
1775 (substitute* "cfg/checks/python.mk"
1776 (("python3-config --ldflags")
1777 "python3-config --ldflags --embed"))
61f81618
TF
1778 (setenv "ENABLE_PYTHON" "1")
1779 #t)))))
1780 (inputs
1781 `(("c-toxcore" ,c-toxcore)
1782 ("curl" ,curl)
1783 ("freealut" ,freealut)
1987f95f 1784 ("gdk-pixbuf" ,gdk-pixbuf) ; for libnotify.pc
61f81618
TF
1785 ("libconfig" ,libconfig)
1786 ("libnotify" ,libnotify)
1787 ("libpng" ,libpng)
1788 ("libvpx" ,libvpx)
1789 ("libx11" ,libx11)
1790 ("ncurses" ,ncurses)
1791 ("openal" ,openal)
1792 ("python" ,python)
1793 ("qrencode" ,qrencode)))
1794 (native-inputs
1795 `(("pkg-config" ,pkg-config)))
1796 (home-page "https://github.com/JFreegman/toxic")
1797 (synopsis "Tox chat client using ncurses")
1798 (description "Toxic is a console-based instant messaging client, using
1799c-toxcore and ncurses. It provides audio calls, sound and desktop
1800notifications, and Python scripting support.")
1801 (license license:gpl3+)))
1802
9a3da985
AI
1803(define-public libqmatrixclient
1804 (package
1805 (name "libqmatrixclient")
e9c6aed1 1806 (version "0.5.3.2")
9a3da985
AI
1807 (source
1808 (origin
c6b60d30
EF
1809 (method git-fetch)
1810 (uri (git-reference
e9c6aed1 1811 (url "https://github.com/quotient-im/libQuotient")
0395c533 1812 (commit version)))
c6b60d30 1813 (file-name (git-file-name name version))
9a3da985 1814 (sha256
e9c6aed1 1815 (base32 "0gkwr3yw6k2m0j8cc085b5p2q788rf5nhp1p5hc5d55pc7mci2qs"))))
9a3da985
AI
1816 (build-system cmake-build-system)
1817 (inputs
0395c533
TGR
1818 `(("qtbase" ,qtbase)
1819 ("qtmultimedia" ,qtmultimedia)))
9a3da985
AI
1820 (arguments
1821 `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON")
0395c533 1822 #:tests? #f)) ; no tests
9a3da985
AI
1823 (home-page "https://matrix.org/docs/projects/sdk/libqmatrixclient.html")
1824 (synopsis "Qt5 client library for the Matrix instant messaging protocol")
1825 (description "libqmatrixclient is a Qt5 library to write clients for the
1826Matrix instant messaging protocol. Quaternion is the reference client
1827implementation. Quaternion and libqmatrixclient together form the
1828QMatrixClient project.")
1829 (license license:lgpl2.1+)))
e81c952a 1830
57163f91 1831(define-public mtxclient
1832 (package
1833 (name "mtxclient")
1834 (version "0.2.1")
1835 (source
1836 (origin
1837 (method git-fetch)
1838 (uri (git-reference
1839 (url "https://github.com/Nheko-Reborn/mtxclient.git")
1840 (commit (string-append "v" version))))
1841 (file-name (git-file-name name version))
1842 (sha256
1843 (base32 "0pycznrvj57ff6gbwfn1xj943d2dr4vadl79hii1z16gn0nzxpmj"))))
1844 (arguments
1845 `(#:configure-flags
1846 (list
1847 ;; Disable example binaries (not installed)
1848 "-DBUILD_LIB_EXAMPLES=OFF")
1849 #:phases
1850 (modify-phases %standard-phases
1851 (add-before 'configure 'disable-network-tests
1852 (lambda _
1853 (substitute* "CMakeLists.txt"
1854 (("add_test\\((BasicConnectivity|ClientAPI|MediaAPI|Encryption)")
1855 "# add_test"))
1856 #t))
1857 (add-before 'configure 'set-home
1858 (lambda _
1859 ;; Tries to create package registry file
1860 ;; So, set HOME.
1861 (setenv "HOME" "/tmp")
1862 #t)))))
1863 (build-system cmake-build-system)
1864 (inputs
1865 `(("boost" ,boost)
1866 ("json-modern-cxx" ,json-modern-cxx)
1867 ("libolm" ,libolm)
1868 ("libsodium" ,libsodium)
1869 ("openssl" ,openssl)
1870 ("spdlog" ,spdlog)
1871 ("zlib" ,zlib)))
1872 (native-inputs
1873 `(("googletest" ,googletest)
1874 ("pkg-config" ,pkg-config)))
1875 (home-page "https://github.com/Nheko-Reborn/mtxclient")
1876 (synopsis "Client API library for the Matrix protocol")
1877 (description "@code{mtxclient} is a C++ library that implements client API
1878for the Matrix protocol. It is built on to of @code{Boost.Asio}.")
1879 (license license:expat)))
1880
b40f4052 1881(define-public nheko
1882 (package
1883 (name "nheko")
1884 (version "0.6.4")
1885 (source
1886 (origin
1887 (method git-fetch)
1888 (uri (git-reference
1889 (url "https://github.com/Nheko-Reborn/nheko.git")
1890 (commit (string-append "v" version))))
1891 (file-name (git-file-name name version))
1892 (sha256
1893 (base32 "19dkc98l1q4070v6mli4ybqn0ip0za607w39hjf0x8rqdxq45iwm"))))
1894 (arguments
1895 `(#:tests? #f ;no test target
1896 #:configure-flags
1897 (list
1898 "-DCMAKE_BUILD_TYPE=Release"
1899 "-DCMAKE_CXX_FLAGS=-fpermissive")
1900 #:phases
1901 (modify-phases %standard-phases
1902 (add-after 'unpack 'remove-Werror
1903 (lambda _
1904 (substitute* "CMakeLists.txt"
1905 (("-Werror") ""))
1906 #t))
1907 (add-after 'unpack 'fix-determinism
1908 (lambda _
1909 ;; Make Qt deterministic.
1910 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
1911 #t)))))
1912 (build-system qt-build-system)
1913 (inputs
1914 `(("boost" ,boost)
1915 ("cmark" ,cmark)
1916 ("json-modern-cxx" ,json-modern-cxx)
1917 ("libolm" ,libolm)
1918 ("lmdb" ,lmdb)
1919 ("lmdbxx" ,lmdbxx)
1920 ("mtxclient" ,mtxclient)
1921 ("openssl" ,openssl)
1922 ("qtbase" ,qtbase)
1923 ("qtsvg" ,qtsvg)
1924 ("qtmultimedia" ,qtmultimedia)
1925 ("spdlog" ,spdlog)
1926 ("tweeny" ,tweeny)
1927 ("zlib" ,zlib)))
1928 (native-inputs
1929 `(("pkg-config" ,pkg-config)
1930 ("qtlinguist" ,qttools)))
1931 (home-page "https://github.com/Nheko-Reborn/nheko")
1932 (synopsis "Desktop client for Matrix using Qt and C++14")
1933 (description "@code{Nheko} want to provide a native desktop app for the
1934Matrix protocol that feels more like a mainstream chat app and less like an IRC
1935client.
1936
1937There is support for:
1938@itemize
1939@item E2E encryption (text messages only: attachments are currently sent unencrypted).
1940@item User registration.
1941@item Creating, joining & leaving rooms.
1942@item Sending & receiving invites.
1943@item Sending & receiving files and emoji.
1944@item Typing notifications.
1945@item Username auto-completion.
1946@item Message & mention notifications.
1947@item Redacting messages.
1948@item Read receipts.
1949@item Basic communities support.
1950@item Room switcher (@key{ctrl-K}).
1951@item Light, Dark & System themes.
1952@end itemize")
1953 (license license:gpl3+)))
1954
e81c952a
AI
1955(define-public quaternion
1956 (package
1957 (name "quaternion")
35d1ac7f 1958 (version "0.0.9.4e")
e81c952a
AI
1959 (source
1960 (origin
6f066db1
EF
1961 (method git-fetch)
1962 (uri (git-reference
35d1ac7f 1963 (url "https://github.com/quotient-im/Quaternion")
1e9b956e 1964 (commit version)))
6f066db1 1965 (file-name (git-file-name name version))
e81c952a 1966 (sha256
35d1ac7f 1967 (base32 "0hqhg7l6wpkdbzrdjvrbqymmahziri07ba0hvbii7dd2p0h248fv"))))
34e31612 1968 (build-system qt-build-system)
e81c952a
AI
1969 (inputs
1970 `(("libqmatrixclient" ,libqmatrixclient)
29739890 1971 ("qtbase" ,qtbase)
c7ac8e36 1972 ("qtdeclarative" ,qtdeclarative)
1e9b956e 1973 ("qtmultimedia" ,qtmultimedia)
c7ac8e36 1974 ("qtquickcontrols" ,qtquickcontrols)
f920a64a 1975 ("qtquickcontrols2" ,qtquickcontrols2)
c7ac8e36
AI
1976 ("qtsvg" ,qtsvg)
1977 ("qttools" ,qttools)))
e81c952a 1978 (arguments
34e31612 1979 `(#:tests? #f)) ; no tests
e81c952a
AI
1980 (home-page "https://matrix.org/docs/projects/client/quaternion.html")
1981 (synopsis "Graphical client for the Matrix instant messaging protocol")
1982 (description "Quaternion is a Qt5 desktop client for the Matrix instant
1983messaging protocol. It uses libqmatrixclient and is its reference client
8b660be1 1984implementation. Quaternion and libqmatrixclient together form the
e81c952a 1985QMatrixClient project.")
1e9b956e
TGR
1986 (license (list license:gpl3+ ; all source code
1987 license:lgpl3+)))) ; icons/breeze
e81c952a 1988
f65fdd95
TGR
1989(define-public hangups
1990 (package
1991 (name "hangups")
d34c6a2a 1992 (version "0.4.10")
f65fdd95
TGR
1993 (source
1994 (origin
1995 (method url-fetch)
1996 (uri (pypi-uri "hangups" version))
1997 (sha256
d34c6a2a 1998 (base32 "0ww9z9kcb02pwnr8q1ll31wkzspc1fci1ly8ifrwzxysp4rxy3j5"))))
f65fdd95
TGR
1999 (build-system python-build-system)
2000 (arguments
2001 `(#:phases
2002 (modify-phases %standard-phases
2003 (add-before 'build 'relax-dependencies
2004 ;; Relax overly strict package version specifications.
2005 (lambda _
2006 (substitute* "setup.py"
2007 (("==") ">="))
2008 #t)))))
2009 (propagated-inputs
2010 `(("python-aiohttp" ,python-aiohttp)
2011 ("python-appdirs" ,python-appdirs)
2012 ("python-async-timeout" ,python-async-timeout)
2013 ("python-configargparse" ,python-configargparse)
2014 ("python-mechanicalsoup" ,python-mechanicalsoup)
837547cb 2015 ("python-protobuf" ,python-protobuf-3.6)
f65fdd95
TGR
2016 ("python-readlike" ,python-readlike)
2017 ("python-reparser" ,python-reparser)
2018 ("python-requests" ,python-requests)
2019 ("python-urwid" ,python-urwid)))
4b27b09a
TGR
2020 (native-inputs
2021 `(("python-httpretty" ,python-httpretty)
2022 ("python-pytest" ,python-pytest)))
f65fdd95
TGR
2023 (home-page "https://hangups.readthedocs.io/")
2024 (synopsis "Instant messaging client for Google Hangouts")
2025 (description
2026 "Hangups is an instant messaging client for Google Hangouts. It includes
2027both a Python library and a reference client with a text-based user interface.
2028
2029Hangups is implements a reverse-engineered version of Hangouts' proprietary,
2030non-interoperable protocol, which allows it to support features like group
2031messaging that aren’t available to clients that connect over XMPP.")
2032 (license license:expat)))
2033
e9a04157
2034(define-public telegram-purple
2035 (package
2036 (name "telegram-purple")
c0fb663e 2037 (version "1.4.2")
e9a04157
2038 (home-page "https://github.com/majn/telegram-purple")
2039 (source (origin
2040 (method git-fetch)
2041 (uri (git-reference
2042 (url home-page)
2043 (commit (string-append "v" version))
2044 (recursive? #t)))
2045 (sha256
2046 (base32
c0fb663e 2047 "0imbzhhq9qbj6gvkckrnjhls2vvmmy8db7l6gsd7lng2pbfcn522"))
e9a04157
2048 (modules '((guix build utils)))
2049 (snippet
2050 '(begin
2051 (substitute* "Makefile.in"
2052 ;; By default these two directories point to Pidgin's own
2053 ;; prefix.
2054 (("^PLUGIN_DIR_PURPLE=.*")
2055 (string-append
2056 "exec_prefix := @exec_prefix@\n"
2057 "PLUGIN_DIR_PURPLE := @libdir@/purple-2\n"))
2058 (("^DATA_ROOT_DIR_PURPLE=.*")
2059 "DATA_ROOT_DIR_PURPLE := @datarootdir@\n")
2060
2061 ;; Honor sysconfdir instead of trying to write to /etc.
2062 (("DESTDIR\\)/etc/telegram-purple")
2063 "DESTDIR)@sysconfdir@/telegram-purple"))
2064 #t))
2065 (patches (search-patches "telegram-purple-adjust-test.patch"))
2066 (file-name (git-file-name name version))))
2067 (build-system gnu-build-system)
2068 (native-inputs
2069 `(("pkg-config" ,pkg-config)
79edfcf2 2070 ("gettext" ,gettext-minimal)
e9a04157
2071 ("which" ,which)))
2072 (inputs
2073 `(("pidgin" ,pidgin)
2074 ("libgcrypt" ,libgcrypt)
2075 ("libwebp" ,libwebp)
2076 ("glib" ,glib)
e9a04157
2077 ("gtk+" ,gtk+-2)
2078 ("zlib" ,zlib)))
2079 (arguments
2080 `(#:phases
2081 (modify-phases %standard-phases
2082 ;; We're using release tag for repository checkout - let's prepare
2083 ;; header defining GIT_COMMIT manually instead of running git to
2084 ;; identify version which is being compiled. Git repository
2085 ;; is removed anyway and only source code is kept.
2086 (add-after 'unpack 'prepare-commit.h
2087 (lambda _
2088 (with-output-to-file "./commit.h"
2089 (lambda ()
2090 (display
2091 (string-append "//generated by guix, use version instead of "
2092 "commit\n"
2093 "#ifndef GIT_COMMIT\n"
2094 "# define GIT_COMMIT \"v"
2095 ,version "\"\n"
2096 "#endif\n"))))
2097 #t))
2098 (add-before 'configure 'set-SHELL-variables
2099 ;; Set these environment variables so that 'tgl/configure' uses the
2100 ;; right shell and not /bin/sh.
2101 (lambda _
2102 (let ((bash (which "bash")))
2103 (setenv "SHELL" bash)
2104 (setenv "CONFIG_SHELL" bash)
2105 #t))))))
2106 (synopsis "Telegram messaging support for Pidgin")
2107 (description
2108 "Telegram-purple is a plugin for Libpurple, the communication library
2109used by the Pidgin instant messaging client, that adds support for the
2110Telegram messenger.")
2111
2112 ;; Code under tgl/ (the Telegram library) is LGPLv2.1+, but the plugin
2113 ;; itself is GPLv2+.
2114 (license license:gpl2+)))
2115
403604c3 2116(define-public tdlib
dcbfb3b8
BG
2117 (let ((commit "278c7acdec83c5ac17d8e1ed0bb2cacbcea62460")
2118 (revision "0")
2119 (version "1.6.0"))
403604c3
BG
2120 (package
2121 (name "tdlib")
2122 (version (git-version version revision commit))
2123 (source (origin
2124 (method git-fetch)
2125 (uri (git-reference
2126 (url "https://github.com/tdlib/td.git")
2127 (commit commit)))
2128 (sha256
2129 (base32
dcbfb3b8 2130 "0zlzpl6fgszg18kwycyyyrnkm255dvc6fkq0b0y32m5wvwwl36cv"))
403604c3
BG
2131 (file-name (git-file-name name version))))
2132 (build-system cmake-build-system)
2133 (arguments
2134 `(#:tests? #t
70848cd0
BG
2135 #:configure-flags
2136 (list "-DCMAKE_BUILD_TYPE=Release"
2137 "-DTD_ENABLE_LTO=OFF") ; FIXME: Get LTO to work.
403604c3
BG
2138 #:phases
2139 (modify-phases %standard-phases
2140 (add-after 'unpack 'remove-failing-tests
2141 (lambda _
2142 (substitute* "test/CMakeLists.txt"
2143 ;; The test cases are compiled into a distinct binary
2144 ;; which uses mtproto.cpp to attempt to connect to
2145 ;; a remote server. Removing this file from the sources
2146 ;; list disables those specific test cases.
2147 (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/mtproto.cpp") ""))
2148 #t)))))
2149 (native-inputs
2150 `(("gperf" ,gperf)
2151 ("openssl" ,openssl)
2152 ("zlib" ,zlib)
2153 ("php" ,php)
2154 ("doxygen" ,doxygen)))
2155 (synopsis "Cross-platform library for building Telegram clients")
2156 (description "Tdlib is a cross-platform library for creating custom
2157Telegram clients following the official Telegram API. It can be easily used
2158from almost any programming language with a C-FFI and features first-class
2159support for high performance Telegram Bot creation.")
2160 (home-page "https://core.telegram.org/tdlib")
2161 (license license:boost1.0))))
2162
7c706558 2163;;; messaging.scm ends here