nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 210 lines 6.2 kB view raw
1{ 2 coreutils, 3 db, 4 fetchurl, 5 openssl, 6 pcre2, 7 perl, 8 pkg-config, 9 lib, 10 stdenv, 11 libxcrypt, 12 procps, 13 killall, 14 enableLDAP ? false, 15 openldap, 16 enableMySQL ? false, 17 libmysqlclient, 18 zlib, 19 enablePgSQL ? false, 20 libpq, 21 enableSqlite ? false, 22 sqlite, 23 enableAuthDovecot ? false, 24 dovecot, 25 enablePAM ? false, 26 pam, 27 enableSPF ? true, 28 libspf2, 29 enableDMARC ? true, 30 opendmarc, 31 enableRedis ? false, 32 hiredis, 33 enableJSON ? false, 34 jansson, 35 enableSRS ? false, 36}: 37let 38 perl' = perl.withPackages (p: with p; [ FileFcntlLock ]); 39in 40stdenv.mkDerivation rec { 41 pname = "exim"; 42 version = "4.99.1"; 43 44 src = fetchurl { 45 url = "https://ftp.exim.org/pub/exim/exim4/${pname}-${version}.tar.xz"; 46 hash = "sha256-6ulnvUml+HmTO4xuyIwwR1ocZkYjITXzfwW1XbxONEc="; 47 }; 48 49 enableParallelBuilding = true; 50 51 nativeBuildInputs = [ pkg-config ]; 52 buildInputs = [ 53 coreutils 54 db 55 openssl 56 perl' 57 pcre2 58 libxcrypt 59 ] 60 ++ lib.optional enableLDAP openldap 61 ++ lib.optionals enableMySQL [ 62 libmysqlclient 63 zlib 64 ] 65 ++ lib.optional enablePgSQL libpq 66 ++ lib.optionals enableSqlite [ 67 sqlite 68 sqlite.dev 69 zlib 70 ] 71 ++ lib.optional enableAuthDovecot dovecot 72 ++ lib.optional enablePAM pam 73 ++ lib.optional enableSPF libspf2 74 ++ lib.optional enableDMARC opendmarc 75 ++ lib.optional enableRedis hiredis 76 ++ lib.optional enableJSON jansson; 77 78 configurePhase = '' 79 runHook preConfigure 80 81 sed ' 82 s:^\(BIN_DIRECTORY\)=.*:\1='"$out"'/bin: 83 s:^\(CONFIGURE_FILE\)=.*:\1=/etc/exim.conf: 84 s:^\(EXIM_USER\)=.*:\1=ref\:nobody: 85 s:^\(SPOOL_DIRECTORY\)=.*:\1=/exim-homeless-shelter: 86 s:^# \(TRANSPORT_LMTP\)=.*:\1=yes: 87 s:^# \(SUPPORT_MAILDIR\)=.*:\1=yes: 88 s:^EXIM_MONITOR=.*$:# &: 89 s:^\(FIXED_NEVER_USERS\)=root$:\1=0: 90 s:^# \(WITH_CONTENT_SCAN\)=.*:\1=yes: 91 s:^# \(AUTH_PLAINTEXT\)=.*:\1=yes: 92 s:^# \(USE_OPENSSL\)=.*:\1=yes: 93 s:^# \(USE_OPENSSL_PC=openssl\)$:\1: 94 s:^# \(LOG_FILE_PATH=syslog\)$:\1: 95 s:^# \(HAVE_IPV6=yes\)$:\1: 96 s:^# \(CHOWN_COMMAND\)=.*:\1=${coreutils}/bin/chown: 97 s:^# \(CHGRP_COMMAND\)=.*:\1=${coreutils}/bin/chgrp: 98 s:^# \(CHMOD_COMMAND\)=.*:\1=${coreutils}/bin/chmod: 99 s:^# \(MV_COMMAND\)=.*:\1=${coreutils}/bin/mv: 100 s:^# \(RM_COMMAND\)=.*:\1=${coreutils}/bin/rm: 101 s:^# \(TOUCH_COMMAND\)=.*:\1=${coreutils}/bin/touch: 102 s:^# \(PERL_COMMAND\)=.*:\1=${perl'}/bin/perl: 103 s:^# \(LOOKUP_DSEARCH=yes\)$:\1: 104 ${lib.optionalString enableLDAP '' 105 s:^# \(LDAP_LIB_TYPE=OPENLDAP2\)$:\1: 106 s:^# \(LOOKUP_LDAP=yes\)$:\1: 107 s:^\(LOOKUP_LIBS\)=\(.*\):\1=\2 -lldap -llber: 108 s:^# \(LOOKUP_LIBS\)=.*:\1=-lldap -llber: 109 ''} 110 ${lib.optionalString enableMySQL '' 111 s:^# \(LOOKUP_MYSQL=yes\)$:\1: 112 s:^# \(LOOKUP_MYSQL_PC=libmysqlclient\)$:\1: 113 s:^\(LOOKUP_LIBS\)=\(.*\):\1=\2 -lmysqlclient -L${libmysqlclient}/lib/mysql -lssl -lm -lpthread -lz: 114 s:^# \(LOOKUP_LIBS\)=.*:\1=-lmysqlclient -L${libmysqlclient}/lib/mysql -lssl -lm -lpthread -lz: 115 s:^# \(LOOKUP_INCLUDE\)=.*:\1=-I${libmysqlclient.dev}/include/mysql/: 116 ''} 117 ${lib.optionalString enablePgSQL '' 118 s:^# \(LOOKUP_PGSQL=yes\)$:\1: 119 s:^\(LOOKUP_LIBS\)=\(.*\):\1=\2 -lpq -L${libpq}/lib: 120 s:^# \(LOOKUP_LIBS\)=.*:\1=-lpq -L${libpq}/lib: 121 ''} 122 ${lib.optionalString enableSqlite '' 123 s:^# \(LOOKUP_SQLITE=yes\)$:\1: 124 s:^# \(LOOKUP_SQLITE_PC=sqlite3\)$:\1: 125 s:^\(LOOKUP_LIBS\)=\(.*\):\1=\2 -lsqlite3 -L${sqlite}/lib: 126 s:^# \(LOOKUP_LIBS\)=.*:\1=-lsqlite3 -L${sqlite}/lib -lssl -lm -lpthread -lz: 127 s:^# \(LOOKUP_INCLUDE\)=.*:\1=-I${sqlite.dev}/include: 128 ''} 129 ${lib.optionalString enableAuthDovecot '' 130 s:^# \(AUTH_DOVECOT\)=.*:\1=yes: 131 ''} 132 ${lib.optionalString enableSRS '' 133 s:^# \(SUPPORT_SRS\)=.*:\1=yes: 134 ''} 135 ${lib.optionalString enablePAM '' 136 s:^# \(SUPPORT_PAM\)=.*:\1=yes: 137 s:^\(EXTRALIBS_EXIM\)=\(.*\):\1=\2 -lpam: 138 s:^# \(EXTRALIBS_EXIM\)=.*:\1=-lpam: 139 ''} 140 ${lib.optionalString enableSPF '' 141 s:^# \(SUPPORT_SPF\)=.*:\1=yes: 142 s:^# \(LDFLAGS += -lspf2\):\1: 143 ''} 144 ${lib.optionalString enableDMARC '' 145 s:^# \(SUPPORT_DMARC\)=.*:\1=yes: 146 s:^# \(LDFLAGS += -lopendmarc\):\1: 147 ''} 148 ${lib.optionalString enableRedis '' 149 s:^# \(LOOKUP_REDIS=yes\)$:\1: 150 s:^\(LOOKUP_LIBS\)=\(.*\):\1=\2 -lhiredis -L${hiredis}/lib/hiredis: 151 s:^# \(LOOKUP_LIBS\)=.*:\1=-lhiredis -L${hiredis}/lib/hiredis: 152 s:^\(LOOKUP_INCLUDE\)=\(.*\):\1=\2 -I${hiredis}/include/hiredis/: 153 s:^# \(LOOKUP_INCLUDE\)=.*:\1=-I${hiredis}/include/hiredis/: 154 ''} 155 ${lib.optionalString enableJSON '' 156 s:^# \(LOOKUP_JSON=yes\)$:\1: 157 s:^\(LOOKUP_LIBS\)=\(.*\):\1=\2 -ljansson -L${jansson}/lib: 158 s:^# \(LOOKUP_LIBS\)=.*:\1=-ljansson -L${jansson}/lib: 159 s:^\(LOOKUP_INCLUDE\)=\(.*\):\1=\2 -I${jansson}/include: 160 s:^# \(LOOKUP_INCLUDE\)=.*:\1=-I${jansson}/include: 161 ''} 162 #/^\s*#.*/d 163 #/^\s*$/d 164 ' < src/EDITME > Local/Makefile 165 166 { 167 echo EXIWHAT_PS_CMD=${procps}/bin/ps 168 echo EXIWHAT_MULTIKILL_CMD=${killall}/bin/killall 169 } >> Local/Makefile 170 171 runHook postConfigure 172 ''; 173 174 installPhase = '' 175 runHook preInstall 176 177 mkdir -p $out/bin $out/share/man/man8 178 cp doc/exim.8 $out/share/man/man8 179 180 ( cd build-Linux-* 181 cp exicyclog exim_checkaccess exim_dumpdb exim_lock exim_tidydb \ 182 exipick exiqsumm exigrep exim_dbmbuild exim exim_fixdb eximstats \ 183 exinext exiqgrep exiwhat \ 184 $out/bin ) 185 186 ( cd $out/bin 187 for i in mailq newaliases rmail rsmtp runq sendmail; do 188 ln -s exim $i 189 done ) 190 191 runHook postInstall 192 ''; 193 194 meta = { 195 homepage = "https://exim.org/"; 196 description = "Mail transfer agent (MTA)"; 197 license = with lib.licenses; [ 198 gpl2Plus 199 bsd3 200 ]; 201 mainProgram = "exim"; 202 platforms = lib.platforms.linux; 203 maintainers = with lib.maintainers; [ 204 das_j 205 helsinki-Jo 206 tv 207 ]; 208 changelog = "https://github.com/Exim/exim/blob/exim-${version}/doc/doc-txt/ChangeLog"; 209 }; 210}