Added Asterisk telephony server

Changed files
+125
pkgs
+61
pkgs/servers/asterisk/default.nix
···
···
+
{ stdenv, fetchurl, fetchgit, jansson, libxml2, libxslt, ncurses, openssl, sqlite, utillinux }:
+
+
stdenv.mkDerivation rec {
+
name = "asterisk-${version}";
+
version = "13.3.2";
+
+
src = fetchurl {
+
url = "http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-${version}.tar.gz";
+
sha256 = "19dafvy6ch4v8949bjim64fff456k78156m30dy2yvhm94m5k1zz";
+
};
+
+
# Note that these sounds are included with the release tarball. They are
+
# provided here verbatim for the convenience of anyone wanting to build
+
# Asterisk from other sources.
+
coreSounds = fetchurl {
+
url = http://downloads.asterisk.org/pub/telephony/sounds/releases/asterisk-core-sounds-en-gsm-1.4.26.tar.gz;
+
sha256 = "2300e3ed1d2ded6808a30a6ba71191e7784710613a5431afebbd0162eb4d5d73";
+
};
+
mohSounds = fetchurl {
+
url = http://downloads.asterisk.org/pub/telephony/sounds/releases/asterisk-moh-opsound-wav-2.03.tar.gz;
+
sha256 = "449fb810d16502c3052fedf02f7e77b36206ac5a145f3dacf4177843a2fcb538";
+
};
+
# TODO: Sounds for other languages could be added here
+
+
buildInputs = [ jansson libxml2 libxslt ncurses openssl sqlite utillinux ];
+
+
patches = [
+
# Disable downloading of sound files (we will fetch them
+
# ourselves if needed).
+
./disable-download.patch
+
+
# We want the Makefile to install the default /var skeleton
+
# under ${out}/var but we also want to use /var at runtime.
+
# This patch changes the runtime behavior to look for state
+
# directories in /var rather than ${out}/var.
+
./runtime-vardirs.patch
+
];
+
+
# Use the following preConfigure section when building Asterisk from sources
+
# other than the release tarball.
+
# preConfigure = ''
+
# ln -s ${coreSounds} sounds/asterisk-core-sounds-en-gsm-1.4.26.tar.gz
+
# ln -s ${mohSounds} sounds/asterisk-moh-opsound-wav-2.03.tar.gz
+
# '';
+
+
# The default libdir is $PREFIX/usr/lib, which causes problems when paths
+
# compiled into Asterisk expect ${out}/usr/lib rather than ${out}/lib.
+
configureFlags = "--libdir=\${out}/lib";
+
+
postInstall = ''
+
# Install sample configuration files for this version of Asterisk
+
make samples
+
'';
+
+
meta = with stdenv.lib; {
+
description = "Software implementation of a telephone private branch exchange (PBX)";
+
homepage = http://www.asterisk.org/;
+
license = licenses.gpl2;
+
maintainers = with maintainers; [ auntie ];
+
};
+
}
+12
pkgs/servers/asterisk/disable-download.patch
···
···
+
diff -ruN asterisk-13.2.0/sounds/Makefile asterisk-13.2.0-patched/sounds/Makefile
+
--- asterisk-13.2.0/sounds/Makefile 2014-09-09 14:01:11.000000000 -0600
+
+++ asterisk-13.2.0-patched/sounds/Makefile 2015-03-31 16:12:00.549133670 -0600
+
@@ -89,7 +89,7 @@
+
) && touch "$(1)$(if $(3),/$(3),)/$$@"; \
+
fi
+
+
-asterisk-$(2)$(if $(3),-$(3),)-%.tar.gz: have_download
+
+asterisk-$(2)$(if $(3),-$(3),)-%.tar.gz:
+
ifneq ($(SOUNDS_CACHE_DIR),)
+
$(CMD_PREFIX) \
+
if test ! -f "$(1)$(if $(3),/$(3),)/.$$(subst .tar.gz,,$$@)"; then \
+50
pkgs/servers/asterisk/runtime-vardirs.patch
···
···
+
diff -rupN asterisk-13.3.2/build_tools/make_defaults_h asterisk-13.3.2-patched/build_tools/make_defaults_h
+
--- asterisk-13.3.2/build_tools/make_defaults_h 2012-01-30 14:21:16.000000000 -0700
+
+++ asterisk-13.3.2-patched/build_tools/make_defaults_h 2015-04-15 19:07:46.760351155 -0600
+
@@ -1,4 +1,13 @@
+
#!/bin/sh
+
+
+
+ASTLOGDIR=/var/log/asterisk
+
+ASTVARRUNDIR=/var/run/asterisk
+
+ASTVARLIBDIR=/var/lib/asterisk
+
+ASTDBDIR=${ASTVARLIBDIR}
+
+ASTDATADIR=${ASTVARLIBDIR}
+
+AGI_DIR=${ASTDATADIR}/agi-bin
+
+ASTSPOOLDIR=/var/spool/asterisk
+
+
+
cat << END
+
/*
+
* defaults.h
+
@@ -9,21 +18,21 @@ cat << END
+
+
#define DEFAULT_CONFIG_DIR "${INSTALL_PATH}${ASTETCDIR}"
+
#define DEFAULT_MODULE_DIR "${INSTALL_PATH}${ASTMODDIR}"
+
-#define DEFAULT_AGI_DIR "${INSTALL_PATH}${AGI_DIR}"
+
-#define DEFAULT_LOG_DIR "${INSTALL_PATH}${ASTLOGDIR}"
+
+#define DEFAULT_AGI_DIR "${AGI_DIR}"
+
+#define DEFAULT_LOG_DIR "${ASTLOGDIR}"
+
+
-#define DEFAULT_RUN_DIR "${INSTALL_PATH}${ASTVARRUNDIR}"
+
-#define DEFAULT_SOCKET "${INSTALL_PATH}${ASTVARRUNDIR}/asterisk.ctl"
+
-#define DEFAULT_PID "${INSTALL_PATH}${ASTVARRUNDIR}/asterisk.pid"
+
+#define DEFAULT_RUN_DIR "${ASTVARRUNDIR}"
+
+#define DEFAULT_SOCKET "${ASTVARRUNDIR}/asterisk.ctl"
+
+#define DEFAULT_PID "${ASTVARRUNDIR}/asterisk.pid"
+
+
-#define DEFAULT_VAR_DIR "${INSTALL_PATH}${ASTVARLIBDIR}"
+
-#define DEFAULT_DB "${INSTALL_PATH}${ASTDBDIR}/astdb"
+
+#define DEFAULT_VAR_DIR "${ASTVARLIBDIR}"
+
+#define DEFAULT_DB "${ASTDBDIR}/astdb"
+
+
-#define DEFAULT_DATA_DIR "${INSTALL_PATH}${ASTDATADIR}"
+
-#define DEFAULT_KEY_DIR "${INSTALL_PATH}${ASTDATADIR}/keys"
+
+#define DEFAULT_DATA_DIR "${ASTDATADIR}"
+
+#define DEFAULT_KEY_DIR "${ASTDATADIR}/keys"
+
+
-#define DEFAULT_SPOOL_DIR "${INSTALL_PATH}${ASTSPOOLDIR}"
+
-#define DEFAULT_TMP_DIR "${INSTALL_PATH}${ASTSPOOLDIR}/tmp"
+
+#define DEFAULT_SPOOL_DIR "${ASTSPOOLDIR}"
+
+#define DEFAULT_TMP_DIR "${ASTSPOOLDIR}/tmp"
+
+
#define DEFAULT_SBIN_DIR "${INSTALL_PATH}${ASTSBINDIR}"
+
END
+2
pkgs/top-level/all-packages.nix
···
apcupsd = callPackage ../servers/apcupsd { };
sabnzbd = callPackage ../servers/sabnzbd { };
bind = callPackage ../servers/dns/bind { };
···
apcupsd = callPackage ../servers/apcupsd { };
+
asterisk = callPackage ../servers/asterisk { };
+
sabnzbd = callPackage ../servers/sabnzbd { };
bind = callPackage ../servers/dns/bind { };