2022-12-24 23:58:21 +01:00
|
|
|
# public-inbox configuration for depot@tvl.su
|
|
|
|
#
|
|
|
|
# The account itself is a Yandex 360 account in the tvl.su organisation, which
|
|
|
|
# is accessed via IMAP. Yandex takes care of spam filtering for us, so there is
|
|
|
|
# no particular SpamAssassin or other configuration.
|
2022-12-25 12:22:18 +01:00
|
|
|
{ config, depot, lib, pkgs, ... }:
|
2022-12-24 23:58:21 +01:00
|
|
|
|
|
|
|
let
|
|
|
|
cfg = config.services.depot.inbox;
|
2022-12-25 12:22:18 +01:00
|
|
|
|
|
|
|
imapConfig = pkgs.writeText "offlineimaprc" ''
|
|
|
|
[general]
|
|
|
|
accounts = depot
|
|
|
|
|
|
|
|
[Account depot]
|
|
|
|
localrepository = Local
|
|
|
|
remoterepository = Remote
|
|
|
|
|
|
|
|
[Repository Local]
|
|
|
|
type = Maildir
|
|
|
|
localfolders = /var/lib/public-inbox/depot-imap
|
|
|
|
|
|
|
|
[Repository Remote]
|
|
|
|
type = IMAP
|
|
|
|
ssl = yes
|
|
|
|
sslcacertfile = /etc/ssl/certs/ca-bundle.crt
|
|
|
|
remotehost = imap.yandex.ru
|
|
|
|
remoteuser = depot@tvl.su
|
|
|
|
remotepassfile = /var/run/agenix/depot-inbox-imap
|
|
|
|
'';
|
2022-12-24 23:58:21 +01:00
|
|
|
in
|
|
|
|
{
|
|
|
|
options.services.depot.inbox = with lib; {
|
|
|
|
enable = mkEnableOption "Enable public-inbox for depot@tvl.su";
|
|
|
|
|
|
|
|
depotPath = mkOption {
|
|
|
|
description = "path to local depot replica";
|
|
|
|
type = types.str;
|
|
|
|
default = "/var/lib/depot";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
|
|
services.public-inbox = {
|
|
|
|
enable = true;
|
|
|
|
|
|
|
|
http.enable = true;
|
|
|
|
http.port = 8053;
|
|
|
|
# imap.enable = true;
|
|
|
|
# nntp.enable = true;
|
|
|
|
|
|
|
|
inboxes.depot = rec {
|
|
|
|
address = [
|
|
|
|
"depot@tvl.su" # primary address
|
|
|
|
"depot@tazj.in" # legacy address
|
|
|
|
];
|
|
|
|
|
|
|
|
description = "TVL depot development";
|
|
|
|
coderepo = [ "depot" ];
|
|
|
|
url = "https://inbox.tvl.su/depot";
|
|
|
|
};
|
|
|
|
|
|
|
|
settings.coderepo.depot = {
|
|
|
|
dir = cfg.depotPath;
|
|
|
|
cgitUrl = "https://code.tvl.fyi";
|
|
|
|
};
|
|
|
|
|
|
|
|
settings.publicinbox.wwwlisting = "all";
|
|
|
|
};
|
2022-12-25 12:22:18 +01:00
|
|
|
|
|
|
|
age.secrets.depot-inbox-imap = {
|
|
|
|
file = depot.ops.secrets."depot-inbox-imap.age";
|
|
|
|
mode = "0440";
|
|
|
|
group = config.users.groups."public-inbox".name;
|
|
|
|
};
|
|
|
|
|
|
|
|
systemd.services.offlineimap-depot = {
|
|
|
|
description = "download mail for depot@tvl.su";
|
|
|
|
wantedBy = [ "multi-user.target" ];
|
|
|
|
startAt = "minutely";
|
|
|
|
|
|
|
|
script = ''
|
|
|
|
mkdir -p /var/lib/public-inbox/depot-imap
|
|
|
|
${pkgs.offlineimap}/bin/offlineimap -c ${imapConfig}
|
|
|
|
'';
|
|
|
|
|
|
|
|
serviceConfig = {
|
|
|
|
Type = "oneshot";
|
|
|
|
|
|
|
|
# Run in the same user context as public-inbox itself to avoid
|
|
|
|
# permissions trouble.
|
|
|
|
User = config.users.users."public-inbox".name;
|
|
|
|
Group = config.users.groups."public-inbox".name;
|
|
|
|
};
|
|
|
|
};
|
2022-12-24 23:58:21 +01:00
|
|
|
};
|
|
|
|
}
|