{ config, lib, pkgs, ... }: let hostname = "forum.test.selby.ca"; postgres-host = "france.fudo.org"; config-path = "/srv/selby-forum/conf"; redis-data-path = "/srv/selby-forum/redis-data"; sidekiq-data-path = "/srv/selby-forum/sidekiq-data"; discourse-data-path = "/srv/selby-forum/discourse-data"; in { config = { users.users = { selby-discourse = { isSystemUser = true; }; selby-discourse-redis = { isSystemUser = true; }; selby-discourse-sidekiq = { isSystemUser = true; }; }; docker-containers = { selby-discourse = { image = "bitnami/discourse"; ports = [ ]; user = toString config.users.users.selby-discourse.uid; volumes = [ "${config-path}:/opt/bitnami/discourse/mounted-conf" "${discourse-data-path}:/bitnami" ]; extraDockerOptions = [ "--network=selby-discourse" ]; environment = { DISCOURSE_SITENAME = "Selby Forum"; DISCOURSE_EMAIL = "forum@selby.ca"; DISCOURSE_HOSTNAME = hostname; }; }; selby-discourse-redis = { image = "bitnami/redis"; user = toString config.users.users.selby-discourse-redis.uid; volumes = [ "${redis-data-path}:/bitnami" ]; extraDockerOptions = [ "--network=selby-discourse" ]; environment = { ALLOW_EMPTY_PASSWORD = "yes"; }; }; selby-discourse-sidekiq = { image = "bitnami/discourse"; user = toString config.users.users.selby-discourse-sidekiq.uid; volumes = [ "${sidekiq-data-path}:/bitnami" ]; entrypoint = "nami"; cmd = [ "start" "discourse-sidekiq" ]; extraDockerOptions = [ "--network=selby-discourse" ]; }; }; systemd = { services = { # selby-discourse-config = { # description = "Generate configuration for Selby discourse server."; # requiredBy = [ "docker-selby-discourse.service" ]; # requires = [ "fudo-passwords.target" ]; # serviceConfig.Type = "oneshot"; # restartIfChanged = true; # script = ""; # }; }; }; }; }