mailman3: remove defunct submodule
This commit is contained in:
parent
42ef7fa0a5
commit
e8370f2322
10 changed files with 0 additions and 707 deletions
|
@ -1,74 +0,0 @@
|
||||||
{
|
|
||||||
stdenv,
|
|
||||||
buildPythonPackage,
|
|
||||||
fetchgit,
|
|
||||||
aiosmtpd,
|
|
||||||
alembic,
|
|
||||||
atpublic,
|
|
||||||
click,
|
|
||||||
dnspython,
|
|
||||||
falcon,
|
|
||||||
flufl_bounce,
|
|
||||||
flufl_i18n,
|
|
||||||
flufl_lock,
|
|
||||||
importlib-resources,
|
|
||||||
lazr_config,
|
|
||||||
passlib,
|
|
||||||
requests,
|
|
||||||
sqlalchemy,
|
|
||||||
zope_component,
|
|
||||||
zope_configuration,
|
|
||||||
zope_event,
|
|
||||||
zope_interface,
|
|
||||||
# optional database dependencies
|
|
||||||
pymysql,
|
|
||||||
psycopg2,
|
|
||||||
}:
|
|
||||||
buildPythonPackage rec {
|
|
||||||
name = "mailman3_core-${version}";
|
|
||||||
version = "3.2.2";
|
|
||||||
src = fetchgit {
|
|
||||||
url = "https://gitlab.com/mailman/mailman.git";
|
|
||||||
rev = version;
|
|
||||||
sha256 = "0p1z2i2x6f0g05lx5mymiiw2ij1bsycvbxwabb52nisdddcfhhzp";
|
|
||||||
};
|
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
|
||||||
aiosmtpd
|
|
||||||
alembic
|
|
||||||
atpublic
|
|
||||||
click
|
|
||||||
dnspython
|
|
||||||
falcon
|
|
||||||
flufl_bounce
|
|
||||||
flufl_i18n
|
|
||||||
flufl_lock
|
|
||||||
importlib-resources
|
|
||||||
lazr_config
|
|
||||||
passlib
|
|
||||||
requests
|
|
||||||
sqlalchemy
|
|
||||||
zope_component
|
|
||||||
zope_configuration
|
|
||||||
zope_event
|
|
||||||
zope_interface
|
|
||||||
pymysql
|
|
||||||
psycopg2
|
|
||||||
];
|
|
||||||
|
|
||||||
doCheck = false;
|
|
||||||
|
|
||||||
# mailman imports master and runner
|
|
||||||
# -> only wrap $out/bin/mailman
|
|
||||||
dontWrapPythonPrograms = true;
|
|
||||||
postFixup = ''
|
|
||||||
wrapProgram $out/bin/mailman --prefix PYTHONPATH : "$PYTHONPATH"
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
|
||||||
description = "GNU Mailman, a mailing list management system";
|
|
||||||
license = licenses.gpl3;
|
|
||||||
maintainers = with maintainers; [ ];
|
|
||||||
homepage = "http://list.org/";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
{
|
|
||||||
stdenv,
|
|
||||||
lib,
|
|
||||||
fetchPypi,
|
|
||||||
buildPythonPackage,
|
|
||||||
atpublic,
|
|
||||||
}:
|
|
||||||
buildPythonPackage rec {
|
|
||||||
pname = "aiosmtpd";
|
|
||||||
version = "1.2";
|
|
||||||
|
|
||||||
src = fetchPypi {
|
|
||||||
inherit pname version;
|
|
||||||
sha256 = "1xdfk741pjmz1cm8dsi4n5vq4517i175rm94696m3f7kcgk7xsmp";
|
|
||||||
};
|
|
||||||
doCheck = false;
|
|
||||||
propagatedBuildInputs = [ atpublic ];
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
stdenv,
|
|
||||||
lib,
|
|
||||||
fetchPypi,
|
|
||||||
buildPythonPackage,
|
|
||||||
}:
|
|
||||||
buildPythonPackage rec {
|
|
||||||
pname = "atpublic";
|
|
||||||
version = "1.0";
|
|
||||||
|
|
||||||
src = fetchPypi {
|
|
||||||
inherit pname version;
|
|
||||||
sha256 = "0i3sbxkdlbb4560rrlmwwd5y4ps7k73lp4d8wnmd7ag9k426gjkx";
|
|
||||||
};
|
|
||||||
doCheck = false;
|
|
||||||
# propagatedBuildInputs = [];
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
{
|
|
||||||
stdenv,
|
|
||||||
lib,
|
|
||||||
fetchPypi,
|
|
||||||
buildPythonPackage,
|
|
||||||
atpublic,
|
|
||||||
zope_interface,
|
|
||||||
}:
|
|
||||||
buildPythonPackage rec {
|
|
||||||
name = "${pname}-${version}";
|
|
||||||
pname = "flufl.bounce";
|
|
||||||
version = "3.0";
|
|
||||||
|
|
||||||
src = fetchPypi {
|
|
||||||
inherit pname version;
|
|
||||||
sha256 = "0k5kjqa3x6gvwwxyzb2vwi1g1i6asm1zw5fivylxz3d583y4kid2";
|
|
||||||
};
|
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
|
||||||
atpublic
|
|
||||||
zope_interface
|
|
||||||
];
|
|
||||||
|
|
||||||
doCheck = false;
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
{
|
|
||||||
stdenv,
|
|
||||||
lib,
|
|
||||||
fetchPypi,
|
|
||||||
buildPythonPackage,
|
|
||||||
atpublic,
|
|
||||||
}:
|
|
||||||
buildPythonPackage rec {
|
|
||||||
name = "${pname}-${version}";
|
|
||||||
pname = "flufl.i18n";
|
|
||||||
version = "2.0.2";
|
|
||||||
|
|
||||||
src = fetchPypi {
|
|
||||||
inherit pname version;
|
|
||||||
sha256 = "1csgds59nx0ann9v2alqr69lakp1cnc1ikmbgn96l6n23js7c2ah";
|
|
||||||
};
|
|
||||||
|
|
||||||
propagatedBuildInputs = [ atpublic ];
|
|
||||||
|
|
||||||
doCheck = false;
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
{
|
|
||||||
stdenv,
|
|
||||||
lib,
|
|
||||||
fetchPypi,
|
|
||||||
buildPythonPackage,
|
|
||||||
atpublic,
|
|
||||||
}:
|
|
||||||
buildPythonPackage rec {
|
|
||||||
name = "${pname}-${version}";
|
|
||||||
pname = "flufl.lock";
|
|
||||||
version = "3.2";
|
|
||||||
|
|
||||||
src = fetchPypi {
|
|
||||||
inherit pname version;
|
|
||||||
sha256 = "0nzzd6l30ff6cwsrlrb94xzfja4wkyrqv3ydc6cz0hdbr766mmm8";
|
|
||||||
};
|
|
||||||
|
|
||||||
propagatedBuildInputs = [ atpublic ];
|
|
||||||
|
|
||||||
doCheck = false;
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
{
|
|
||||||
stdenv,
|
|
||||||
lib,
|
|
||||||
fetchPypi,
|
|
||||||
buildPythonPackage,
|
|
||||||
lazr_delegates,
|
|
||||||
}:
|
|
||||||
buildPythonPackage rec {
|
|
||||||
name = "${pname}-${version}";
|
|
||||||
pname = "lazr.config";
|
|
||||||
version = "2.2.1";
|
|
||||||
|
|
||||||
src = fetchPypi {
|
|
||||||
inherit pname version;
|
|
||||||
sha256 = "1s7pyvlq06qjrkaw9r6nc290lb095n25ybzgavvy51ygpxkgqxwn";
|
|
||||||
};
|
|
||||||
|
|
||||||
propagatedBuildInputs = [ lazr_delegates ];
|
|
||||||
|
|
||||||
doCheck = false;
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
{
|
|
||||||
stdenv,
|
|
||||||
lib,
|
|
||||||
fetchPypi,
|
|
||||||
buildPythonPackage,
|
|
||||||
nose,
|
|
||||||
zope_interface,
|
|
||||||
}:
|
|
||||||
buildPythonPackage rec {
|
|
||||||
name = "${pname}-${version}";
|
|
||||||
pname = "lazr.delegates";
|
|
||||||
version = "2.0.4";
|
|
||||||
|
|
||||||
src = fetchPypi {
|
|
||||||
inherit pname version;
|
|
||||||
sha256 = "1rdnl85j9ayp8n85l0ciip621j9dcziz5qnmv2m7krgwgcn31vfx";
|
|
||||||
};
|
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
|
||||||
nose
|
|
||||||
zope_interface
|
|
||||||
];
|
|
||||||
|
|
||||||
doCheck = false;
|
|
||||||
}
|
|
|
@ -1,444 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
mailman3 = import ./release.nix { };
|
|
||||||
cfg = config.services.mailman3;
|
|
||||||
usePostgresql = cfg.database.type == "postgresql";
|
|
||||||
useSqlite = cfg.database.type == "sqlite3";
|
|
||||||
useMysql = cfg.database.type == "mysql";
|
|
||||||
usePostfix = cfg.mta.type == "postfix";
|
|
||||||
configFile_postfix = pkgs.writeText "postfix.cfg" ''
|
|
||||||
[postfix]
|
|
||||||
transport_file_type: hash
|
|
||||||
postmap_command: ${pkgs.postfix}/bin/postmap
|
|
||||||
'';
|
|
||||||
configFile = pkgs.writeText "mailman.cfg" ''
|
|
||||||
# This File was automatically generated by the mailman3 nixos submodule.
|
|
||||||
# Do not manually edit this file.
|
|
||||||
|
|
||||||
[mailman]
|
|
||||||
site_owner: ${cfg.site_owner}
|
|
||||||
layout: custom
|
|
||||||
|
|
||||||
[paths.custom]
|
|
||||||
archive_dir: ${cfg.paths.archive_dir}
|
|
||||||
bin_dir: ${cfg.paths.bin_dir}
|
|
||||||
cache_dir: ${cfg.paths.cache_dir}
|
|
||||||
data_dir: ${cfg.paths.data_dir}
|
|
||||||
etc_dir: ${cfg.paths.etc_dir}
|
|
||||||
lock_dir: ${cfg.paths.lock_dir}
|
|
||||||
log_dir: ${cfg.paths.log_dir}
|
|
||||||
messages_dir: ${cfg.paths.messages_dir}
|
|
||||||
template_dir: ${cfg.paths.template_dir}
|
|
||||||
var_dir: ${cfg.paths.var_dir}
|
|
||||||
lock_file: ${cfg.paths.lock_file}
|
|
||||||
pid_file: ${cfg.paths.pid_file}
|
|
||||||
|
|
||||||
# The Database Documentation can be found here:
|
|
||||||
# https://mailman.readthedocs.io/en/latest/src/mailman/docs/database.html
|
|
||||||
# https://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls
|
|
||||||
[database]
|
|
||||||
${optionalString useSqlite ''
|
|
||||||
[database]
|
|
||||||
url: sqlite:///${cfg.database.socket}
|
|
||||||
''}
|
|
||||||
${optionalString usePostgresql ''
|
|
||||||
class: mailman.database.postgresql.PostgreSQLDatabase
|
|
||||||
url: postgres://${cfg.database.user}:#dbpass#@${database.host}:${toString cfg.database.port}/${cfg.database.name}
|
|
||||||
''}
|
|
||||||
${optionalString useMysql ''
|
|
||||||
class: mailman.database.mysql.MySQLDatabase
|
|
||||||
url: mysql+pymysql://${cfg.database.user}:#dbpass#@${cfg.database.host}:${toString cfg.database.port}/${cfg.database.name}?charset=utf8&use_unicode=1
|
|
||||||
''}
|
|
||||||
|
|
||||||
[mta]
|
|
||||||
incoming: ${cfg.mta.incoming}
|
|
||||||
outgoing: ${cfg.mta.outgoing}
|
|
||||||
lmtp_host: ${cfg.mta.lmtp_host}
|
|
||||||
lmtp_port: ${toString cfg.mta.lmtp_port}
|
|
||||||
smtp_host: ${cfg.mta.smtp_host}
|
|
||||||
smtp_port: ${toString cfg.mta.smtp_port}
|
|
||||||
smtp_user: ${cfg.mta.smtp_user}
|
|
||||||
smtp_pass: #smtppass#
|
|
||||||
# One of smtp/smtps/starttls, specifies the protocol Mailman will use when
|
|
||||||
# connecting. Typically will correspond to smtp_port: 25 -> smtp, 465 -> smtps,
|
|
||||||
# 587 -> starttls.
|
|
||||||
smtp_secure_mode: smtp
|
|
||||||
configuration: ${configFile_postfix}
|
|
||||||
|
|
||||||
[ARC]
|
|
||||||
enabled: no
|
|
||||||
|
|
||||||
${cfg.extraConfig}
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.services.mailman3 = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = ''
|
|
||||||
Wether to enable mailman3 mailing list management system (core).
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
site_owner = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "changeme@example.com";
|
|
||||||
description = ''
|
|
||||||
mailman3 site owner address.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
user = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "mailman3";
|
|
||||||
description = ''
|
|
||||||
User account under which mailman runs.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
database = {
|
|
||||||
type = mkOption {
|
|
||||||
type = types.enum [
|
|
||||||
"sqlite3"
|
|
||||||
"mysql"
|
|
||||||
"postgres"
|
|
||||||
];
|
|
||||||
default = "sqlite3";
|
|
||||||
example = "mysql";
|
|
||||||
description = ''
|
|
||||||
Database type to use.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
host = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "172.0.0.1";
|
|
||||||
description = ''
|
|
||||||
Database host adress.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
port = mkOption {
|
|
||||||
type = types.nullOr types.int;
|
|
||||||
default = null;
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
name = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "mailman3";
|
|
||||||
description = ''
|
|
||||||
Database name.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
user = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "mailman3";
|
|
||||||
description = ''
|
|
||||||
Database user.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
password = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "";
|
|
||||||
description = ''
|
|
||||||
The password corresponding to <option>database.user</option>.
|
|
||||||
Warning: this is stored in cleartext in the Nix store!
|
|
||||||
Use <option>database.passwordFile</option> instead.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
passwordFile = mkOption {
|
|
||||||
type = types.nullOr types.path;
|
|
||||||
default = null;
|
|
||||||
example = "/run/keys/mailman3-dbpassword";
|
|
||||||
description = ''
|
|
||||||
A file containing the password corresponding to
|
|
||||||
<option>database.user</option>.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
socket = mkOption {
|
|
||||||
type = types.nullOr types.path;
|
|
||||||
default = null;
|
|
||||||
example = "/run/mysqld/mysqld.sock";
|
|
||||||
description = "Path to the unix socket file to use for authentication.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
paths = {
|
|
||||||
archive_dir = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "${cfg.paths.var_dir}/archives";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
bin_dir = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "${mailman3.core}/bin";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
cache_dir = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "${cfg.paths.var_dir}/cache";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
data_dir = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "${cfg.paths.var_dir}/data";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
etc_dir = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "${cfg.paths.var_dir}/etc";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
lock_dir = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "${cfg.paths.var_dir}/locks";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
log_dir = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "${cfg.paths.var_dir}/logs";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
messages_dir = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "${cfg.paths.var_dir}/messages";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
template_dir = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "${cfg.paths.var_dir}/templates";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
var_dir = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "/var/lib/mailman3";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
lock_file = mkOption {
|
|
||||||
type = types.path;
|
|
||||||
default = "${cfg.paths.lock_dir}/master.lck";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
pid_file = mkOption {
|
|
||||||
type = types.path;
|
|
||||||
default = "${cfg.paths.var_dir}/master.pid";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
mta = {
|
|
||||||
# TODO: add Sentmail and qmail
|
|
||||||
type = mkOption {
|
|
||||||
type = types.enum [
|
|
||||||
"postfix"
|
|
||||||
"exim4"
|
|
||||||
];
|
|
||||||
default = "postfix";
|
|
||||||
example = "exim4";
|
|
||||||
description = ''
|
|
||||||
Database type to use.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
incoming = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "mailman.mta.${cfg.mta.type}.LMTP";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
outgoing = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "mailman.mta.deliver.deliver";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
lmtp_host = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "mail.example.com";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
lmtp_port = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
default = 8024;
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
smtp_host = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "mail.example.com";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
smtp_port = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
default = 25;
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
smtp_user = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
smtp_pass = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
smtp_passFile = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "";
|
|
||||||
description = ''
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfig = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "";
|
|
||||||
example = ''
|
|
||||||
[devmode]
|
|
||||||
enabled: yes
|
|
||||||
recipient: your.address@your.domain
|
|
||||||
'';
|
|
||||||
description = ''
|
|
||||||
Configuration lines appended to the generated mailman3 configuration file.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
users = mkIf (cfg.user == "mailman3") {
|
|
||||||
users.mailman3 = {
|
|
||||||
description = "Mailman3 Service";
|
|
||||||
home = cfg.paths.var_dir;
|
|
||||||
createHome = true;
|
|
||||||
useDefaultShell = true;
|
|
||||||
packages = [ mailman3.core ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.postfix.recipientDelimiter = mkIf usePostfix (mkDefault "+");
|
|
||||||
services.postfix.mapFiles."transport_maps" = mkIf usePostfix (
|
|
||||||
mkDefault "${cfg.paths.data_dir}/postfix_lmtp"
|
|
||||||
);
|
|
||||||
services.postfix.mapFiles."local_recipient_maps" = mkIf usePostfix (
|
|
||||||
mkDefault "${cfg.paths.data_dir}/postfix_lmtp"
|
|
||||||
);
|
|
||||||
services.postfix.mapFiles."relay_domains" = mkIf usePostfix (
|
|
||||||
mkDefault "${cfg.paths.data_dir}/postfix_domains"
|
|
||||||
);
|
|
||||||
|
|
||||||
warnings = optional (cfg.database.password != "") ''
|
|
||||||
config.services.mailman3.database.password will be stored as plaintext
|
|
||||||
in the Nix store. Use database.passwordFile instead.'';
|
|
||||||
|
|
||||||
# Create database passwordFile default when password is configured.
|
|
||||||
services.mailman3.database.passwordFile = mkDefault (
|
|
||||||
toString (
|
|
||||||
pkgs.writeTextFile {
|
|
||||||
name = "mailman3-database-password";
|
|
||||||
text = cfg.database.password;
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
systemd.services.mailman3 = {
|
|
||||||
description = "GNU Mailing List Manager";
|
|
||||||
after = [
|
|
||||||
"network.target"
|
|
||||||
] ++ lib.optional usePostgresql "postgresql.service" ++ lib.optional useMysql "mysql.service";
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
|
|
||||||
preStart =
|
|
||||||
let
|
|
||||||
dbpass = fileContents cfg.database.passwordFile;
|
|
||||||
smtppass = fileContents cfg.mta.smtp_passFile;
|
|
||||||
in
|
|
||||||
''
|
|
||||||
mkdir -p ${cfg.paths.etc_dir}
|
|
||||||
cp ${configFile} ${cfg.paths.etc_dir}/mailman.cfg
|
|
||||||
${optionalString (useMysql || usePostgresql) ''
|
|
||||||
sed -e "s/#dbpass#/${dbpass}/g" -e "s/#smtppass#/${smtppass}/g" -i ${cfg.paths.etc_dir}/mailman.cfg
|
|
||||||
''}
|
|
||||||
chmod 640 ${cfg.paths.etc_dir}/mailman.cfg
|
|
||||||
'';
|
|
||||||
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "forking";
|
|
||||||
User = cfg.user;
|
|
||||||
WorkingDirectory = cfg.paths.var_dir;
|
|
||||||
ExecStart = "${mailman3.core}/bin/mailman start -f";
|
|
||||||
ExecReload = "${mailman3.core}/bin/mailman restart";
|
|
||||||
ExecStop = "${mailman3.core}/bin/mailman stop";
|
|
||||||
};
|
|
||||||
|
|
||||||
environment = {
|
|
||||||
USER = cfg.user;
|
|
||||||
HOME = cfg.paths.var_dir;
|
|
||||||
MAILMAN_CONFIG_FILE = "${cfg.paths.etc_dir}/mailman.cfg";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
{
|
|
||||||
pkgs ? import <nixpkgs> { },
|
|
||||||
python3Packages ? pkgs.python3Packages,
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
mailman3 = {
|
|
||||||
core = python3Packages.callPackage ./core.nix (
|
|
||||||
with deps;
|
|
||||||
{
|
|
||||||
inherit
|
|
||||||
aiosmtpd
|
|
||||||
atpublic
|
|
||||||
flufl_bounce
|
|
||||||
flufl_i18n
|
|
||||||
flufl_lock
|
|
||||||
lazr_config
|
|
||||||
;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
};
|
|
||||||
deps = rec {
|
|
||||||
aiosmtpd = python3Packages.callPackage ./extraPackages/aiosmtpd.nix {
|
|
||||||
inherit atpublic;
|
|
||||||
};
|
|
||||||
atpublic = python3Packages.callPackage ./extraPackages/atpublic.nix { };
|
|
||||||
flufl_bounce = python3Packages.callPackage ./extraPackages/flufl_bounce.nix {
|
|
||||||
inherit atpublic;
|
|
||||||
};
|
|
||||||
flufl_i18n = python3Packages.callPackage ./extraPackages/flufl_i18n.nix {
|
|
||||||
inherit atpublic;
|
|
||||||
};
|
|
||||||
flufl_lock = python3Packages.callPackage ./extraPackages/flufl_lock.nix {
|
|
||||||
inherit atpublic;
|
|
||||||
};
|
|
||||||
lazr_config = python3Packages.callPackage ./extraPackages/lazr_config.nix {
|
|
||||||
inherit lazr_delegates;
|
|
||||||
};
|
|
||||||
lazr_delegates = python3Packages.callPackage ./extraPackages/lazr_delegates.nix { };
|
|
||||||
};
|
|
||||||
in
|
|
||||||
mailman3
|
|
Loading…
Reference in a new issue