+ (license license:gpl2+)))
+
+(define-public pidgin
+ (package
+ (name "pidgin")
+ (version "2.11.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/pidgin/Pidgin/"
+ version "/" name "-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "0crkggjj6y07v1kdwil9vw532b0vrs6p33nmlvdkpnl60m2169pp"))
+ (patches (search-patches "pidgin-add-search-path.patch"))))
+ (build-system glib-or-gtk-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("check" ,check)
+ ("intltool" ,intltool)
+ ("gconf" ,gconf)
+ ("python" ,python-2)
+ ("doxygen" ,doxygen)))
+ (inputs
+ `(("gtk+" ,gtk+-2)
+ ("libgcrypt" ,libgcrypt)
+ ("gnutls" ,gnutls)
+ ("cyrus-sasl" ,cyrus-sasl)
+ ("dbus" ,dbus)
+ ("dbus-glib" ,dbus-glib)
+ ("python2-dbus" ,python2-dbus)
+ ("libidn" ,libidn)
+ ("libltdl" ,libltdl)
+ ("libxml2" ,libxml2)
+ ;; TODO: gstreamer: patches needed to support gstreamer-1.0 or later
+ ;; TODO: farstream
+ ;; TODO: meanwhile
+ ;; TODO: network-manager
+ ;; TODO: gtkspell
+ ;; TODO: libxephyr
+ ;; TODO: libgadu
+ ("libxslt" ,libxslt)
+ ("avahi" ,avahi)
+ ("ncurses" ,ncurses)
+ ("sqlite" ,sqlite)
+ ("libice" ,libice)
+ ("libsm" ,libsm)
+ ("libxscrnsaver" ,libxscrnsaver)
+ ("startup-notification" ,startup-notification)))
+ (arguments
+ `(#:configure-flags
+ (list "--disable-gtkspell"
+ "--disable-tcl"
+ "--disable-meanwhile"
+ "--disable-nm" ; XXX remove when we have network-manager
+ "--disable-vv" ; XXX remove when we have farstream and gstreamer
+ "--disable-gstreamer" ; XXX patches needed to support gstreamer-1.0
+ "--enable-cyrus-sasl"
+ (string-append "--with-ncurses-headers="
+ (assoc-ref %build-inputs "ncurses")
+ "/include"))))
+ (native-search-paths
+ (list (search-path-specification
+ (variable "PURPLE_PLUGIN_PATH")
+ (files (list (string-append "lib/purple-"
+ (version-prefix version 1))
+ "lib/pidgin")))))
+ (home-page "http://www.pidgin.im/")
+ (synopsis "Graphical multi-protocol instant messaging client")
+ (description
+ "Pidgin is a modular instant messaging client that supports many popular
+chat protocols.")
+ (license
+ (list
+ license:gpl2+ ; Most of the code
+ license:lgpl2.1 ; GG protocol plugin (libpurple/protocols/gg/lib)
+ license:lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
+ ;; The following licenses cover the zephyr protocol plugin:
+ (license:non-copyleft
+ "file://libpurple/protocols/zephyr/mit-copyright.h"
+ "See libpurple/protocols/zephyr/mit-copyright.h in the distribution.")
+ (license:non-copyleft
+ "file://libpurple/protocols/zephyr/mit-sipb-copyright.h"
+ "See libpurple/protocols/zephyr/mit-sipb-copyright.h in the distribution.")))))
+
+(define-public pidgin-otr
+ (package
+ (name "pidgin-otr")
+ (version "4.0.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://otr.cypherpunks.ca/"
+ name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("intltool" ,intltool)))
+ (inputs
+ `(("pidgin" ,pidgin)
+ ("libotr" ,libotr)
+ ("libgpg-error" ,libgpg-error)
+ ("libgcrypt" ,libgcrypt)
+ ("glib" ,glib)
+ ("gtk+" ,gtk+-2)))
+ (home-page "https://otr.cypherpunks.ca/")
+ (synopsis "Off-the-Record Messaging plugin for Pidgin")
+ (description
+ "Pidgin-OTR is a plugin that adds support for OTR to the Pidgin instant
+messaging client. OTR (Off-the-Record) Messaging allows you to have private
+conversations over instant messaging by providing: (1) Encryption: No one else
+can read your instant messages. (2) Authentication: You are assured the
+correspondent is who you think it is. (3) Deniability: The messages you send
+do not have digital signatures that are checkable by a third party. Anyone
+can forge messages after a conversation to make them look like they came from
+you. However, during a conversation, your correspondent is assured the
+messages he sees are authentic and unmodified. (4) Perfect forward secrecy:
+If you lose control of your private keys, no previous conversation is
+compromised.")
+ (license license:gpl2)))
+
+(define-public znc
+ (package
+ (name "znc")
+ (version "1.6.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://znc.in/releases/archive/znc-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "09xqi5fs40x6nj9gq99bnw1a7saq96bvqxknxx0ilq7yfvg4c733"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ; tries to download GoogleTest with wget
+ #:configure-flags '("--enable-python"
+ "--enable-perl"
+ "--enable-cyrus")))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("perl" ,perl)
+ ("python" ,python)))
+ (inputs
+ `(("openssl" ,openssl)
+ ("zlib" ,zlib)
+ ("icu4c" ,icu4c)
+ ("cyrus-sasl" ,cyrus-sasl)))
+ (home-page "http://znc.in")
+ (synopsis "IRC network bouncer")
+ (description "ZNC is an IRC network bouncer or BNC. It can detach the
+client from the actual IRC server, and also from selected channels. Multiple
+clients from different locations can connect to a single ZNC account
+simultaneously and therefore appear under the same nickname on IRC.")
+ (license license:asl2.0)))
+
+(define-public python-nbxmpp
+ (package
+ (name "python-nbxmpp")
+ (version "0.5.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/n/nbxmpp/"
+ "nbxmpp-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0dcr786dyips1fdvgsn8yvpgcz5j7217fi05c29cfypdl8jnp6mp"))))
+ (build-system python-build-system)
+ ;; No tests included
+ (arguments `(#:tests? #f))
+ (home-page "http://python-nbxmpp.gajim.org")
+ (synopsis "Non-blocking Jabber/XMPP module")
+ (description
+ "The goal of this python library is to provide a way for Python
+applications to use Jabber/XMPP networks in a non-blocking way. This library
+was initially a fork of xmpppy, but is using non-blocking sockets.")
+ (license license:gpl3+)))
+
+(define-public python2-nbxmpp
+ (package-with-python2 python-nbxmpp))
+
+(define-public gajim
+ (package
+ (name "gajim")
+ (version "0.16.6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://gajim.org/downloads/"
+ (version-major+minor version)
+ "/gajim-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "1p3qwzy07f0wkika9yigyiq167l2k6wn12flqa7x55z4ihbysmqk"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'wrap-program
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Make sure all Python scripts run with the correct PYTHONPATH.
+ (let ((out (assoc-ref outputs "out"))
+ (path (getenv "PYTHONPATH")))
+ (for-each (lambda (name)
+ (let ((file (string-append out "/bin/" name)))
+ ;; Wrapping destroys identification of intended
+ ;; application, so we need to override "APP".
+ (substitute* file
+ (("APP=`basename \\$0`")
+ (string-append "APP=" name)))
+ (wrap-program file
+ `("PYTHONPATH" ":" prefix (,path)))))
+ '("gajim" "gajim-remote" "gajim-history-manager")))
+ #t)))))
+ (native-inputs
+ `(("intltool" ,intltool)))
+ (propagated-inputs
+ `(("python2-nbxmpp" ,python2-nbxmpp)
+ ("python2-pyopenssl" ,python2-pyopenssl)
+ ("python2-gnupg" ,python2-gnupg)))
+ (inputs
+ `(("python2-pygtk" ,python2-pygtk)
+ ("python" ,python-2)))
+ (home-page "https://gajim.org/")
+ (synopsis "Jabber (XMPP) client")
+ (description "Gajim is a feature-rich and easy to use Jabber/XMPP client.
+Among its features are: a tabbed chat window and single window modes; support
+for group chat (with Multi-User Chat protocol), invitation, chat to group chat
+transformation; audio and video conferences; file transfer; TLS, GPG and
+end-to-end encryption support; XML console.")
+ (license license:gpl3)))
+
+(define-public prosody
+ (package
+ (name "prosody")
+ (version "0.9.10")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://prosody.im/downloads/source/"
+ "prosody-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0bv6s5c0iizz015hh1lxlwlw1iwvisywajm2rcrbdfyrskzfwdj8"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; no "check" target
+ #:configure-flags (list "--no-example-certs")
+ #:modules ((ice-9 match)
+ (srfi srfi-1)
+ (guix build gnu-build-system)
+ (guix build utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-configure-script
+ (lambda _
+ ;; The configure script aborts when it encounters unexpected
+ ;; arguments. Make it more tolerant.
+ (substitute* "configure"
+ (("exit 1") ""))
+ #t))
+ (add-after 'install 'wrap-programs
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; Make sure all executables in "bin" find the required Lua
+ ;; modules at runtime.
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin/"))
+ (deps (delete #f (map (match-lambda
+ ((label . directory)
+ (if (string-prefix? "lua" label)
+ directory #f)))
+ inputs)))
+ (path (string-join
+ (map (lambda (path)
+ (string-append path "/share/lua/5.1/?.lua;"
+ path "/share/lua/5.1/?/?.lua"))
+ (cons out deps))
+ ";"))
+ (cpath (string-join
+ (map (lambda (path)
+ (string-append path "/lib/lua/5.1/?.so;"
+ path "/lib/lua/5.1/?/?.so"))
+ (cons out deps))
+ ";")))
+ (for-each (lambda (file)
+ (wrap-program file
+ `("LUA_PATH" ";" = (,path))
+ `("LUA_CPATH" ";" = (,cpath))))
+ (find-files bin ".*"))
+ #t))))))
+ (inputs
+ `(("libidn" ,libidn)
+ ("openssl" ,openssl)
+ ("lua" ,lua-5.1)
+ ("lua5.1-expat" ,lua5.1-expat)
+ ("lua5.1-socket" ,lua5.1-socket)
+ ("lua5.1-filesystem" ,lua5.1-filesystem)
+ ;; See <https://prosody.im/doc/depends#luasec>.
+ ("lua5.1-sec" ,lua5.1-sec-0.5)))
+ (home-page "https://prosody.im/")
+ (synopsis "Jabber (XMPP) server")
+ (description "Prosody is a modern XMPP communication server. It aims to
+be easy to set up and configure, and efficient with system resources.
+Additionally, for developers it aims to be easy to extend and give a flexible
+system on which to rapidly develop added functionality, or prototype new
+protocols.")
+ (license license:x11)))
+
+(define-public libtoxcore
+ (let ((revision "1")
+ (commit "755f084e8720b349026c85afbad58954cb7ff1d4"))
+ (package
+ (name "libtoxcore")
+ (version (string-append "0.0.0" "-"
+ revision "."(string-take commit 7)))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/irungentoo/toxcore.git")
+ (commit commit)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "0ap1gvlyihnfivv235dbrgsxsiiz70bhlmlr5gn1027w3h5kqz8w"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ;; TODO: Add when test suite is capable of passing.
+ ;; ("check" ,check)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("libsodium" ,libsodium)
+ ("opus" ,opus)
+ ("libvpx" ,libvpx)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'autoconf
+ (lambda _
+ (zero? (system* "autoreconf" "-vfi")))))
+ #:tests? #f)) ; FIXME: Testsuite fails, reasons unspecific.
+ (synopsis "Library for the Tox encrypted messenger protocol")
+ (description
+ "C library implementation of the Tox encrypted messenger protocol.")
+ (license license:gpl3+)
+ (home-page "https://tox.chat"))))
+
+(define-public utox
+ (package
+ (name "utox")
+ (version "0.9.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/GrayHatter/uTox/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "13hfqbwzcgvfbvf9yjm62aqsvxnpqppb50c88sys43m7022yqcsy"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:make-flags (list (string-append "PREFIX=" %output)
+ "CC=gcc")
+ #:tests? #f ; No tests
+ #:phases
+ (modify-phases %standard-phases
+ ;; No configure script
+ (delete 'configure))))
+ (inputs
+ `(("dbus" ,dbus)
+ ("filteraudio" ,filteraudio)
+ ("fontconfig" ,fontconfig)
+ ("freetype" ,freetype)
+ ("libsodium" ,libsodium)
+ ("libtoxcore" ,libtoxcore)
+ ("libvpx" ,libvpx)
+ ("libx11" ,libx11)
+ ("libxext" ,libxext)
+ ("libxrender" ,libxrender)
+ ("openal" ,openal)
+ ("v4l-utils" ,v4l-utils)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (synopsis "Lightweight Tox client")
+ (description "A lightweight Tox client. Tox is a distributed and secure
+instant messenger with audio and video chat capabilities.")
+ (home-page "http://utox.org/")
+ (license license:gpl3)))
+
+(define-public qtox
+ (package
+ (name "qtox")
+ (version "1.5.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/qTox/qTox/archive/v"
+ version ".tar.gz"))
+ (sha256
+ (base32 "0y15mc39x54k1kz36cw9412kl1p1p6nzlx97gagv4gg3vybfhbjv"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (inputs
+ `(("ffmpeg" ,ffmpeg)
+ ("glib" ,glib)
+ ("gtk+" ,gtk+-2)
+ ("libsodium" ,libsodium)
+ ("libtoxcore" ,libtoxcore)
+ ("libvpx" ,libvpx)
+ ("libxscrnsaver" ,libxscrnsaver)
+ ("libx11" ,libx11)
+ ("openal" ,openal)
+ ("qrencode" ,qrencode)
+ ("qt" ,qt)
+ ("sqlcipher" ,sqlcipher)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("qmake" ,qt)))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-reproducibility-issues
+ (lambda _
+ (substitute* "src/main.cpp"
+ (("__DATE__") "\"\"")
+ (("__TIME__") "\"\"")
+ (("TIMESTAMP") "\"\""))
+ #t))
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (zero?
+ (system* "qmake"
+ (string-append "PREFIX="
+ (assoc-ref outputs "out")))))))))
+ (home-page "https://qtox.github.io/")
+ (synopsis "Tox chat client using Qt")
+ (description "qTox is a Tox client that follows the Tox design
+guidelines. It provides an easy to use application that allows you to
+connect with friends and family without anyone else listening in.")
+ (license license:gpl3+)))
+
+(define-public pybitmessage
+ (package
+ (name "pybitmessage")
+ (version "0.6.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/Bitmessage/"
+ "PyBitmessage/archive/v" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1ffj7raxpp277kphj98190fxrwfx16vmbspk7k3azg3bh5f5idnf"))))
+ (inputs
+ `(("python" ,python-2)
+ ("python:tk" ,python-2 "tk")
+ ("openssl" ,openssl)
+ ("sqlite" ,sqlite)
+ ("qt" ,qt-4)
+ ("python2-pyqt-4" ,python2-pyqt-4)
+ ("python2-sip" ,python2-sip)
+ ("python2-pysqlite" ,python2-pysqlite)
+ ("python2-pyopenssl" ,python2-pyopenssl)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:imported-modules ((guix build python-build-system)
+ ,@%gnu-build-system-modules)
+ #:make-flags (list (string-append "PREFIX="
+ (assoc-ref %outputs "out")))
+ #:tests? #f ; no test target
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'fix-makefile
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "Makefile"
+ (("mkdir -p \\$\\{DESTDIR\\}/usr") "")
+ (("/usr/local") "")
+ (("/usr") "")
+ (("#!/bin/sh") (string-append "#!" (which "bash")))
+ (("python2") (which "python"))
+ (("/opt/openssl-compat-bitcoin/lib/")
+ (string-append (assoc-ref inputs "openssl") "/lib/")))
+ #t))
+ (add-after 'unpack 'fix-unmatched-python-shebangs
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/bitmessagemain.py"
+ (("#!/usr/bin/env python2.7")
+ (string-append "#!" (which "python"))))
+ (substitute* "src/bitmessagecli.py"
+ (("#!/usr/bin/env python2.7.x")
+ (string-append "#!" (which "python"))))
+ #t))
+ (add-after 'unpack 'fix-depends
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/depends.py"
+ (("libcrypto.so")
+ (string-append (assoc-ref inputs "openssl")
+ "/lib/libcrypto.so")))
+ #t))
+ (add-after 'unpack 'fix-local-files-in-paths
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "src/proofofwork.py"
+ (("bitmsghash.so")
+ (string-append (assoc-ref outputs "out")
+ "/lib/bitmsghash.so")))
+ #t))
+ (add-after 'unpack 'fix-pyelliptic
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/pyelliptic/openssl.py"
+ (("libcrypto.so")
+ (string-append (assoc-ref inputs "openssl")
+ "/lib/libcrypto.so"))
+ (("libssl.so")
+ (string-append (assoc-ref inputs "openssl")
+ "/lib/libssl.so")))
+ #t))
+ ;; XXX: Make does not build and install bitmsghash, do it
+ ;; and place it in /lib.
+ (add-before 'build 'build-and-install-bitmsghash
+ (lambda* (#:key outputs #:allow-other-keys)
+ (chdir "src/bitmsghash")
+ (system* "make")
+ (chdir "../..")
+ (install-file "src/bitmsghash/bitmsghash.so"
+ (string-append (assoc-ref outputs "out") "/lib"))
+ #t))
+ (add-after 'install 'wrap
+ (@@ (guix build python-build-system) wrap)))))
+ (license license:expat)
+ (description
+ "Distributed and trustless peer-to-peer communications protocol
+for sending encrypted messages to one person or many subscribers.")
+ (synopsis "Distributed peer-to-peer communication")
+ (home-page "https://bitmessage.org/")))
+
+(define-public ytalk
+ (package
+ (name "ytalk")
+ (version "3.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "ftp://ftp.ourproject.org/pub/ytalk/ytalk-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1d3jhnj8rgzxyxjwfa22vh45qwzjvxw1qh8fz6b7nfkj3zvk9jvf"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("ncurses" ,ncurses)))
+ (home-page "http://ytalk.ourproject.org")
+ (synopsis "Multi-user chat program")
+ (description "Ytalk is a replacement for the BSD talk program. Its main
+advantage is the ability to communicate with any arbitrary number of users at
+once. It supports both talk protocols (\"talk\" and \"ntalk\") and can communicate
+with several different talk daemons at the same time.")
+ (license license:gpl2+)))
+
+(define-public gloox
+ (package
+ (name "gloox")
+ (version "1.0.17")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://camaya.net/download/gloox-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "09c01jr5nrm7f1ly42wg0pqqscmp48pv8y2fjx1vwbavjxdq59ri"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("libidn" ,libidn)
+ ("gnutls" ,gnutls)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (synopsis "Portable high-level Jabber/XMPP library for C++")
+ (description
+ "gloox is a full-featured Jabber/XMPP client library,
+written in ANSI C++. It makes writing spec-compliant clients easy
+and allows for hassle-free integration of Jabber/XMPP functionality
+into existing applications.")
+ (home-page "https://camaya.net/gloox")
+ (license license:gpl3)))