mailpile: add module

This commit is contained in:
Matej Cotman 2014-09-26 10:03:29 +02:00
parent 313f01bad8
commit 5e18182a30
3 changed files with 79 additions and 0 deletions

View File

@ -153,6 +153,7 @@
yandexdisk = 143; yandexdisk = 143;
collectd = 144; collectd = 144;
consul = 145; consul = 145;
mailpile = 146;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
@ -273,6 +274,7 @@
riemann = 137; riemann = 137;
riemanndash = 138; riemanndash = 138;
uhub = 142; uhub = 142;
mailpile = 146;
# When adding a gid, make sure it doesn't match an existing uid. And don't use gids above 399! # When adding a gid, make sure it doesn't match an existing uid. And don't use gids above 399!

View File

@ -232,6 +232,7 @@
./services/networking/iodined.nix ./services/networking/iodined.nix
./services/networking/ircd-hybrid/default.nix ./services/networking/ircd-hybrid/default.nix
./services/networking/kippo.nix ./services/networking/kippo.nix
./services/networking/mailpile.nix
./services/networking/minidlna.nix ./services/networking/minidlna.nix
./services/networking/murmur.nix ./services/networking/murmur.nix
./services/networking/nat.nix ./services/networking/nat.nix

View File

@ -0,0 +1,76 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.mailpile;
hostname = cfg.hostname;
port = cfg.port;
in
{
###### interface
options = {
services.mailpile = {
enable = mkOption {
default = false;
description = "
Whether to enable Mailpile the mail client.
";
};
hostname = mkOption {
default = "localhost";
description = "Listen to this hostname or ip.";
};
port = mkOption {
default = "33411";
description = "Listen on this port.";
};
};
};
###### implementation
config = mkIf config.services.mailpile.enable {
users.extraUsers.mailpile =
{ uid = config.ids.uids.mailpile;
description = "Mailpile user";
createHome = true;
home = "/var/lib/mailpile";
};
users.extraGroups.mailpile =
{ gid = config.ids.gids.mailpile;
};
systemd.services.mailpile =
{
description = "Mailpile server.";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
User = "mailpile";
ExecStart = "${pkgs.mailpile}/bin/mailpile --www ${hostname}:${port} --wait";
# mixed - first send SIGINT to main process,
# then after 2min send SIGKILL to whole group if neccessary
KillMode = "mixed";
KillSignal = "SIGINT"; # like Ctrl+C - safe mailpile shutdown
TimeoutSec = 120; # wait 2min untill SIGKILL
};
environment.MAILPILE_HOME = "/var/lib/mailpile/.local/share/Mailpile";
};
environment.systemPackages = [ pkgs.mailpile ];
};
}