Skip to content

Commit

Permalink
python-mailman-web: turn these Djando configuration files into a make…
Browse files Browse the repository at this point in the history
…-shift Python library

Suggested in NixOS#67951 (comment).
  • Loading branch information
peti committed Sep 11, 2019
1 parent 72c7ba5 commit 86f8895
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 10 deletions.
11 changes: 7 additions & 4 deletions nixos/modules/services/mail/mailman.nix
Expand Up @@ -62,6 +62,12 @@ let
installPhase = "install -D ${djangoPyEnv}/bin/django-admin $out/bin/mailman-django-admin";
};

mailmanWeb = pkgs.python3Packages.mailman-web.override {
serverEMail = cfg.siteOwner;
archiverKey = cfg.hyperkittyApiKey;
allowedHosts = cfg.webHosts;
};

in {

###### interface
Expand All @@ -88,10 +94,7 @@ in {

webRoot = mkOption {
type = types.path;
default = pkgs.python3Packages.mailman-web.override { serverEMail = cfg.siteOwner;
archiverKey = cfg.hyperkittyApiKey;
allowedHosts = cfg.webHosts;
};
default = "${mailmanWeb}/${pkgs.python3.sitePackages}";
defaultText = "pkgs.python3Packages.mailman-web";
description = ''
The web root for the Hyperkity + Postorius apps provided by Mailman.
Expand Down
22 changes: 16 additions & 6 deletions pkgs/servers/mail/mailman/web.nix
@@ -1,4 +1,4 @@
{ stdenv
{ stdenv, python, hyperkitty, postorius, buildPythonPackage
, serverEMail ? "postmaster@example.org"
, archiverKey ? "SecretArchiverAPIKey"
, allowedHosts ? []
Expand All @@ -10,18 +10,28 @@ let

in

stdenv.mkDerivation {
# We turn those Djando configuration files into a make-shift Python library so
# that Nix users can use this package as a part of their buildInputs to import
# the code. Also, this package implicitly provides an environment in which the
# Django app can be run.

buildPythonPackage {
name = "mailman-web-0";

propagatedBuildInputs = [ hyperkitty postorius ];

unpackPhase = ":";
buildPhase = ":";
setuptoolsCheckPhase = ":";

installPhase = ''
install -D -m 444 ${./urls.py} $out/urls.py
install -D -m 444 ${./wsgi.py} $out/wsgi.py
substitute ${./settings.py} $out/settings.py \
d=$out/${python.sitePackages}
install -D -m 444 ${./urls.py} $d/urls.py
install -D -m 444 ${./wsgi.py} $d/wsgi.py
substitute ${./settings.py} $d/settings.py \
--subst-var-by SERVER_EMAIL '${serverEMail}' \
--subst-var-by ARCHIVER_KEY '${archiverKey}' \
--subst-var-by ALLOWED_HOSTS '${allowedHostsString}'
chmod 444 $out/settings.py
chmod 444 $d/settings.py
'';
}

0 comments on commit 86f8895

Please sign in to comment.