nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/default.nix
2017-07-13 13:09:07 -04:00

150 lines
3.2 KiB
Nix

{ stdenv
, fetchgit
, which
, autoreconfHook
, pkgconfig
, automake
, libtool
, pjsip
, libyamlcpp
, alsaLib
, libpulseaudio
, libsamplerate
, libsndfile
, dbus
, dbus_cplusplus
, ffmpeg
, udev
, pcre
, gsm
, speex
, boost
, opendht
, libmsgpack
, gnutls
, zlib
, jsoncpp
, xlibs
, libargon2
, cryptopp
, openssl
, perl
, python3
, bash
, libupnp
, speexdsp
, fetchFromGitHub
, cmake
, asio
}:
let
myPython = python3.withPackages (ps: with ps; [
pygobject3
dbus-python
]);
src = fetchgit {
url = https://gitlab.savoirfairelinux.com/ring/ring-daemon.git;
rev = "006b8dc7be08fe9beb68709af71004e7bc1ceb5c";
sha256 = "0ih9g0rismrhx6nqcy3jqfbcs166grg0shnfmrnmykl9h0xy8z47";
};
patchdir = "${src}/contrib/src";
restbed = import ./restbed.nix {
inherit stdenv fetchFromGitHub cmake asio openssl;
patches = [
"${patchdir}/restbed/CMakeLists.patch"
"${patchdir}/restbed/strand.patch"
"${patchdir}/restbed/uri_cpp.patch"
"${patchdir}/restbed/dns-resolution-error.patch"
"${patchdir}/restbed/string.patch"
];
};
pjsip' = stdenv.lib.overrideDerivation pjsip (old: {
patches = [
"${patchdir}/pjproject/gnutls.patch"
./notestsapps.patch # this one had to be modified
"${patchdir}/pjproject/fix_base64.patch"
"${patchdir}/pjproject/ipv6.patch"
"${patchdir}/pjproject/ice_config.patch"
"${patchdir}/pjproject/multiple_listeners.patch"
"${patchdir}/pjproject/pj_ice_sess.patch"
"${patchdir}/pjproject/fix_turn_fallback.patch"
"${patchdir}/pjproject/fix_ioqueue_ipv6_sendto.patch"
"${patchdir}/pjproject/add_dtls_transport.patch"
];
CFLAGS = "-g -DPJ_ICE_MAX_CAND=256 -DPJ_ICE_MAX_CHECKS=150 -DPJ_ICE_COMP_BITS=2 -DPJ_ICE_MAX_STUN=3 -DPJSIP_MAX_PKT_LEN=8000";
});
in
stdenv.mkDerivation rec {
name = "ring-daemon-${version}";
version = "2017-07-11";
inherit src;
nativeBuildInputs = [
which
autoreconfHook
automake
libtool
pkgconfig
];
buildInputs = [
pjsip'
libyamlcpp
alsaLib
libpulseaudio
libsamplerate
libsndfile
dbus
dbus_cplusplus
ffmpeg
udev
pcre
gsm
speex
boost
opendht
libmsgpack
gnutls
zlib
jsoncpp
restbed
xlibs.libX11
libargon2
cryptopp
openssl
perl
libupnp
speexdsp
];
postInstall = ''
mkdir $out/bin
ln -s $out/lib/ring/dring $out/bin/dring
cp -R ./tools/dringctrl/ $out/
substitute ./tools/dringctrl/dringctrl.py $out/dringctrl/dringctrl.py \
--replace '#!/usr/bin/env python3' "#!${myPython}/bin/python3"
chmod +x $out/dringctrl/dringctrl.py
ln -s $out/dringctrl/dringctrl.py $out/bin/dringctrl.py
'';
meta = with stdenv.lib; {
description = "A Voice-over-IP software phone";
longDescription = ''
As the SIP/audio daemon and the user interface are separate processes, it
is easy to provide different user interfaces. GNU Ring comes with various
graphical user interfaces and even scripts to control the daemon from the
shell.
'';
homepage = https://ring.cx;
license = licenses.gpl3Plus;
maintainers = with maintainers; [ taeer olynch ];
platforms = platforms.linux;
};
}