nixos/mailman: add serve.virtualRoot option

On spectrum-os.org, mailman-web is run at /lists.  With this change,
it's possible for us to switch from a custom uWSGI configuration to
the one now built in to the Mailman module.
This commit is contained in:
Alyssa Ross 2022-09-04 13:49:26 +00:00
parent ce5861a512
commit 1cdd9a3fe6
No known key found for this signature in database
GPG Key ID: F9DBED4859B271C0

View File

@ -263,6 +263,15 @@ in {
serve = {
enable = mkEnableOption (lib.mdDoc "Automatic nginx and uwsgi setup for mailman-web");
virtualRoot = mkOption {
default = "/";
example = lib.literalExpression "/lists";
type = types.str;
description = lib.mdDoc ''
Path to mount the mailman-web django application on.
'';
};
};
extraPythonPackages = mkOption {
@ -433,8 +442,8 @@ in {
enable = mkDefault true;
virtualHosts = lib.genAttrs cfg.webHosts (webHost: {
locations = {
"/".extraConfig = "uwsgi_pass unix:/run/mailman-web.socket;";
"/static/".alias = webSettings.STATIC_ROOT + "/";
${cfg.serve.virtualRoot}.extraConfig = "uwsgi_pass unix:/run/mailman-web.socket;";
"${cfg.serve.virtualRoot}/static/".alias = webSettings.STATIC_ROOT + "/";
};
});
};
@ -561,7 +570,8 @@ in {
type = "normal";
plugins = ["python3"];
home = webEnv;
module = "mailman_web.wsgi";
manage-script-name = true;
mount = "${cfg.serve.virtualRoot}=mailman_web.wsgi:application";
http = "127.0.0.1:18507";
};
uwsgiConfigFile = pkgs.writeText "uwsgi-mailman.json" (builtins.toJSON uwsgiConfig);