infra/config/services/containers.nix

56 lines
1.5 KiB
Nix

{config, ...}: let
ghcrLogin = {
registry = "ghcr.io";
username = "nekowinston";
passwordFile = config.age.secrets."containers/ghcr-token".path;
};
websitePort = "14139";
in {
virtualisation = {
podman = {
enable = true;
autoPrune = {
enable = true;
dates = "03:30";
};
};
oci-containers = {
backend = "podman";
containers = {
faerber-bot = {
image = "ghcr.io/nekowinston/faerber/faerber-discord-bot:latest";
environmentFiles = [config.age.secrets."containers/faerber.env".path];
extraOptions = ["--label=\"io.containers.autoupdate=registry\""];
};
pepperjack = {
image = "ghcr.io/phasecorex/red-discordbot:latest";
environment = {
TOKEN = "~";
OWNER = "505490445468696576";
};
environmentFiles = [config.age.secrets."containers/pepperjack.env".path];
volumes = ["/srv/data-pepperjack:/data"];
extraOptions = ["--label=\"io.containers.autoupdate=registry\""];
};
website = {
image = "ghcr.io/nekowinston/winston.sh/winston-sh:latest";
login = ghcrLogin;
ports = ["127.0.0.1:${websitePort}:3000"];
extraOptions = ["--label=\"io.containers.autoupdate=registry\""];
};
};
};
};
services.nginx.virtualHosts."winston.sh" = {
locations."/".proxyPass = "http://127.0.0.1:${websitePort}";
forceSSL = true;
enableACME = false;
useACMEHost = "winston.sh";
};
}