depot/third_party/nixpkgs/pkgs/tools/system/collectd/plugins.nix

213 lines
4.6 KiB
Nix

{
lib,
stdenv,
curl,
hiredis,
iptables,
jdk,
libatasmart,
libdbi,
libesmtp,
libgcrypt,
libmemcached,
cyrus_sasl,
libmodbus,
libmicrohttpd,
libmnl,
libmysqlclient,
libnotify,
gdk-pixbuf,
liboping,
libpcap,
libsigrok,
libvirt,
libxml2,
lua,
lvm2,
lm_sensors,
mongoc,
mosquitto,
net-snmp,
openldap,
openipmi,
perl,
postgresql,
protobufc,
python3,
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.hostPlatform.isLinux [ rabbitmq-c ];
apache.buildInputs = [ curl ];
ascent.buildInputs = [
curl
libxml2
];
battery.buildInputs = lib.optionals stdenv.hostPlatform.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.hostPlatform.isLinux [
udev
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
IOKit
];
dns.buildInputs = [ libpcap ];
ipmi.buildInputs = [ openipmi ];
iptables.buildInputs =
[
libpcap
]
++ lib.optionals stdenv.hostPlatform.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.hostPlatform.isLinux [ libmodbus ];
mqtt.buildInputs = [ mosquitto ];
mysql.buildInputs = lib.optionals (libmysqlclient != null) [
libmysqlclient
];
netlink.buildInputs =
[
libpcap
]
++ lib.optionals stdenv.hostPlatform.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 = [ python3 ];
redis.buildInputs = [ hiredis ];
rrdcached.buildInputs = [
rrdtool
libxml2
];
rrdtool.buildInputs = [
rrdtool
libxml2
];
sensors.buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ lm_sensors ];
sigrok.buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
libsigrok
udev
];
smart.buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
libatasmart
udev
];
snmp.buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ net-snmp ];
snmp_agent.buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ net-snmp ];
varnish.buildInputs = [
curl
varnish
];
virt.buildInputs =
[
libvirt
libxml2
yajl
]
++ lib.optionals stdenv.hostPlatform.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;
}