feat(amy): add configs for zulip
This commit is contained in:
parent
1acf766012
commit
6216c95200
9 changed files with 121 additions and 1 deletions
|
@ -152,6 +152,7 @@
|
||||||
./roles/keycloak.nix
|
./roles/keycloak.nix
|
||||||
./roles/podman.nix
|
./roles/podman.nix
|
||||||
./roles/postgres.nix
|
./roles/postgres.nix
|
||||||
|
./roles/zulip.nix
|
||||||
home-manager-stable.nixosModules.home-manager
|
home-manager-stable.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
services.redis.servers.iceshrimp = {
|
services.redis.servers.iceshrimp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
port = 6380;
|
port = 6380;
|
||||||
bind = "100.93.214.57";
|
bind = "0.0.0.0";
|
||||||
settings.protected-mode = "no";
|
settings.protected-mode = "no";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -4,4 +4,5 @@
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
podman-compose
|
podman-compose
|
||||||
];
|
];
|
||||||
|
networking.firewall.trustedInterfaces = ["podman0"];
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
# ipv4
|
# ipv4
|
||||||
host all all 127.0.0.1/32 scram-sha-256
|
host all all 127.0.0.1/32 scram-sha-256
|
||||||
host all all 100.64.0.0/10 scram-sha-256
|
host all all 100.64.0.0/10 scram-sha-256
|
||||||
|
host all all 10.0.0.0/8 scram-sha-256
|
||||||
# ipv6
|
# ipv6
|
||||||
host all all ::1/128 scram-sha-256
|
host all all ::1/128 scram-sha-256
|
||||||
'';
|
'';
|
||||||
|
|
30
roles/zulip-db.nix
Normal file
30
roles/zulip-db.nix
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{ config, pkgs, ... }: {
|
||||||
|
services.postgresql = {
|
||||||
|
extraPlugins = ps: with ps; [
|
||||||
|
pgroonga
|
||||||
|
(pkgs.stdenv.mkDerivation {
|
||||||
|
name = "zulip-dicts";
|
||||||
|
phases = "installPhase";
|
||||||
|
src = pkgs.fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/zulip/zulip/dd678465aed915101f9a74054e28535bbdd88ba3/puppet/zulip/files/postgresql/zulip_english.stop";
|
||||||
|
hash = "sha256-F3CmCRkkPURN9Uo7KIFxkajSJsiTYQg1wubKCF2+bAs=";
|
||||||
|
};
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/share/postgresql/tsearch_data/
|
||||||
|
ln -s ${pkgs.hunspellDicts.en_US}/share/hunspell/en_US.dic $out/share/postgresql/tsearch_data/en_us.dict
|
||||||
|
ln -s ${pkgs.hunspellDicts.en_US}/share/hunspell/en_US.aff $out/share/postgresql/tsearch_data/en_us.affix
|
||||||
|
cp $src $out/share/postgresql/tsearch_data/zulip_english.stop
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
ensureDatabases = [ "zulip" ];
|
||||||
|
ensureUsers = [
|
||||||
|
{
|
||||||
|
name = "zulip";
|
||||||
|
ensureDBOwnership = true;
|
||||||
|
ensureClauses.login = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
77
roles/zulip.nix
Normal file
77
roles/zulip.nix
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
{ config, pkgs, ... }: {
|
||||||
|
imports = [ ./zulip-db.nix ];
|
||||||
|
|
||||||
|
age.secrets.zulip-env.file = ../secrets/zulip-env.age;
|
||||||
|
age.secrets.zulip-redis.file = ../secrets/zulip-redis.age;
|
||||||
|
|
||||||
|
services.memcached = {
|
||||||
|
enable = true;
|
||||||
|
listen = "0.0.0.0";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.rabbitmq = {
|
||||||
|
enable = true;
|
||||||
|
listenAddress = "::";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.redis.servers.zulip = {
|
||||||
|
enable = true;
|
||||||
|
port = 6381;
|
||||||
|
bind = "0.0.0.0";
|
||||||
|
# TODO: move to agenix secret
|
||||||
|
requirePassFile = config.age.secrets.zulip-redis.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation.oci-containers.containers.zulip = {
|
||||||
|
image = "zulip/docker-zulip:8.4-0";
|
||||||
|
autoStart = false;
|
||||||
|
environment = {
|
||||||
|
DB_HOST = "host.containers.internal";
|
||||||
|
DB_HOST_PORT = "5432";
|
||||||
|
DB_USER = "zulip";
|
||||||
|
|
||||||
|
SETTING_MEMCACHED_LOCATION = "host.containers.internal:11211";
|
||||||
|
SETTING_RABBITMQ_HOST = "host.containers.internal";
|
||||||
|
SETTING_RABBITMQ_USERNAME = "zulip";
|
||||||
|
SETTING_REDIS_HOST = "host.containers.internal";
|
||||||
|
SETTING_REDIS_PORT = "6381";
|
||||||
|
|
||||||
|
SETTING_EXTERNAL_HOST = "chat.shorks.gay";
|
||||||
|
SETTING_ZULIP_ADMINISTRATOR = "zulip@shorks.gay";
|
||||||
|
|
||||||
|
DISABLE_HTTPS = "true";
|
||||||
|
SSL_CERTIFICATE_GENERATION = "self-signed";
|
||||||
|
LOADBALANCER_IPS = "100.64.0.0/10,10.0.0.0/8";
|
||||||
|
QUEUE_WORKERS_MULTIPROCESS = "false";
|
||||||
|
|
||||||
|
SETTING_EMAIL_HOST = "smtp.migadu.com";
|
||||||
|
SETTING_EMAIL_HOST_USER = "shorks@shorks.gay";
|
||||||
|
SETTING_EMAIL_USE_TLS = "True";
|
||||||
|
SETTING_EMAIL_PORT = "465";
|
||||||
|
SETTING_ADD_TOKENS_TO_NOREPLY_ADDRESS = "True";
|
||||||
|
SETTING_TOKENIZED_NOREPLY_EMAIL_ADDRESS = "chat+{token}@shorks.gay";
|
||||||
|
SETTING_NOREPLY_EMAIL_ADDRESS = "chat@shorks.gay";
|
||||||
|
SETTING_INSTALLATION_NAME = "shorks.gay zulip";
|
||||||
|
SETTING_SOCIAL_AUTH_OIDC_ENABLED_IDPS = ''{
|
||||||
|
"keycloak": {
|
||||||
|
"oidc_url": "https://account.shorks.gay/realms/shorks/",
|
||||||
|
"display_name": "shorks.gay account",
|
||||||
|
"display_icon": None,
|
||||||
|
"client_id": "zulip",
|
||||||
|
"secret": get_secret("social_auth_oidc_secret"),
|
||||||
|
}
|
||||||
|
}'';
|
||||||
|
|
||||||
|
ZULIP_AUTH_BACKENDS = "GenericOpenIdConnectBackend";
|
||||||
|
};
|
||||||
|
environmentFiles = [
|
||||||
|
config.age.secrets.zulip-env.path
|
||||||
|
];
|
||||||
|
ports = [
|
||||||
|
"8080:80"
|
||||||
|
];
|
||||||
|
volumes = [
|
||||||
|
"/var/lib/zulip:/data"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -8,4 +8,6 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
"keycloakPostgres.age".publicKeys = users ++ systems;
|
"keycloakPostgres.age".publicKeys = users ++ systems;
|
||||||
|
"zulip-redis.age".publicKeys = users ++ systems;
|
||||||
|
"zulip-env.age".publicKeys = users ++ systems;
|
||||||
}
|
}
|
||||||
|
|
BIN
secrets/zulip-env.age
Normal file
BIN
secrets/zulip-env.age
Normal file
Binary file not shown.
8
secrets/zulip-redis.age
Normal file
8
secrets/zulip-redis.age
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 CEw3Tw 8WPerIwjvZEtJuC4m1cUqHgIiTGjTZfV1k3ohZn9ni0
|
||||||
|
bj6iQvWtO2gP79DrHYECA0Pl8tzN/ArGT/dbe1pM9Hc
|
||||||
|
-> ssh-ed25519 8o9woQ FtOzkNfHgBL/RA63DrSMd9ZJPoBjdY691ISrwgXnLUw
|
||||||
|
rXo7ofH9ZG1Nx5H4p+xBQhmUUh4Dz0wzGftRw58zCas
|
||||||
|
--- NjD1Cw5pZK+fnhWT6TCF0TbiRN79brRwzP9GkU3wC9U
|
||||||
|
búñpbÿÅßöµ<EFBFBD>(½‹¡ð·;³ÇpþîÒß·\è)ÚëüÄþûb)/ÐcœJ\¿„ü½ÐX):.<2E>DŠr,N
|
||||||
|
‚@h¼°öÇ.µx×d=iÆiÁ½
B ùú:’úÁþ
|
Loading…
Reference in a new issue