Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ lib, stdenv 2, curl 3, darwin 4, hiredis 5, iptables 6, jdk 7, libatasmart 8, libdbi 9, libesmtp 10, libgcrypt 11, libmemcached, cyrus_sasl 12, libmodbus 13, libmicrohttpd 14, libmnl 15, libmysqlclient 16, libnotify, gdk-pixbuf 17, liboping 18, libpcap 19, libsigrok 20, libvirt 21, libxml2 22, libapparmor, libcap_ng, numactl 23, lua 24, lvm2 25, lm_sensors 26, mongoc 27, mosquitto 28, net-snmp 29, openldap 30, openipmi 31, perl 32, postgresql 33, protobufc 34, python3 35, rabbitmq-c 36, rdkafka 37, riemann_c_client 38, rrdtool 39, udev 40, varnish 41, xen 42, yajl 43, IOKit 44# Defaults to `null` for all supported plugins (except xen, which is marked as 45# insecure), otherwise a list of plugin names for a custom build 46, enabledPlugins ? null 47, ... 48}: 49 50let 51 # Plugins that have dependencies. 52 # Please help to extend these! 53 plugins = { 54 amqp.buildInputs = [ 55 yajl 56 ] ++ lib.optionals stdenv.isLinux [ rabbitmq-c ]; 57 apache.buildInputs = [ curl ]; 58 ascent.buildInputs = [ curl libxml2 ]; 59 battery.buildInputs = lib.optionals stdenv.isDarwin [ 60 IOKit 61 ]; 62 bind.buildInputs = [ curl libxml2 ]; 63 ceph.buildInputs = [ yajl ]; 64 curl.buildInputs = [ curl ]; 65 curl_json.buildInputs = [ curl yajl ]; 66 curl_xml.buildInputs = [ curl libxml2 ]; 67 dbi.buildInputs = [ libdbi ]; 68 disk.buildInputs = lib.optionals stdenv.isLinux [ 69 udev 70 ] ++ lib.optionals stdenv.isDarwin [ 71 IOKit 72 ]; 73 dns.buildInputs = [ libpcap ]; 74 ipmi.buildInputs = [ openipmi ]; 75 iptables.buildInputs = [ 76 libpcap 77 ] ++ lib.optionals stdenv.isLinux [ 78 iptables libmnl 79 ]; 80 java.buildInputs = [ jdk libgcrypt libxml2 ]; 81 log_logstash.buildInputs = [ yajl ]; 82 lua.buildInputs = [ lua ]; 83 memcachec.buildInputs = [ libmemcached cyrus_sasl ]; 84 modbus.buildInputs = lib.optionals stdenv.isLinux [ libmodbus ]; 85 mqtt.buildInputs = [ mosquitto ]; 86 mysql.buildInputs = lib.optionals (libmysqlclient != null) [ 87 libmysqlclient 88 ]; 89 netlink.buildInputs = [ 90 libpcap 91 ] ++ lib.optionals stdenv.isLinux [ 92 libmnl 93 ]; 94 network.buildInputs = [ libgcrypt ]; 95 nginx.buildInputs = [ curl ]; 96 notify_desktop.buildInputs = [ libnotify gdk-pixbuf ]; 97 notify_email.buildInputs = [ libesmtp ]; 98 openldap.buildInputs = [ openldap ]; 99 ovs_events.buildInputs = [ yajl ]; 100 ovs_stats.buildInputs = [ yajl ]; 101 perl.buildInputs = [ perl ]; 102 pinba.buildInputs = [ protobufc ]; 103 ping.buildInputs = [ liboping ]; 104 postgresql.buildInputs = [ postgresql ]; 105 python.buildInputs = [ python3 ]; 106 redis.buildInputs = [ hiredis ]; 107 rrdcached.buildInputs = [ rrdtool libxml2 ]; 108 rrdtool.buildInputs = [ rrdtool libxml2 ]; 109 sensors.buildInputs = lib.optionals stdenv.isLinux [ lm_sensors ]; 110 sigrok.buildInputs = lib.optionals stdenv.isLinux [ libsigrok udev ]; 111 smart.buildInputs = lib.optionals stdenv.isLinux [ libatasmart udev ]; 112 snmp.buildInputs = lib.optionals stdenv.isLinux [ net-snmp ]; 113 snmp_agent.buildInputs = lib.optionals stdenv.isLinux [ net-snmp ]; 114 varnish.buildInputs = [ curl varnish ]; 115 virt.buildInputs = [ 116 libvirt libxml2 yajl 117 ] ++ lib.optionals stdenv.isLinux [ lvm2 udev ]; 118 write_http.buildInputs = [ curl yajl ]; 119 write_kafka.buildInputs = [ yajl rdkafka ]; 120 write_log.buildInputs = [ yajl ]; 121 write_mongodb.buildInputs = [ mongoc ]; 122 write_prometheus.buildInputs = [ protobufc libmicrohttpd ]; 123 write_redis.buildInputs = [ hiredis ]; 124 write_riemann.buildInputs = [ protobufc riemann_c_client ]; 125 xencpu.buildInputs = [ xen ]; 126 }; 127 128 configureFlags = lib.optionals (enabledPlugins != null) ( 129 [ "--disable-all-plugins" ] 130 ++ (map (plugin: "--enable-${plugin}") enabledPlugins)); 131 132 pluginBuildInputs = plugin: 133 lib.optionals (plugins ? ${plugin} && plugins.${plugin} ? buildInputs) 134 plugins.${plugin}.buildInputs; 135 136 buildInputs = 137 if enabledPlugins == null 138 then builtins.concatMap pluginBuildInputs 139 (builtins.attrNames (builtins.removeAttrs plugins ["xencpu"])) 140 else builtins.concatMap pluginBuildInputs enabledPlugins; 141in { 142 inherit configureFlags buildInputs; 143}