at master 4.5 kB view raw
1{ 2 lib, 3 stdenv, 4 curl, 5 hiredis, 6 iptables, 7 jdk, 8 libatasmart, 9 libdbi, 10 libesmtp, 11 libgcrypt, 12 libmemcached, 13 cyrus_sasl, 14 libmodbus, 15 libmicrohttpd, 16 libmnl, 17 libmysqlclient, 18 libnotify, 19 gdk-pixbuf, 20 liboping, 21 libpcap, 22 libpq, 23 libsigrok, 24 libvirt, 25 libxml2, 26 lua, 27 lvm2, 28 lm_sensors, 29 mongoc, 30 mosquitto, 31 net-snmp, 32 openldap, 33 openipmi, 34 perl, 35 protobufc, 36 python3, 37 rabbitmq-c, 38 rdkafka, 39 riemann_c_client, 40 rrdtool, 41 udev, 42 varnish, 43 xen, 44 yajl, 45 # Defaults to `null` for all supported plugins (except xen, which is marked as 46 # insecure), otherwise a list of plugin names for a custom build 47 enabledPlugins ? null, 48 ... 49}: 50 51let 52 # Plugins that have dependencies. 53 # Please help to extend these! 54 plugins = { 55 amqp.buildInputs = [ 56 yajl 57 ] 58 ++ lib.optionals stdenv.hostPlatform.isLinux [ rabbitmq-c ]; 59 apache.buildInputs = [ curl ]; 60 ascent.buildInputs = [ 61 curl 62 libxml2 63 ]; 64 bind.buildInputs = [ 65 curl 66 libxml2 67 ]; 68 ceph.buildInputs = [ yajl ]; 69 curl.buildInputs = [ curl ]; 70 curl_json.buildInputs = [ 71 curl 72 yajl 73 ]; 74 curl_xml.buildInputs = [ 75 curl 76 libxml2 77 ]; 78 dbi.buildInputs = [ libdbi ]; 79 disk.buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ 80 udev 81 ]; 82 dns.buildInputs = [ libpcap ]; 83 ipmi.buildInputs = [ openipmi ]; 84 iptables.buildInputs = [ 85 libpcap 86 ] 87 ++ lib.optionals stdenv.hostPlatform.isLinux [ 88 iptables 89 libmnl 90 ]; 91 java.buildInputs = [ 92 jdk 93 libgcrypt 94 libxml2 95 ]; 96 log_logstash.buildInputs = [ yajl ]; 97 lua.buildInputs = [ lua ]; 98 memcachec.buildInputs = [ 99 libmemcached 100 cyrus_sasl 101 ]; 102 modbus.buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ libmodbus ]; 103 mqtt.buildInputs = [ mosquitto ]; 104 mysql.buildInputs = lib.optionals (libmysqlclient != null) [ 105 libmysqlclient 106 ]; 107 netlink.buildInputs = [ 108 libpcap 109 ] 110 ++ lib.optionals stdenv.hostPlatform.isLinux [ 111 libmnl 112 ]; 113 network.buildInputs = [ libgcrypt ]; 114 nginx.buildInputs = [ curl ]; 115 notify_desktop.buildInputs = [ 116 libnotify 117 gdk-pixbuf 118 ]; 119 notify_email.buildInputs = [ libesmtp ]; 120 openldap.buildInputs = [ openldap ]; 121 ovs_events.buildInputs = [ yajl ]; 122 ovs_stats.buildInputs = [ yajl ]; 123 perl.buildInputs = [ perl ]; 124 pinba.buildInputs = [ protobufc ]; 125 ping.buildInputs = [ liboping ]; 126 postgresql.buildInputs = [ libpq ]; 127 python.buildInputs = [ python3 ]; 128 redis.buildInputs = [ hiredis ]; 129 rrdcached.buildInputs = [ 130 rrdtool 131 libxml2 132 ]; 133 rrdtool.buildInputs = [ 134 rrdtool 135 libxml2 136 ]; 137 sensors.buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ lm_sensors ]; 138 sigrok.buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ 139 libsigrok 140 udev 141 ]; 142 smart.buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ 143 libatasmart 144 udev 145 ]; 146 snmp.buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ net-snmp ]; 147 snmp_agent.buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ net-snmp ]; 148 varnish.buildInputs = [ 149 curl 150 varnish 151 ]; 152 virt.buildInputs = [ 153 libvirt 154 libxml2 155 yajl 156 ] 157 ++ lib.optionals stdenv.hostPlatform.isLinux [ 158 lvm2 159 udev 160 ]; 161 write_http.buildInputs = [ 162 curl 163 yajl 164 ]; 165 write_kafka.buildInputs = [ 166 yajl 167 rdkafka 168 ]; 169 write_log.buildInputs = [ yajl ]; 170 write_mongodb.buildInputs = [ mongoc ]; 171 write_prometheus.buildInputs = [ 172 protobufc 173 libmicrohttpd 174 ]; 175 write_redis.buildInputs = [ hiredis ]; 176 write_riemann.buildInputs = [ 177 protobufc 178 riemann_c_client 179 ]; 180 xencpu.buildInputs = [ xen ]; 181 }; 182 183 configureFlags = lib.optionals (enabledPlugins != null) ( 184 [ "--disable-all-plugins" ] ++ (map (plugin: "--enable-${plugin}") enabledPlugins) 185 ); 186 187 pluginBuildInputs = 188 plugin: 189 lib.optionals ( 190 plugins ? ${plugin} && plugins.${plugin} ? buildInputs 191 ) plugins.${plugin}.buildInputs; 192 193 buildInputs = 194 if enabledPlugins == null then 195 builtins.concatMap pluginBuildInputs ( 196 builtins.attrNames (builtins.removeAttrs plugins [ "xencpu" ]) 197 ) 198 else 199 builtins.concatMap pluginBuildInputs enabledPlugins; 200in 201{ 202 inherit configureFlags buildInputs; 203}