summary refs log tree commit diff
path: root/pkgs/servers/mail/nullmailer/default.nix
blob: 4b753bdf0cdb102dd6c1682e38bd977243f572ca (plain) (blame)
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
{ stdenv, fetchurl, lib, tls ? true, gnutls ? null }:

assert tls -> gnutls != null;

stdenv.mkDerivation rec {

  version = "2.2";
  name = "nullmailer-${version}";

  src = fetchurl {
    url = "https://untroubled.org/nullmailer/nullmailer-${version}.tar.gz";
    sha256 = "0md8cf90fl2yf3zh9njjy42a673v4j4ygyq95xg7fzkygdigm1lq";
  };

  buildInputs = stdenv.lib.optional tls gnutls;

  configureFlags = [
    "--sysconfdir=/etc"
    "--localstatedir=/var"
  ] ++ stdenv.lib.optional tls "--enable-tls";

  installFlags = [ "DESTDIR=$(out)" ];

  # We have to remove the ''var'' directory, since nix can't handle named pipes
  # and we can't use it in the store anyway. Same for ''etc''.
  # The second line is need, because the installer of nullmailer will copy its
  # own prepared version of ''etc'' and ''var'' and also uses the prefix path (configure phase)
  # for hardcoded absolute references to its own binary farm, e.g. sendmail binary is
  # calling nullmailer-inject binary. Since we can't configure inside the store of
  # the derivation we need both directories in the root, but don't want to put them there
  # during install, hence we have to fix mumbling inside the install directory.
  # This is kind of a hack, but the only way I know of, yet.
  postInstall = ''
    rm -rf $out/var/ $out/etc/
    mv $out/$out/* $out/
    rmdir $out/$out
  '';

  enableParallelBuilding = true;

  meta = {
    homepage = http://untroubled.org/nullmailer/;
    description = ''
      A sendmail/qmail/etc replacement MTA for hosts which relay to a fixed set of smart relays.
      It is designed to be simple to configure, secure, and easily extendable.
    '';
    license = lib.licenses.gpl2;
    platforms = lib.platforms.all;
    maintainers = with lib.maintainers ; [ sargon ];
  };
}