| 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2014 John Darrington <jmd@gnu.org> |
| 3 | ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> |
| 4 | ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com> |
| 5 | ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> |
| 6 | ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> |
| 7 | ;;; Copyright © 2016 Francesco Frassinelli <fraph24@gmail.com> |
| 8 | ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is> |
| 9 | ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> |
| 10 | ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> |
| 11 | ;;; Copyright © 2018 Jovany Leandro G.C <bit4bit@riseup.net> |
| 12 | ;;; |
| 13 | ;;; This file is part of GNU Guix. |
| 14 | ;;; |
| 15 | ;;; GNU Guix is free software; you can redistribute it and/or modify it |
| 16 | ;;; under the terms of the GNU General Public License as published by |
| 17 | ;;; the Free Software Foundation; either version 3 of the License, or (at |
| 18 | ;;; your option) any later version. |
| 19 | ;;; |
| 20 | ;;; GNU Guix is distributed in the hope that it will be useful, but |
| 21 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of |
| 22 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 23 | ;;; GNU General Public License for more details. |
| 24 | ;;; |
| 25 | ;;; You should have received a copy of the GNU General Public License |
| 26 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
| 27 | |
| 28 | (define-module (gnu packages telephony) |
| 29 | #:use-module (gnu packages) |
| 30 | #:use-module (gnu packages autotools) |
| 31 | #:use-module (gnu packages avahi) |
| 32 | #:use-module (gnu packages boost) |
| 33 | #:use-module (gnu packages check) |
| 34 | #:use-module (gnu packages file) |
| 35 | #:use-module (gnu packages protobuf) |
| 36 | #:use-module (gnu packages gnupg) |
| 37 | #:use-module (gnu packages linux) |
| 38 | #:use-module (gnu packages multiprecision) |
| 39 | #:use-module (gnu packages ncurses) |
| 40 | #:use-module (gnu packages pkg-config) |
| 41 | #:use-module (gnu packages pulseaudio) |
| 42 | #:use-module (gnu packages qt) |
| 43 | #:use-module (gnu packages speech) |
| 44 | #:use-module (gnu packages tls) |
| 45 | #:use-module (gnu packages xiph) |
| 46 | #:use-module (gnu packages xorg) |
| 47 | #:use-module (gnu packages xml) |
| 48 | #:use-module (gnu packages readline) |
| 49 | #:use-module (gnu packages bison) |
| 50 | #:use-module (gnu packages flex) |
| 51 | #:use-module ((guix licenses) #:prefix license:) |
| 52 | #:use-module (guix packages) |
| 53 | #:use-module (guix download) |
| 54 | #:use-module (guix git-download) |
| 55 | #:use-module (guix build-system cmake) |
| 56 | #:use-module (guix build-system gnu)) |
| 57 | |
| 58 | (define-public commoncpp |
| 59 | (package |
| 60 | (name "commoncpp") |
| 61 | (version "1.8.1") |
| 62 | (source (origin |
| 63 | (method url-fetch) |
| 64 | (uri (string-append "mirror://gnu/" name "/commoncpp2-" |
| 65 | version ".tar.gz")) |
| 66 | (sha256 (base32 |
| 67 | "0kmgr5w3b1qwzxnsnw94q6rqs0hr8nbv9clf07ca2a2fyypx9kjk")))) |
| 68 | (arguments |
| 69 | `(#:phases |
| 70 | (modify-phases %standard-phases |
| 71 | (add-before 'configure 'pre-configure |
| 72 | (lambda _ |
| 73 | (substitute* "src/applog.cpp" |
| 74 | (("^// TODO sc.*") "#include <sys/types.h>\n#include <sys/stat.h>\n")) |
| 75 | #t))))) |
| 76 | (build-system gnu-build-system) |
| 77 | (synopsis "(u)Common C++ framework for threaded applications") |
| 78 | (description "GNU Common C++ is an portable, optimized class framework for |
| 79 | threaded applications, supporting concurrent synchronization, inter-process |
| 80 | communications via sockets, and various methods for data handling, such as |
| 81 | serialization and XML parsing. It includes the uCommon C++ library, a smaller |
| 82 | reimplementation.") |
| 83 | (license license:gpl2+) ; plus runtime exception |
| 84 | (home-page "https://www.gnu.org/software/commoncpp/"))) |
| 85 | |
| 86 | (define-public ucommon |
| 87 | (package |
| 88 | (name "ucommon") |
| 89 | (version "7.0.0") |
| 90 | (source (origin |
| 91 | (method url-fetch) |
| 92 | (uri (string-append "mirror://gnu/commoncpp/" name "-" |
| 93 | version ".tar.gz")) |
| 94 | (sha256 (base32 |
| 95 | "1mv080rvrhyxyhgqiqr8r9jdqhg3xhfawjvfj5zgj47h59nggjba")))) |
| 96 | (build-system gnu-build-system) |
| 97 | (inputs `(("gnutls" ,gnutls))) |
| 98 | (synopsis "Common C++ framework for threaded applications") |
| 99 | (description "GNU uCommon C++ is meant as a very light-weight C++ library |
| 100 | to facilitate using C++ design patterns even for very deeply embedded |
| 101 | applications, such as for systems using uclibc along with posix threading |
| 102 | support.") |
| 103 | (license license:gpl3+) |
| 104 | (home-page "https://www.gnu.org/software/commoncpp/") |
| 105 | (properties '((ftp-directory . "/gnu/commoncpp"))))) |
| 106 | |
| 107 | (define-public ccrtp |
| 108 | (package |
| 109 | (name "ccrtp") |
| 110 | (version "2.1.2") |
| 111 | (source (origin |
| 112 | (method url-fetch) |
| 113 | (uri (string-append "mirror://gnu/ccrtp/ccrtp-" |
| 114 | version ".tar.gz")) |
| 115 | (sha256 (base32 |
| 116 | "17ili8l7zqbbkzr1rcy4hlnazkf50mds41wg6n7bfdsx3c7cldgh")))) |
| 117 | (build-system gnu-build-system) |
| 118 | (inputs `(("ucommon" ,ucommon) |
| 119 | ("libgcrypt" ,libgcrypt))) |
| 120 | (native-inputs `(("pkg-config" ,pkg-config))) |
| 121 | (synopsis "Implementation of RTP (real-time transport protocol)") |
| 122 | (description "GNU ccRTP is an implementation of RTP, the real-time transport |
| 123 | protocol from the IETF. It is suitable both for high capacity servers and |
| 124 | personal client applications. It is flexible in its design, allowing it to |
| 125 | function as a framework for the framework, rather than just being a |
| 126 | packet-manipulation library.") |
| 127 | (license license:gpl2+) ; plus runtime exception |
| 128 | (home-page "https://www.gnu.org/software/ccrtp/"))) |
| 129 | |
| 130 | |
| 131 | (define-public osip |
| 132 | (package |
| 133 | (name "osip") |
| 134 | (version "5.0.0") |
| 135 | (source (origin |
| 136 | (method url-fetch) |
| 137 | (uri (string-append "mirror://gnu/osip/libosip2-" version ".tar.gz")) |
| 138 | (patches (search-patches "osip-CVE-2017-7853.patch")) |
| 139 | (sha256 |
| 140 | (base32 |
| 141 | "00yznbrm9q04wgd4b831km8iwlvwvsnwv87igf79g5vj9yakr88q")))) |
| 142 | (build-system gnu-build-system) |
| 143 | |
| 144 | (synopsis "Library implementing SIP (RFC-3261)") |
| 145 | (description "GNU oSIP is an implementation of the SIP protocol. It is |
| 146 | used to provide multimedia and telecom software developers with an interface |
| 147 | to initiate and control SIP sessions.") |
| 148 | (license license:lgpl2.1+) |
| 149 | (home-page "https://www.gnu.org/software/osip/"))) |
| 150 | |
| 151 | |
| 152 | (define-public exosip |
| 153 | (package |
| 154 | (name "exosip") |
| 155 | (version "4.1.0") |
| 156 | (source (origin |
| 157 | (method url-fetch) |
| 158 | (uri (string-append "mirror://savannah/exosip/libeXosip2-" |
| 159 | version ".tar.gz")) |
| 160 | (sha256 (base32 |
| 161 | "17cna8kpc8nk1si419vgr6r42k2lda0rdk50vlxrw8rzg0xp2xrw")))) |
| 162 | (build-system gnu-build-system) |
| 163 | (inputs `(("osip" ,osip))) |
| 164 | (synopsis "Sip abstraction library") |
| 165 | (description "EXosip is a library that hides the complexity of using the |
| 166 | SIP protocol for multimedia session establishment. This protocol is mainly to |
| 167 | be used by VoIP telephony applications (endpoints or conference server) but |
| 168 | might be also useful for any application that wish to establish sessions like |
| 169 | multiplayer games.") |
| 170 | (license license:gpl2+) |
| 171 | ;; (plus OpenSSL linking exception) |
| 172 | ;; http://git.savannah.gnu.org/cgit/exosip.git/plain/LICENSE.OpenSSL |
| 173 | (home-page "https://savannah.nongnu.org/projects/exosip"))) |
| 174 | |
| 175 | (define-public sipwitch |
| 176 | (package |
| 177 | (name "sipwitch") |
| 178 | (version "1.9.15") |
| 179 | (source (origin |
| 180 | (method url-fetch) |
| 181 | (uri (string-append "mirror://gnu/sipwitch/sipwitch-" |
| 182 | version ".tar.gz")) |
| 183 | (sha256 (base32 |
| 184 | "10lli9c703d7qbarzc0lgmz963ppncvnrklwrnri0s1zcmmahyia")))) |
| 185 | (build-system gnu-build-system) |
| 186 | ;; The configure.ac uses pkg-config but in a kludgy way which breaks when |
| 187 | ;; cross-compiling. Among other issues there the program name "pkg-config" |
| 188 | ;; is hard coded instead of respecting the PKG_CONFIG environment variable. |
| 189 | ;; Fortunately we can avoid the use of pkg-config and set the dependency |
| 190 | ;; flags ourselves. |
| 191 | (arguments `(#:configure-flags |
| 192 | `("--without-pkg-config" |
| 193 | ,(string-append "UCOMMON_CFLAGS=-I" |
| 194 | (assoc-ref %build-inputs "ucommon") "/include") |
| 195 | "UCOMMON_LIBS=-lusecure -lucommon -lrt -ldl -lpthread" |
| 196 | ,(string-append "LIBOSIP2_CFLAGS=-I" |
| 197 | (assoc-ref %build-inputs "osip") "/include") |
| 198 | "LIBOSIP2_LIBS=-losipparser2 -losip2" |
| 199 | ,(string-append "--sysconfdir=" (assoc-ref %outputs "out") |
| 200 | "/etc") |
| 201 | "EXOSIP2_LIBS=-leXosip2" |
| 202 | ,(string-append "EXOSIP2_CFLAGS=-I" |
| 203 | (assoc-ref %build-inputs "exosip") |
| 204 | "/include")))) |
| 205 | (inputs `(("ucommon" ,ucommon) |
| 206 | ("exosip" ,exosip) |
| 207 | ("osip" ,osip))) |
| 208 | (synopsis "Secure peer-to-peer VoIP server for the SIP protocol") |
| 209 | (description "GNU SIP Witch is a peer-to-peer Voice-over-IP server that |
| 210 | uses the SIP protocol. Calls can be made from behind NAT firewalls and |
| 211 | without the need for a service provider. Its peer-to-peer design ensures that |
| 212 | there is no central point for media intercept or capture and thus it can be |
| 213 | used to construct a secure telephone system that operates over the public |
| 214 | internet.") |
| 215 | (license license:gpl3+) |
| 216 | (home-page "https://www.gnu.org/software/sipwitch/"))) |
| 217 | |
| 218 | (define-public libsrtp |
| 219 | (package |
| 220 | (name "libsrtp") |
| 221 | (version "1.6.0") |
| 222 | (source (origin |
| 223 | (method url-fetch) |
| 224 | (uri (string-append "https://github.com/cisco/libsrtp/archive/v" |
| 225 | version ".tar.gz")) |
| 226 | (file-name (string-append name "-" version ".tar.gz")) |
| 227 | (sha256 |
| 228 | (base32 |
| 229 | "1ppdqsrx5ni54vmd4kdzzmvgmf5ixb04w0jw7idy8mad6l27jghs")))) |
| 230 | (native-inputs |
| 231 | `(("psmisc" ,psmisc) ;some tests require 'killall' |
| 232 | ("procps" ,procps))) |
| 233 | (build-system gnu-build-system) |
| 234 | (arguments |
| 235 | '(#:test-target "runtest" |
| 236 | #:phases |
| 237 | (modify-phases %standard-phases |
| 238 | (add-after 'unpack 'patch-mips-variable-in-testsuite |
| 239 | ;; This comes from https://github.com/cisco/libsrtp/pull/151 |
| 240 | (lambda _ |
| 241 | (substitute* "test/srtp_driver.c" |
| 242 | (("mips ") "mips_est ") |
| 243 | (("mips\\)") "mips_est)")) |
| 244 | #t)) |
| 245 | (add-after 'unpack 'patch-dictionary-location |
| 246 | ;; With the above changes, the rtpw_test.sh test finally runs, and fails. |
| 247 | (lambda _ |
| 248 | (substitute* "test/rtpw.c" |
| 249 | (("/usr/share/dict/words") |
| 250 | (string-append (assoc-ref %build-inputs "procps") |
| 251 | "/share/doc/procps-ng/FAQ")) |
| 252 | (("words.txt") "FAQ")) |
| 253 | #t))))) |
| 254 | (synopsis "Secure RTP (SRTP) Reference Implementation") |
| 255 | (description |
| 256 | "This package provides an implementation of the Secure Real-time Transport |
| 257 | Protocol (@dfn{SRTP}), the Universal Security Transform (@dfn{UST}), and a |
| 258 | supporting cryptographic kernel.") |
| 259 | (home-page "https://github.com/cisco/libsrtp") |
| 260 | (license license:bsd-3))) |
| 261 | |
| 262 | (define-public bctoolbox |
| 263 | (package |
| 264 | (name "bctoolbox") |
| 265 | (version "0.2.0") |
| 266 | (source (origin |
| 267 | (method url-fetch) |
| 268 | (uri (string-append "mirror://savannah/linphone/bctoolbox/bctoolbox-" |
| 269 | version ".tar.gz")) |
| 270 | (sha256 |
| 271 | (base32 |
| 272 | "14ivv6bh6qywys6yyb34scy9w78d636xl1f7cyxm3gwx2qv71lx5")))) |
| 273 | (build-system gnu-build-system) |
| 274 | (arguments '(#:make-flags '("CFLAGS=-fPIC"))) |
| 275 | (native-inputs |
| 276 | `(("cunit" ,cunit))) |
| 277 | (inputs |
| 278 | `(("mbedtls" ,mbedtls-apache))) |
| 279 | (home-page "https://www.linphone.org") |
| 280 | (synopsis "Utilities library for linphone software") |
| 281 | (description "BCtoolbox is a utilities library used by Belledonne |
| 282 | Communications softwares like linphone.") |
| 283 | (license license:gpl2+))) |
| 284 | |
| 285 | (define-public ortp |
| 286 | (package |
| 287 | (name "ortp") |
| 288 | (version "0.27.0") |
| 289 | (source (origin |
| 290 | (method url-fetch) |
| 291 | (uri (string-append "https://download.savannah.nongnu.org/" |
| 292 | "releases/linphone/ortp/sources/ortp-" |
| 293 | version ".tar.gz")) |
| 294 | (sha256 |
| 295 | (base32 |
| 296 | "1by0dqdqrj5avzcvjws30g8v5sa61wj12x00sxw0kn1smcrshqgb")))) |
| 297 | (build-system gnu-build-system) |
| 298 | (inputs |
| 299 | `(("bctoolbox" ,bctoolbox))) |
| 300 | (native-inputs |
| 301 | `(("pkg-config" ,pkg-config))) |
| 302 | (home-page "https://linphone.org/") |
| 303 | (synopsis "Implementation of the Real-time transport protocol") |
| 304 | (description "oRTP is a library implementing the Real-time transport |
| 305 | protocol (RFC 3550).") |
| 306 | (license license:lgpl2.1+))) |
| 307 | |
| 308 | (define-public libiax2 |
| 309 | (let ((commit "0e5980f1d78ce462e2d1ed6bc39ff35c8341f201")) |
| 310 | ;; This is the commit used by the Ring Project. |
| 311 | (package |
| 312 | (name "libiax2") |
| 313 | (version (string-append "0.0.0-1." (string-take commit 7))) |
| 314 | (source |
| 315 | (origin |
| 316 | (method url-fetch) |
| 317 | (uri |
| 318 | (string-append |
| 319 | "https://gitlab.savoirfairelinux.com/sflphone/libiax2/" |
| 320 | "repository/archive.tar.gz?ref=" |
| 321 | commit)) |
| 322 | (file-name (string-append name "-" version ".tar.gz")) |
| 323 | (sha256 |
| 324 | (base32 |
| 325 | "0cj5293bixp3k5x3hjwyd0iq7z8w5p7yavxvvkqk5817hjq386y2")))) |
| 326 | (build-system gnu-build-system) |
| 327 | (native-inputs |
| 328 | `(("autoconf" ,autoconf) |
| 329 | ("automake" ,automake) |
| 330 | ("libtool" ,libtool))) |
| 331 | (arguments |
| 332 | `(#:phases (modify-phases %standard-phases |
| 333 | (add-after 'unpack 'autoconf |
| 334 | (lambda _ |
| 335 | (zero? (system* "autoreconf" "-vfi"))))))) |
| 336 | (home-page "https://gitlab.savoirfairelinux.com/sflphone/libiax2") |
| 337 | (synopsis "Inter-Asterisk-Protocol library") |
| 338 | (description "LibIAX2 implements the Inter-Asterisk-Protocol for relaying |
| 339 | Voice-over-IP (VoIP) communications.") |
| 340 | ;; The file 'src/md5.c' is released into the public domain by RSA Data |
| 341 | ;; Security. The files 'src/answer.h', 'src/miniphone.c', |
| 342 | ;; 'src/options.c', 'src/options.h', 'src/ring10.h', 'src/winiphone.c' are |
| 343 | ;; covered under the 'GPL'. |
| 344 | ;; The package as a whole is distributed under the LGPL 2.0. |
| 345 | (license (list license:lgpl2.0 |
| 346 | license:public-domain |
| 347 | license:gpl2+))))) |
| 348 | |
| 349 | (define-public seren |
| 350 | (package |
| 351 | (name "seren") |
| 352 | (version "0.0.21") |
| 353 | (source (origin |
| 354 | (method url-fetch) |
| 355 | (uri (string-append "http://holdenc.altervista.org/" |
| 356 | "seren/downloads/seren-" version |
| 357 | ".tar.gz")) |
| 358 | (sha256 |
| 359 | (base32 |
| 360 | "06mams6bng7ib7p2zpfq88kdr4ffril9svzc9lprkb0wjgmkglk9")))) |
| 361 | (build-system gnu-build-system) |
| 362 | (arguments '(#:tests? #f)) ; no "check" target |
| 363 | (inputs |
| 364 | `(("alsa-lib" ,alsa-lib) |
| 365 | ("gmp" ,gmp) |
| 366 | ("libogg" ,libogg) |
| 367 | ("ncurses" ,ncurses) |
| 368 | ("opus" ,opus))) |
| 369 | (synopsis "Simple VoIP program to create conferences from the terminal") |
| 370 | (description |
| 371 | "Seren is a simple VoIP program based on the Opus codec that allows you |
| 372 | to create a voice conference from the terminal, with up to 10 participants, |
| 373 | without having to register accounts, exchange emails, or add people to contact |
| 374 | lists. All you need to join an existing conference is the host name or IP |
| 375 | address of one of the participants.") |
| 376 | (home-page "http://holdenc.altervista.org/seren/") |
| 377 | (license license:gpl3+))) |
| 378 | |
| 379 | (define-public mumble |
| 380 | (package |
| 381 | (name "mumble") |
| 382 | (version "1.2.19") |
| 383 | (source (origin |
| 384 | (method url-fetch) |
| 385 | (uri (string-append "https://mumble.info/snapshot/" |
| 386 | name "-" version ".tar.gz")) |
| 387 | (sha256 |
| 388 | (base32 |
| 389 | "1s60vaici3v034jzzi20x23hsj6mkjlc0glipjq4hffrg9qgnizh")) |
| 390 | (modules '((guix build utils))) |
| 391 | (snippet |
| 392 | `(begin |
| 393 | ;; Remove bundled software. |
| 394 | (for-each delete-file-recursively '("3rdparty" |
| 395 | "speex" |
| 396 | "speexbuild" |
| 397 | "opus-build" |
| 398 | "opus-src" |
| 399 | "sbcelt-helper-build" |
| 400 | "sbcelt-lib-build" |
| 401 | "sbcelt-src")) |
| 402 | ;; TODO: Celt is still bundled. It has been merged into Opus |
| 403 | ;; and will be removed after 1.3.0. |
| 404 | ;; https://github.com/mumble-voip/mumble/issues/1999 |
| 405 | #t)))) |
| 406 | (build-system gnu-build-system) |
| 407 | (arguments |
| 408 | `(#:tests? #f ; no "check" target |
| 409 | #:phases |
| 410 | (modify-phases %standard-phases |
| 411 | (replace 'configure |
| 412 | (lambda* (#:key outputs #:allow-other-keys) |
| 413 | (zero? (system* "qmake" "main.pro" "-recursive" |
| 414 | (string-append "CONFIG+=" |
| 415 | (string-join |
| 416 | (list "no-update" |
| 417 | "no-ice" |
| 418 | "no-embed-qt-translations" |
| 419 | "no-bundled-speex" |
| 420 | "pch" |
| 421 | "no-bundled-opus" |
| 422 | "no-celt" |
| 423 | "no-alsa" |
| 424 | "no-oss" |
| 425 | "no-portaudio" |
| 426 | "speechd" |
| 427 | "no-g15" |
| 428 | "no-bonjour" |
| 429 | "release"))) |
| 430 | (string-append "DEFINES+=" |
| 431 | "PLUGIN_PATH=" |
| 432 | (assoc-ref outputs "out") |
| 433 | "/lib/mumble"))))) |
| 434 | (add-before 'configure 'fix-libspeechd-include |
| 435 | (lambda _ |
| 436 | (substitute* "src/mumble/TextToSpeech_unix.cpp" |
| 437 | (("libspeechd.h") "speech-dispatcher/libspeechd.h")))) |
| 438 | (replace 'install ; install phase does not exist |
| 439 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 440 | (let* ((out (assoc-ref outputs "out")) |
| 441 | (etc (string-append out "/etc/murmur")) |
| 442 | (dbus (string-append out "/etc/dbus-1/system.d/")) |
| 443 | (bin (string-append out "/bin")) |
| 444 | (services (string-append out "/share/services")) |
| 445 | (applications (string-append out "/share/applications")) |
| 446 | (icons (string-append out "/share/icons/hicolor/scalable/apps")) |
| 447 | (man (string-append out "/share/man/man1")) |
| 448 | (lib (string-append out "/lib/mumble"))) |
| 449 | (install-file "release/mumble" bin) |
| 450 | (install-file "scripts/mumble-overlay" bin) |
| 451 | (install-file "scripts/mumble.protocol" services) |
| 452 | (install-file "scripts/mumble.desktop" applications) |
| 453 | (install-file "icons/mumble.svg" icons) |
| 454 | (install-file "man/mumble-overlay.1" man) |
| 455 | (install-file "man/mumble.1" man) |
| 456 | (install-file "release/murmurd" bin) |
| 457 | (install-file "scripts/murmur.ini.system" etc) |
| 458 | (rename-file (string-append etc "/murmur.ini.system") |
| 459 | (string-append etc "/murmur.ini")) |
| 460 | (install-file "scripts/murmur.conf" dbus) |
| 461 | (install-file "man/murmurd.1" man) |
| 462 | (for-each (lambda (file) (install-file file lib)) |
| 463 | (find-files "." "\\.so\\.")) |
| 464 | (for-each (lambda (file) (install-file file lib)) |
| 465 | (find-files "release/plugins" "\\.so$")))))))) |
| 466 | (inputs |
| 467 | `(("avahi" ,avahi) |
| 468 | ("protobuf" ,protobuf) |
| 469 | ("openssl" ,openssl) |
| 470 | ("libsndfile" ,libsndfile) |
| 471 | ("boost" ,boost) |
| 472 | ("opus" ,opus) |
| 473 | ("speex" ,speex) |
| 474 | ("speexdsp" ,speexdsp) |
| 475 | ("speech-dispatcher" ,speech-dispatcher) |
| 476 | ("libx11" ,libx11) |
| 477 | ("libxi" ,libxi) |
| 478 | ("qt-4" ,qt-4) |
| 479 | ("alsa-lib" ,alsa-lib) |
| 480 | ("pulseaudio" ,pulseaudio))) |
| 481 | (native-inputs |
| 482 | `(("pkg-config" ,pkg-config))) |
| 483 | (synopsis "Low-latency, high quality voice chat software") |
| 484 | (description |
| 485 | "Mumble is an low-latency, high quality voice chat |
| 486 | software primarily intended for use while gaming. |
| 487 | Mumble consists of two applications for separate usage: |
| 488 | @code{mumble} for the client, and @code{murmur} for the server.") |
| 489 | (home-page "https://wiki.mumble.info/wiki/Main_Page") |
| 490 | (license (list license:bsd-3 |
| 491 | ;; The bundled celt is bsd-2. Remove after 1.3.0. |
| 492 | license:bsd-2)))) |
| 493 | |
| 494 | (define-public twinkle |
| 495 | (let ((commit "02e1d1538af3337134bd7381dcd95f8d7775b30f") |
| 496 | (revision "1")) |
| 497 | (package |
| 498 | (name "twinkle") |
| 499 | (version (git-version "1.10.1" revision commit)) |
| 500 | (source (origin |
| 501 | (method git-fetch) |
| 502 | (uri (git-reference |
| 503 | (url "https://github.com/LubosD/twinkle") |
| 504 | (commit commit))) |
| 505 | (file-name (git-file-name name version)) |
| 506 | (sha256 |
| 507 | (base32 |
| 508 | "0ds4rp4vr1wagn4m4m7ldqbsx5vgmgbfcqqgyhn1wf6s1dm0020z")))) |
| 509 | (build-system cmake-build-system) |
| 510 | (arguments |
| 511 | `(#:tests? #f ; no test target |
| 512 | #:configure-flags '("-DWITH_SPEEX=On") |
| 513 | #:phases |
| 514 | (modify-phases %standard-phases |
| 515 | (add-after 'install 'wrap-executable |
| 516 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| 517 | (let ((out (assoc-ref outputs "out"))) |
| 518 | (wrap-program (string-append out "/bin/twinkle") |
| 519 | `("QT_PLUGIN_PATH" ":" prefix |
| 520 | ,(map (lambda (label) |
| 521 | (string-append (assoc-ref inputs label) |
| 522 | "/lib/qt5/plugins")) |
| 523 | '("qtbase" "qtdeclarative"))) |
| 524 | `("QML2_IMPORT_PATH" ":" prefix |
| 525 | ,(map (lambda (label) |
| 526 | (string-append (assoc-ref inputs label) |
| 527 | "/lib/qt5/qml")) |
| 528 | '("qtdeclarative" "qtquickcontrols")))) |
| 529 | #t)))))) |
| 530 | (native-inputs |
| 531 | `(("bison" ,bison) |
| 532 | ("flex" ,flex) |
| 533 | ("readline" ,readline) |
| 534 | ("file" ,file) |
| 535 | ("ucommon" ,ucommon) |
| 536 | ("ccrtp" ,ccrtp) |
| 537 | ("libxml2" ,libxml2) |
| 538 | ("speex" ,speex) |
| 539 | ("speexdsp" ,speexdsp) |
| 540 | ("libsndfile" ,libsndfile) |
| 541 | ("alsa-lib" ,alsa-lib) |
| 542 | ("qttools" ,qttools))) |
| 543 | (inputs |
| 544 | `(("qtbase" ,qtbase) |
| 545 | ("qtdeclarative" ,qtdeclarative) |
| 546 | ("qtquickcontrols" ,qtquickcontrols))) |
| 547 | (home-page "http://twinkle.dolezel.info/") |
| 548 | (synopsis "Softphone for voice over IP and instant messaging") |
| 549 | (description "Twinkle is a softphone for your voice over IP and instant |
| 550 | messaging communcations using the SIP protocol. You can use it for direct IP |
| 551 | phone to IP phone communication or in a network using a SIP proxy to route your |
| 552 | calls and messages") |
| 553 | (license license:gpl2+)))) |