Files
cyper-nix/nixos/roles/frontpage/frontpage.nix
T

46 lines
984 B
Nix

{ config, lib, ... }:
let
mkFlameInstance =
{
name,
port,
extraVolumes ? [ ],
}:
lib.nameValuePair name {
image = "pawelmalak/flame:2.4.0";
ports = [ "${toString port}:5005" ];
volumes = [
"/var/lib/flame-${name}:/app/data"
]
++ extraVolumes;
environmentFiles = [ config.sops.secrets."flame_${name}_password".path ];
};
instances = [
{
name = "phil";
port = 15005;
extraVolumes = [ "/var/run/docker.sock:/var/run/docker.sock" ];
}
{
name = "calvin";
port = 15006;
}
];
in
{
sops.secrets = lib.listToAttrs (
map ({ name, ... }: lib.nameValuePair "flame_${name}_password" { }) instances
);
virtualisation = {
docker.enable = true;
oci-containers = {
backend = "docker";
containers = lib.listToAttrs (map mkFlameInstance instances);
};
};
networking.firewall.allowedTCPPorts = map ({ port, ... }: port) instances;
}