about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/system/collectd/plugins.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/system/collectd/plugins.nix')
-rw-r--r--nixpkgs/pkgs/tools/system/collectd/plugins.nix377
1 files changed, 85 insertions, 292 deletions
diff --git a/nixpkgs/pkgs/tools/system/collectd/plugins.nix b/nixpkgs/pkgs/tools/system/collectd/plugins.nix
index dd578cd6393b..6438a545a485 100644
--- a/nixpkgs/pkgs/tools/system/collectd/plugins.nix
+++ b/nixpkgs/pkgs/tools/system/collectd/plugins.nix
@@ -6,6 +6,7 @@
 , jdk
 , libatasmart
 , libdbi
+, libesmtp
 , libgcrypt
 , libmemcached, cyrus_sasl
 , libmodbus
@@ -19,12 +20,14 @@
 , libvirt
 , libxml2
 , libapparmor, libcap_ng, numactl
-, lvm2
 , lua
+, lvm2
 , lm_sensors
 , mongoc
 , mosquitto
 , net-snmp
+, openldap
+, openipmi
 , perl
 , postgresql
 , protobufc
@@ -35,7 +38,9 @@
 , rrdtool
 , udev
 , varnish
+, xen
 , yajl
+, IOKit
 # Defaults to `null` for all supported plugins,
 # list of plugin names for a custom build
 , enabledPlugins ? null
@@ -43,302 +48,90 @@
 }:
 
 let
-  # All plugins and their dependencies.
-  # Please help complete this!
+  # Plugins that have dependencies.
+  # Please help to extend these!
   plugins = {
-    aggregation = {};
-    amqp = {
-      buildInputs = [ yajl ] ++
-        lib.optionals stdenv.isLinux [ rabbitmq-c ];
-    };
-    apache = {
-      buildInputs = [ curl ];
-    };
-    apcups = {};
-    apple_sensors = {};
-    aquaero = {};
-    ascent = {
-      buildInputs = [ curl libxml2 ];
-    };
-    barometer = {};
-    battery = {
-      buildInputs = lib.optionals stdenv.isDarwin [
-        darwin.apple_sdk.frameworks.IOKit
-      ];
-    };
-    bind = {
-      buildInputs = [ curl libxml2 ];
-    };
-    ceph = {
-      buildInputs = [ yajl ];
-    };
-    cgroups = {};
-    chrony = {};
-    conntrack = {};
-    contextswitch = {};
-    cpu = {};
-    cpufreq = {};
-    cpusleep = {};
-    csv = {};
-    curl = {
-      buildInputs = [ curl ];
-    };
-    curl_json = {
-      buildInputs = [ curl yajl ];
-    };
-    curl_xml = {
-      buildInputs = [ curl libxml2 ];
-    };
-    dbi = {
-      buildInputs = [ libdbi ];
-    };
-    df = {};
-    disk = {
-      buildInputs = lib.optionals stdenv.isLinux [
-        udev
-      ] ++ lib.optionals stdenv.isDarwin [
-        darwin.apple_sdk.frameworks.IOKit
-      ];
-    };
-    dns = {
-      buildInputs = [ libpcap ];
-    };
-    dpdkevents = {};
-    dpdkstat = {};
-    drbd = {};
-    email = {};
-    entropy = {};
-    ethstat = {};
-    exec = {};
-    fhcount = {};
-    filecount = {};
-    fscache = {};
-    gmond = {};
-    gps = {};
-    grpc = {};
-    hddtemp = {};
-    hugepages = {};
-    intel_pmu = {};
-    intel_rdt = {};
-    interface = {};
-    ipc = {};
-    ipmi = {};
-    iptables = {
-      buildInputs = [
-        libpcap
-      ] ++ lib.optionals stdenv.isLinux [
-        iptables libmnl
-      ];
-    };
-    ipvs = {};
-    irq = {};
-    java = {
-      buildInputs = [ jdk libgcrypt libxml2 ];
-    };
-    load = {};
-    logfile = {};
-    log_logstash = {
-      buildInputs = [ yajl ];
-    };
-    lpar = {};
-    lua = {
-      buildInputs = [ lua ];
-    };
-    lvm = {};
-    madwifi = {};
-    match_empty_counter = {};
-    match_hashed = {};
-    match_regex = {};
-    match_timediff = {};
-    match_value = {};
-    mbmon = {};
-    mcelog = {};
-    md = {};
-    memcachec = {
-      buildInputs = [ libmemcached cyrus_sasl ];
-    };
-    memcached = {};
-    memory = {};
-    mic = {};
-    modbus = {
-      buildInputs = lib.optionals stdenv.isLinux [ libmodbus ];
-    };
-    mqtt = {
-      buildInputs = [ mosquitto ];
-    };
-    multimeter = {};
-    mysql = {
-      buildInputs = lib.optionals (libmysqlclient != null) [
-        libmysqlclient
-      ];
-    };
-    netapp = {};
-    netlink = {
-      buildInputs = [
-        libpcap
-      ] ++ lib.optionals stdenv.isLinux [
-        libmnl
-      ];
-    };
-    network = {
-      buildInputs = [ libgcrypt ];
-    };
-    nfs = {};
-    nginx = {
-      buildInputs = [ curl ];
-    };
-    notify_desktop = {
-      buildInputs = [ libnotify gdk-pixbuf ];
-    };
-    notify_email = {};
-    notify_nagios = {};
-    ntpd = {};
-    numa = {};
-    nut = {};
-    olsrd = {};
-    onewire = {};
-    openldap = {};
-    openvpn = {};
-    oracle = {};
-    ovs_events = {
-      buildInputs = [ yajl ];
-    };
-    ovs_stats = {
-      buildInputs = [ yajl ];
-    };
-    perl = {
-      buildInputs = [ perl ];
-    };
-    pf = {};
-    pinba = {
-      buildInputs = [ protobufc ];
-    };
-    ping = {
-      buildInputs = [ liboping ];
-    };
-    postgresql = {
-      buildInputs = [ postgresql ];
-    };
-    powerdns = {};
-    processes = {};
-    protocols = {};
-    python = {
-      buildInputs = [ python ];
-    };
-    redis = {
-      buildInputs = [ hiredis ];
-    };
-    routeros = {};
-    rrdcached = {
-      buildInputs = [ rrdtool libxml2 ];
-    };
-    rrdtool = {
-      buildInputs = [ rrdtool libxml2 ];
-    };
-    sensors = {
-      buildInputs = lib.optionals stdenv.isLinux [ lm_sensors ];
-    };
-    serial = {};
-    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 ];
-    };
-    statsd = {};
-    swap = {};
-    synproxy = {};
-    syslog = {};
-    table = {};
-    tail_csv = {};
-    tail = {};
-    tape = {};
-    target_notification = {};
-    target_replace = {};
-    target_scale = {};
-    target_set = {};
-    target_v5upgrade = {};
-    tcpconns = {};
-    teamspeak2 = {};
-    ted = {};
-    thermal = {};
-    threshold = {};
-    tokyotyrant = {};
-    turbostat = {};
-    unixsock = {};
-    uptime = {};
-    users = {};
-    uuid = {};
-    varnish = {
-      buildInputs = [ curl varnish ];
-    };
-    virt = {
-      buildInputs = [ libvirt libxml2 yajl ] ++
-        lib.optionals stdenv.isLinux [ lvm2 udev
-          # those might be no longer required when https://github.com/NixOS/nixpkgs/pull/51767
-          # is merged
-          libapparmor numactl libcap_ng
-        ];
-    };
-    vmem = {};
-    vserver = {};
-    wireless = {};
-    write_graphite = {};
-    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 ];
-    };
-    write_sensu = {};
-    write_tsdb = {};
-    xencpu = {};
-    xmms = {};
-    zfs_arc = {};
-    zone = {};
-    zookeeper = {};
+    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 = [ python ];
+    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 =
-    if enabledPlugins == null
-    then []
-    else (map (plugin: "--enable-${plugin}") enabledPlugins) ++
-    (map (plugin: "--disable-${plugin}")
-      (builtins.filter (plugin: ! builtins.elem plugin enabledPlugins)
-        (builtins.attrNames plugins))
-    );
+  configureFlags = lib.optionals (enabledPlugins != null) (
+    [ "--disable-all-plugins" ]
+    ++ (map (plugin: "--enable-${plugin}") enabledPlugins));
 
   pluginBuildInputs = plugin:
-        if ! builtins.hasAttr plugin plugins
-        then throw "Unknown collectd plugin: ${plugin}"
-        else
-          let
-            pluginAttrs = builtins.getAttr plugin plugins;
-          in
-          if pluginAttrs ? "buildInputs"
-          then pluginAttrs.buildInputs
-          else [];
+    lib.optionals (plugins ? ${plugin} && plugins.${plugin} ? buildInputs)
+    plugins.${plugin}.buildInputs;
 
   buildInputs =
     if enabledPlugins == null