{ config, lib, namespace, ... }: let inherit (lib.${namespace}) mkContainerService; serverName = "sparky-fitness-server"; frontendName = "sparky-fitness"; dbName = "sparky-fitness-db"; serverCfg = config.${namespace}.services.${serverName}; frontendCfg = config.${namespace}.services.${frontendName}; dbCfg = config.${namespace}.services.${dbName}; in { imports = [ (mkContainerService { inherit config; name = serverName; image = "codewithcj/sparkyfitness_server"; internalPort = 3010; volumes = [ "${serverCfg.configDir}/sparky-fitness/server/backup:/app/SparkyFitnessServer/backup" "${serverCfg.configDir}/sparky-fitness/server/uploads:/app/SparkyFitnessServer/uploads" ]; environment = { SPARKY_FITNESS_LOG_LEVEL = "0"; ALLOW_PRIVATE_NETWORK_CORS = "false"; SPARKY_FITNESS_EXTRA_TRUSTED_ORIGINS = ""; SPARKY_FITNESS_DB_USER = "sparkyfitness"; SPARKY_FITNESS_DB_HOST = "10.0.1.3"; SPARKY_FITNESS_DB_NAME = "sparkyfitness"; # TODO: move DB password and secrets to sops SPARKY_FITNESS_DB_PASSWORD = "sparkyfitness"; SPARKY_FITNESS_APP_DB_USER = "sparkyfitness"; SPARKY_FITNESS_APP_DB_PASSWORD = "sparkyfitness"; SPARKY_FITNESS_DB_PORT = "${toString dbCfg.port}"; SPARKY_FITNESS_API_ENCRYPTION_KEY = "088ab2c6487ca1048c1fe74a4d8bd906e88db56953406769426b615d6df2407b"; BETTER_AUTH_SECRET = "a0304bda5a9efd0d92595c8d46526e33d58f436408f6b70ea37c2b84308d9abe"; SPARKY_FITNESS_FRONTEND_URL = "http://10.0.1.3:${toString frontendCfg.port}"; SPARKY_FITNESS_DISABLE_SIGNUP = "false"; SPARKY_FITNESS_ADMIN_EMAIL = "jalle008@proton.me"; }; }) (mkContainerService { inherit config; name = frontendName; image = "codewithcj/sparkyfitness"; internalPort = 80; environment = { SPARKY_FITNESS_FRONTEND_URL = "http://10.0.1.3:${toString frontendCfg.port}"; SPARKY_FITNESS_SERVER_HOST = "10.0.1.3"; SPARKY_FITNESS_SERVER_PORT = "${toString serverCfg.port}"; }; }) (mkContainerService { inherit config; name = dbName; image = "postgres:15-alpine"; internalPort = 5432; volumes = [ "${dbCfg.configDir}/sparky-fitness/db:/var/lib/postgresql/data" ]; environment = { POSTGRES_DB = "sparkyfitness-db"; POSTGRES_USER = "sparkyfitness"; # TODO: move POSTGRES_PASSWORD to sops POSTGRES_PASSWORD = "sparkyfitness"; }; }) ]; }