46 lines
984 B
Nix
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;
|
|
}
|