1{
2 lib,
3 stdenv,
4 buildGoModule,
5 fetchFromGitHub,
6 pam,
7 coreutils,
8 installShellFiles,
9 scdoc,
10 nixosTests,
11}:
12
13buildGoModule rec {
14 pname = "maddy";
15 version = "0.8.1";
16
17 src = fetchFromGitHub {
18 owner = "foxcpp";
19 repo = "maddy";
20 rev = "v${version}";
21 sha256 = "sha256-cR5qRUYQnFfm+ZOwwwNNRo1odq/ntI2QlGmhJBTjaF4=";
22 };
23
24 vendorHash = "sha256-YbXhxcRDTkNDdlCAKtQS2G8fwRIrRGpouIYx+5RG2lY=";
25
26 tags = [ "libpam" ];
27
28 ldflags = [
29 "-s"
30 "-w"
31 "-X github.com/foxcpp/maddy.Version=${version}"
32 ];
33
34 subPackages = [ "cmd/maddy" ];
35
36 buildInputs = [ pam ];
37
38 nativeBuildInputs = [
39 installShellFiles
40 scdoc
41 ];
42
43 postInstall = ''
44 for f in docs/man/*.scd; do
45 local page="docs/man/$(basename "$f" .scd)"
46 scdoc < "$f" > "$page"
47 installManPage "$page"
48 done
49
50 ln -s "$out/bin/maddy" "$out/bin/maddyctl"
51
52 mkdir -p $out/lib/systemd/system
53
54 substitute dist/systemd/maddy.service $out/lib/systemd/system/maddy.service \
55 --replace "/usr/local/bin/maddy" "$out/bin/maddy" \
56 --replace "/bin/kill" "${coreutils}/bin/kill"
57
58 substitute dist/systemd/maddy@.service $out/lib/systemd/system/maddy@.service \
59 --replace "/usr/local/bin/maddy" "$out/bin/maddy" \
60 --replace "/bin/kill" "${coreutils}/bin/kill"
61 '';
62
63 env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-error=strict-prototypes";
64
65 passthru.tests.nixos = nixosTests.maddy;
66
67 meta = with lib; {
68 description = "Composable all-in-one mail server";
69 homepage = "https://maddy.email";
70 license = licenses.gpl3Plus;
71 maintainers = with maintainers; [ nickcao ];
72 };
73}