nix-infra/configs/services/vikunja.nix

89 lines
1.9 KiB
Nix

{ lib, pkgs, config, ... }:
let
webPort = 3456;
dbname = "vikunja";
dbuname = "vikunja";
dbport = 5432;
in
{
# set up email passwd
sops = {
age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
secrets = {
mail_passwd.sopsFile = ../../secrets/vikunja/secrets.yaml;
};
templates."mail_passwd".content = ''
VIKUNJA_MAILER_PASSWORD=${config.sops.placeholder.mail_passwd}
'';
};
services = {
vikunja = {
enable = true;
frontendScheme = "http";
frontendHostname = "tasks.cdaut.de";
port = webPort;
settings = {
service = {
enableregistration = true;
timezone = "Europe/Berlin";
sentry = false;
};
# mail settings
# TODO: BROKEN
mailer = {
enabled = true;
host = "mail.cdaut.de";
port = 587;
authtype = "plain";
username = "vikunja@cdaut.de";
fromemail = "vikunja@cdaut.de";
};
redis = {
enabled = true;
};
};
database = {
type = "postgres";
user = dbuname;
host = "localhost";
database = dbname;
};
environmentFiles = [ config.sops.templates."mail_passwd".path ];
};
postgresql = {
enable = true;
ensureUsers = [
{
name = dbuname;
ensureDBOwnership = true;
}
];
ensureDatabases = [
dbuname
];
settings.port = dbport;
authentication = pkgs.lib.mkOverride 10 ''
# TYPE DATABASE USER ADDRESS METHOD
host all all localhost trust
local all all trust
'';
};
redis = {
servers."" = {
enable = true;
};
};
};
networking.firewall.allowedTCPPorts = [
webPort
];
}