53 lines
1.7 KiB
Nix
53 lines
1.7 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
modulesPath,
|
|
...
|
|
}: {
|
|
imports = [];
|
|
options.x = {
|
|
zulip = {
|
|
enable = true;
|
|
admin_email = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "admin+zulip@${config.networking.domain}";
|
|
};
|
|
integration = {
|
|
persistance.enable = lib.mkOption {
|
|
type = lib.types.bool;
|
|
description = "whether persistance is enabled";
|
|
default = lib.mkDefault false;
|
|
};
|
|
mailserver.enable = lib.mkOption {
|
|
type = lib.types.bool;
|
|
description = "creates simple-nixos-mailserver login automatically for admin user";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
config = let
|
|
cfg = config.x.zulip;
|
|
in
|
|
lib.mkIf cfg.enable {
|
|
services.zulip = {
|
|
enable = true;
|
|
host = "zulip.${config.networking.domain}";
|
|
camoKeyFile = builtins.toString config.age.secrets.zulip-camoKey.path;
|
|
rabbitmqPasswordFile = builtins.toString config.age.secrets.zulip-rabbitmqPassword.path;
|
|
secretKeyFile = builtins.toString config.age.secrets.zulip-secretKey.path;
|
|
sharedSecretKeyFile = builtins.toString config.age.secrets.zulip-sharedSecretKey.path;
|
|
avatarSaltKeyFile = builtins.toString config.age.secrets.zulip-avatarSaltKey.path;
|
|
zulipSettings = {
|
|
ZULIP_ADMINISTRATOR = cfg.admin_email;
|
|
EXTERNAL_HOST = "chat.${config.networking.domain}";
|
|
};
|
|
};
|
|
services.mailserver.loginAccounts = lib.mkIf cfg.integration.mailserver.enable {
|
|
"admin+zulip@${config.networking.domain}" = {
|
|
hashedPasswordFile = builtins.toString config.age.secrets.secret3.path;
|
|
};
|
|
};
|
|
};
|
|
}
|