144 lines
4 KiB
Nix
144 lines
4 KiB
Nix
{ lib, stdenv
|
|
, curl
|
|
, darwin
|
|
, hiredis
|
|
, iptables
|
|
, jdk
|
|
, libatasmart
|
|
, libdbi
|
|
, libesmtp
|
|
, libgcrypt
|
|
, libmemcached, cyrus_sasl
|
|
, libmodbus
|
|
, libmicrohttpd
|
|
, libmnl
|
|
, libmysqlclient
|
|
, libnotify, gdk-pixbuf
|
|
, liboping
|
|
, libpcap
|
|
, libsigrok
|
|
, libvirt
|
|
, libxml2
|
|
, libapparmor, libcap_ng, numactl
|
|
, lua
|
|
, lvm2
|
|
, lm_sensors
|
|
, mongoc
|
|
, mosquitto
|
|
, net-snmp
|
|
, openldap
|
|
, openipmi
|
|
, perl
|
|
, postgresql
|
|
, protobufc
|
|
, python2
|
|
, rabbitmq-c
|
|
, rdkafka
|
|
, riemann_c_client
|
|
, rrdtool
|
|
, udev
|
|
, varnish
|
|
, xen
|
|
, yajl
|
|
, IOKit
|
|
# Defaults to `null` for all supported plugins (except xen, which is marked as
|
|
# insecure), otherwise a list of plugin names for a custom build
|
|
, enabledPlugins ? null
|
|
, ...
|
|
}:
|
|
|
|
let
|
|
# Plugins that have dependencies.
|
|
# Please help to extend these!
|
|
plugins = {
|
|
amqp.buildInputs = [
|
|
yajl
|
|
] ++ lib.optionals stdenv.isLinux [ rabbitmq-c ];
|
|
apache.buildInputs = [ curl ];
|
|
ascent.buildInputs = [ curl libxml2 ];
|
|
battery.buildInputs = lib.optionals stdenv.isDarwin [
|
|
IOKit
|
|
];
|
|
bind.buildInputs = [ curl libxml2 ];
|
|
ceph.buildInputs = [ yajl ];
|
|
curl.buildInputs = [ curl ];
|
|
curl_json.buildInputs = [ curl yajl ];
|
|
curl_xml.buildInputs = [ curl libxml2 ];
|
|
dbi.buildInputs = [ libdbi ];
|
|
disk.buildInputs = lib.optionals stdenv.isLinux [
|
|
udev
|
|
] ++ lib.optionals stdenv.isDarwin [
|
|
IOKit
|
|
];
|
|
dns.buildInputs = [ libpcap ];
|
|
ipmi.buildInputs = [ openipmi ];
|
|
iptables.buildInputs = [
|
|
libpcap
|
|
] ++ lib.optionals stdenv.isLinux [
|
|
iptables libmnl
|
|
];
|
|
java.buildInputs = [ jdk libgcrypt libxml2 ];
|
|
log_logstash.buildInputs = [ yajl ];
|
|
lua.buildInputs = [ lua ];
|
|
memcachec.buildInputs = [ libmemcached cyrus_sasl ];
|
|
modbus.buildInputs = lib.optionals stdenv.isLinux [ libmodbus ];
|
|
mqtt.buildInputs = [ mosquitto ];
|
|
mysql.buildInputs = lib.optionals (libmysqlclient != null) [
|
|
libmysqlclient
|
|
];
|
|
netlink.buildInputs = [
|
|
libpcap
|
|
] ++ lib.optionals stdenv.isLinux [
|
|
libmnl
|
|
];
|
|
network.buildInputs = [ libgcrypt ];
|
|
nginx.buildInputs = [ curl ];
|
|
notify_desktop.buildInputs = [ libnotify gdk-pixbuf ];
|
|
notify_email.buildInputs = [ libesmtp ];
|
|
openldap.buildInputs = [ openldap ];
|
|
ovs_events.buildInputs = [ yajl ];
|
|
ovs_stats.buildInputs = [ yajl ];
|
|
perl.buildInputs = [ perl ];
|
|
pinba.buildInputs = [ protobufc ];
|
|
ping.buildInputs = [ liboping ];
|
|
postgresql.buildInputs = [ postgresql ];
|
|
python.buildInputs = [ python2 ];
|
|
redis.buildInputs = [ hiredis ];
|
|
rrdcached.buildInputs = [ rrdtool libxml2 ];
|
|
rrdtool.buildInputs = [ rrdtool libxml2 ];
|
|
sensors.buildInputs = lib.optionals stdenv.isLinux [ lm_sensors ];
|
|
sigrok.buildInputs = lib.optionals stdenv.isLinux [ libsigrok udev ];
|
|
smart.buildInputs = lib.optionals stdenv.isLinux [ libatasmart udev ];
|
|
snmp.buildInputs = lib.optionals stdenv.isLinux [ net-snmp ];
|
|
snmp_agent.buildInputs = lib.optionals stdenv.isLinux [ net-snmp ];
|
|
varnish.buildInputs = [ curl varnish ];
|
|
virt.buildInputs = [
|
|
libvirt libxml2 yajl
|
|
] ++ lib.optionals stdenv.isLinux [ lvm2 udev ];
|
|
write_http.buildInputs = [ curl yajl ];
|
|
write_kafka.buildInputs = [ yajl rdkafka ];
|
|
write_log.buildInputs = [ yajl ];
|
|
write_mongodb.buildInputs = [ mongoc ];
|
|
write_prometheus.buildInputs = [ protobufc libmicrohttpd ];
|
|
write_redis.buildInputs = [ hiredis ];
|
|
write_riemann.buildInputs = [ protobufc riemann_c_client ];
|
|
xencpu.buildInputs = [ xen ];
|
|
};
|
|
|
|
configureFlags = lib.optionals (enabledPlugins != null) (
|
|
[ "--disable-all-plugins" ]
|
|
++ (map (plugin: "--enable-${plugin}") enabledPlugins));
|
|
|
|
pluginBuildInputs = plugin:
|
|
lib.optionals (plugins ? ${plugin} && plugins.${plugin} ? buildInputs)
|
|
plugins.${plugin}.buildInputs;
|
|
|
|
buildInputs =
|
|
if enabledPlugins == null
|
|
then builtins.concatMap pluginBuildInputs
|
|
(builtins.attrNames (builtins.removeAttrs plugins ["xencpu"]))
|
|
else builtins.concatMap pluginBuildInputs enabledPlugins;
|
|
in {
|
|
inherit configureFlags buildInputs;
|
|
}
|