nixos/mailman: properly wrap the mailman-web script

This commit is contained in:
Peter Simons 2019-09-11 15:22:37 +02:00
parent a7941fe210
commit d0dba96e1d

View File

@ -19,6 +19,25 @@ let
''; '';
}; };
mailmanWeb = pkgs.python3Packages.mailman-web.override {
serverEMail = cfg.siteOwner;
archiverKey = cfg.hyperkittyApiKey;
allowedHosts = cfg.webHosts;
};
mailmanWebPyEnv = pkgs.python3.withPackages (x: with x; [mailman-web]);
mailmanWebExe = with pkgs; stdenv.mkDerivation {
inherit (mailmanWeb) name;
buildInputs = [makeWrapper];
unpackPhase = ":";
installPhase = ''
mkdir -p $out/bin
makeWrapper ${mailmanWebPyEnv}/bin/django-admin $out/bin/mailman-web \
--set DJANGO_SETTINGS_MODULE settings
'';
};
mailmanCfg = '' mailmanCfg = ''
[mailman] [mailman]
site_owner: ${cfg.siteOwner} site_owner: ${cfg.siteOwner}
@ -54,21 +73,6 @@ let
api_key: ${cfg.hyperkittyApiKey} api_key: ${cfg.hyperkittyApiKey}
''; '';
mailmanWeb = pkgs.python3Packages.mailman-web.override {
serverEMail = cfg.siteOwner;
archiverKey = cfg.hyperkittyApiKey;
allowedHosts = cfg.webHosts;
};
mailmanWebPyEnv = pkgs.python3.withPackages (x: with x; [mailman-web]);
mailmanWebExe = with pkgs; stdenv.mkDerivation {
name = "mailman-django-" + python3Packages.mailman.version;
unpackPhase = ":";
installPhase = "install -D ${mailmanWebPyEnv}/bin/django-admin $out/bin/mailman-web";
};
in { in {
###### interface ###### interface
@ -187,10 +191,10 @@ in {
before = [ "httpd.service" ]; before = [ "httpd.service" ];
requiredBy = [ "httpd.service" ]; requiredBy = [ "httpd.service" ];
script = '' script = ''
${mailmanWebExe}/bin/mailman-web migrate --pythonpath ${cfg.webRoot} --settings settings ${mailmanWebExe}/bin/mailman-web migrate
rm -rf static rm -rf static
${mailmanWebExe}/bin/mailman-web collectstatic --pythonpath ${cfg.webRoot} --settings settings ${mailmanWebExe}/bin/mailman-web collectstatic
${mailmanWebExe}/bin/mailman-web compress --pythonpath ${cfg.webRoot} --settings settings ${mailmanWebExe}/bin/mailman-web compress
''; '';
serviceConfig = { serviceConfig = {
User = config.services.httpd.user; User = config.services.httpd.user;
@ -216,7 +220,7 @@ in {
after = [ "network.target" ]; after = [ "network.target" ];
wantedBy = [ "mailman.service" "multi-user.target" ]; wantedBy = [ "mailman.service" "multi-user.target" ];
serviceConfig = { serviceConfig = {
ExecStart = "${mailmanWebExe}/bin/mailman-web qcluster --pythonpath ${cfg.webRoot} --settings settings"; ExecStart = "${mailmanWebExe}/bin/mailman-web qcluster";
User = config.services.httpd.user; User = config.services.httpd.user;
WorkingDirectory = "/var/lib/mailman-web"; WorkingDirectory = "/var/lib/mailman-web";
}; };
@ -227,7 +231,7 @@ in {
description = "Trigger minutely Hyperkitty events"; description = "Trigger minutely Hyperkitty events";
startAt = "minutely"; startAt = "minutely";
serviceConfig = { serviceConfig = {
ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs minutely --pythonpath ${cfg.webRoot} --settings settings"; ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs minutely";
User = config.services.httpd.user; User = config.services.httpd.user;
WorkingDirectory = "/var/lib/mailman-web"; WorkingDirectory = "/var/lib/mailman-web";
}; };
@ -238,7 +242,7 @@ in {
description = "Trigger quarter-hourly Hyperkitty events"; description = "Trigger quarter-hourly Hyperkitty events";
startAt = "*:00/15"; startAt = "*:00/15";
serviceConfig = { serviceConfig = {
ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs quarter_hourly --pythonpath ${cfg.webRoot} --settings settings"; ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs quarter_hourly";
User = config.services.httpd.user; User = config.services.httpd.user;
WorkingDirectory = "/var/lib/mailman-web"; WorkingDirectory = "/var/lib/mailman-web";
}; };
@ -249,7 +253,7 @@ in {
description = "Trigger hourly Hyperkitty events"; description = "Trigger hourly Hyperkitty events";
startAt = "hourly"; startAt = "hourly";
serviceConfig = { serviceConfig = {
ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs hourly --pythonpath ${cfg.webRoot} --settings settings"; ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs hourly";
User = config.services.httpd.user; User = config.services.httpd.user;
WorkingDirectory = "/var/lib/mailman-web"; WorkingDirectory = "/var/lib/mailman-web";
}; };
@ -260,7 +264,7 @@ in {
description = "Trigger daily Hyperkitty events"; description = "Trigger daily Hyperkitty events";
startAt = "daily"; startAt = "daily";
serviceConfig = { serviceConfig = {
ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs daily --pythonpath ${cfg.webRoot} --settings settings"; ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs daily";
User = config.services.httpd.user; User = config.services.httpd.user;
WorkingDirectory = "/var/lib/mailman-web"; WorkingDirectory = "/var/lib/mailman-web";
}; };
@ -271,7 +275,7 @@ in {
description = "Trigger weekly Hyperkitty events"; description = "Trigger weekly Hyperkitty events";
startAt = "weekly"; startAt = "weekly";
serviceConfig = { serviceConfig = {
ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs weekly --pythonpath ${cfg.webRoot} --settings settings"; ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs weekly";
User = config.services.httpd.user; User = config.services.httpd.user;
WorkingDirectory = "/var/lib/mailman-web"; WorkingDirectory = "/var/lib/mailman-web";
}; };
@ -282,7 +286,7 @@ in {
description = "Trigger yearly Hyperkitty events"; description = "Trigger yearly Hyperkitty events";
startAt = "yearly"; startAt = "yearly";
serviceConfig = { serviceConfig = {
ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs yearly --pythonpath ${cfg.webRoot} --settings settings"; ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs yearly";
User = config.services.httpd.user; User = config.services.httpd.user;
WorkingDirectory = "/var/lib/mailman-web"; WorkingDirectory = "/var/lib/mailman-web";
}; };