{ config, lib, ... }: let name = "valheim"; podman = config.profile.podman; inherit (lib) mkIf strings; ip = "10.88.200.10"; ip-hutasuhut = "10.88.200.11"; image = "docker.io/lloesche/valheim-server"; domain = "${name}.tigor.web.id"; user = config.profile.user; uid = toString user.uid; gid = toString user.gid; base_dir = "/var/lib/${name}"; base_dir_hutasuhut = "/var/lib/${name}_hutasuhut"; in lib.mkMerge [ (mkIf (podman.${name}.enable) { services.caddy.virtualHosts.${domain}.extraConfig = '' reverse_proxy ${ip}:80 ''; sops = let opts = { sopsFile = ../../secrets/valheim.yaml; }; in { secrets = { "valheim/server/password" = opts; "valheim/admins/admin_1" = opts; "valheim/admins/admin_2" = opts; "valheim/admins/admin_3" = opts; }; templates."valheim-env".content = let placeholder = config.sops.placeholder; in # sh '' SERVER_PASS=${placeholder."valheim/server/password"} ADMINLIST_IDS=${placeholder."valheim/admins/admin_1"} ${placeholder."valheim/admins/admin_2"} ${ placeholder."valheim/admins/admin_3" } ''; }; systemd.tmpfiles.settings."podman-${name}" = { ${base_dir}.d = { group = config.profile.user.name; mode = "0755"; user = config.profile.user.name; }; }; # systemd.tmpfiles.settings."podman-${name}-hutasuhut" = { # ${base_dir_hutasuhut}.d = { # group = config.profile.user.name; # mode = "0755"; # user = config.profile.user.name; # }; # }; virtualisation.oci-containers.containers.${name} = { inherit image; hostname = name; autoStart = true; ports = [ "2456:2456/udp" ]; volumes = [ "${base_dir}/config:/config" "${base_dir}/data:/opt/valheim" ]; environment = { TZ = "Asia/Jakarta"; SERVER_NAME = "Three Musketeers"; WORLD_NAME = "Bebas"; STATUS_HTTP = "true"; PUID = uid; PGID = gid; }; extraOptions = [ "--network=podman" "--ip=${ip}" "--cap-add=sys_nice" ]; environmentFiles = [ config.sops.templates."valheim-env".path ]; labels = { "io.containers.autoupdate" = "registry"; }; }; # virtualisation.oci-containers.containers."${name}-hutasuhut" = { # inherit image; # hostname = name; # autoStart = true; # ports = [ "2457:2457/udp" ]; # volumes = [ # "${base_dir_hutasuhut}/config:/config" # "${base_dir_hutasuhut}/data:/opt/valheim" # ]; # environment = { # TZ = "Asia/Jakarta"; # SERVER_NAME = "Hutasuhut"; # WORLD_NAME = "Hutasuhut"; # STATUS_HTTP = "true"; # PUID = uid; # PGID = gid; # }; # extraOptions = [ # "--network=podman" # "--ip=${ip-hutasuhut}" # "--cap-add=sys_nice" # ]; # environmentFiles = [ config.sops.templates."valheim-env".path ]; # labels = { # "io.containers.autoupdate" = "registry"; # }; # }; }) { profile.services.ntfy-sh.client.settings.subscribe = [{ topic = "valheim"; }]; } # { profile.services.ntfy-sh.client.settings.subscribe = [{ topic = "valheim-hutasuhut"; }]; } ]