nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/default.nix
2021-01-16 23:49:59 -08:00

151 lines
3.3 KiB
Nix

{ lib, stdenv
, fetchgit
, which
, autoreconfHook
, pkg-config
, automake
, libtool
, pjsip
, libyamlcpp
, alsaLib
, libpulseaudio
, libsamplerate
, libsndfile
, dbus
, dbus_cplusplus
, ffmpeg_3
, udev
, pcre
, gsm
, speex
, boost
, opendht
, msgpack
, gnutls
, zlib
, jsoncpp
, xorg
, libargon2
, cryptopp
, openssl
, perl
, python3
, 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 lib 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' = 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 {
pname = "ring-daemon";
version = "2017-07-11";
inherit src;
nativeBuildInputs = [
which
autoreconfHook
automake
libtool
pkg-config
];
buildInputs = [
pjsip'
libyamlcpp
alsaLib
libpulseaudio
libsamplerate
libsndfile
dbus
dbus_cplusplus
ffmpeg_3
udev
pcre
gsm
speex
boost
opendht
msgpack
gnutls
zlib
jsoncpp
restbed
xorg.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 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;
# pjsip' fails to compile with the supplied patch set, see: https://hydra.nixos.org/build/68667921/nixlog/4
broken = true;
};
}