1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
{ lib, stdenv, fetchurl, pkgconfig, libevent, libiconv, openssl, pcre, zlib
, odbcSupport ? true, unixODBC
, snmpSupport ? true, net-snmp
, sshSupport ? true, libssh2
, sqliteSupport ? false, sqlite
, mysqlSupport ? false, libmysqlclient
, postgresqlSupport ? false, postgresql
}:
# ensure exactly one database type is selected
assert mysqlSupport -> !postgresqlSupport && !sqliteSupport;
assert postgresqlSupport -> !mysqlSupport && !sqliteSupport;
assert sqliteSupport -> !mysqlSupport && !postgresqlSupport;
let
inherit (stdenv.lib) optional optionalString;
in
import ./versions.nix ({ version, sha256 }:
stdenv.mkDerivation {
pname = "zabbix-proxy";
inherit version;
src = fetchurl {
url = "https://cdn.zabbix.com/zabbix/sources/stable/${stdenv.lib.versions.majorMinor version}/zabbix-${version}.tar.gz";
inherit sha256;
};
nativeBuildInputs = [ pkgconfig ];
buildInputs = [
libevent
libiconv
openssl
pcre
zlib
]
++ optional odbcSupport unixODBC
++ optional snmpSupport net-snmp
++ optional sqliteSupport sqlite
++ optional sshSupport libssh2
++ optional mysqlSupport libmysqlclient
++ optional postgresqlSupport postgresql;
configureFlags = [
"--enable-proxy"
"--with-iconv"
"--with-libevent"
"--with-libpcre"
"--with-openssl=${openssl.dev}"
"--with-zlib=${zlib}"
]
++ optional odbcSupport "--with-unixodbc"
++ optional snmpSupport "--with-net-snmp"
++ optional sqliteSupport "--with-sqlite3=${sqlite.dev}"
++ optional sshSupport "--with-ssh2=${libssh2.dev}"
++ optional mysqlSupport "--with-mysql"
++ optional postgresqlSupport "--with-postgresql";
prePatch = ''
find database -name data.sql -exec sed -i 's|/usr/bin/||g' {} +
'';
postInstall = ''
mkdir -p $out/share/zabbix/database/
'' + optionalString sqliteSupport ''
mkdir -p $out/share/zabbix/database/sqlite3
cp -prvd database/sqlite3/schema.sql $out/share/zabbix/database/sqlite3/
'' + optionalString mysqlSupport ''
mkdir -p $out/share/zabbix/database/mysql
cp -prvd database/mysql/schema.sql $out/share/zabbix/database/mysql/
'' + optionalString postgresqlSupport ''
mkdir -p $out/share/zabbix/database/postgresql
cp -prvd database/postgresql/schema.sql $out/share/zabbix/database/postgresql/
'';
meta = with lib; {
description = "An enterprise-class open source distributed monitoring solution (client-server proxy)";
homepage = "https://www.zabbix.com/";
license = licenses.gpl2;
maintainers = [ maintainers.mmahut ];
platforms = platforms.linux;
};
})
|