Commit | Line | Data |
---|---|---|
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 |
93 | providing: (1) Encryption: No one else can read your instant messages. (2) |
94 | Authentication: You are assured the correspondent is who you think it is. (3) | |
95 | Deniability: The messages you send do not have digital signatures that are | |
96 | checkable by a third party. Anyone can forge messages after a conversation to | |
97 | make them look like they came from you. However, during a conversation, your | |
98 | correspondent is assured the messages he sees are authentic and | |
99 | unmodified. (4) Perfect forward secrecy: If you lose control of your private | |
100 | keys, 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 | |
160 | people who have an IRC client running all the time and don't want to run an | |
161 | additional IM client. BitlBee currently supports XMPP/Jabber (including | |
162 | Google Talk), MSN Messenger, Yahoo! Messenger, AIM and ICQ, and the Twitter | |
163 | microblogging network (plus all other Twitter API compatible services like | |
164 | identi.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 |
198 | window shows the list of currently connected networks and their channels, the | |
199 | current conversation and the list of users. It uses colors to differentiate | |
200 | between users and to highlight messages. It checks spelling using available | |
b977cd2b JL |
201 | dictionaries. 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 | |
267 | networks. It is easy to configure, can cope with dynamic IP addresses, and | |
268 | supports 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 | |
340 | chat 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 | |
380 | messaging client. OTR (Off-the-Record) Messaging allows you to have private | |
381 | conversations over instant messaging by providing: (1) Encryption: No one else | |
382 | can read your instant messages. (2) Authentication: You are assured the | |
383 | correspondent is who you think it is. (3) Deniability: The messages you send | |
384 | do not have digital signatures that are checkable by a third party. Anyone | |
385 | can forge messages after a conversation to make them look like they came from | |
386 | you. However, during a conversation, your correspondent is assured the | |
387 | messages he sees are authentic and unmodified. (4) Perfect forward secrecy: | |
388 | If you lose control of your private keys, no previous conversation is | |
389 | compromised.") | |
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 | |
421 | client from the actual IRC server, and also from selected channels. Multiple | |
422 | clients from different locations can connect to a single ZNC account | |
423 | simultaneously 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 | |
445 | applications to use Jabber/XMPP networks in a non-blocking way. This library | |
446 | was 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. | |
496 | Among its features are: a tabbed chat window and single window modes; support | |
497 | for group chat (with Multi-User Chat protocol), invitation, chat to group chat | |
498 | transformation; audio and video conferences; file transfer; TLS, GPG and | |
499 | end-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 | |
570 | be easy to set up and configure, and efficient with system resources. | |
571 | Additionally, for developers it aims to be easy to extend and give a flexible | |
572 | system on which to rapidly develop added functionality, or prototype new | |
573 | protocols.") | |
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 | |
656 | instant 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 | |
708 | guidelines. It provides an easy to use application that allows you to | |
709 | connect 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 | |
805 | for 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 | |
827 | advantage is the ability to communicate with any arbitrary number of users at | |
828 | once. It supports both talk protocols (\"talk\" and \"ntalk\") and can communicate | |
829 | with 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, | |
854 | written in ANSI C++. It makes writing spec-compliant clients easy | |
855 | and allows for hassle-free integration of Jabber/XMPP functionality | |
856 | into existing applications.") | |
857 | (home-page "https://camaya.net/gloox") | |
858 | (license license:gpl3))) | |
c788c5fe | 859 | |
7c706558 | 860 | ;;; messaging.scm ends here |