150 lines
3.2 KiB
Nix
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;
|
|
};
|
|
}
|