diff --git a/modules/server/containers/apps/transmission.nix b/modules/server/containers/apps/transmission.nix index 6d83f94..f59b20e 100644 --- a/modules/server/containers/apps/transmission.nix +++ b/modules/server/containers/apps/transmission.nix @@ -1,3 +1,57 @@ -{...}:{ - +{ config, containerCfg, pkgs, lib, builder, name, ... }: +let + serverCfg = config.syscfg.server; + image = pkgs.dockerTools.streamLayeredImage { + name = pkgs.transmission_4.name; + tag = pkgs.transmission_4.version; + contents = [ pkgs.cacert ]; + config = { + Cmd = [ "${pkgs.transmission_4}/bin/transmission-daemon" "--foreground" "--config-dir" "/config" ]; + ExposedPorts = { + "9091/tcp" = {}; + "51413/tcp" = {}; "51413/udp" = {}; + }; + }; + }; +in { + paths = [{ + path = "${serverCfg.dataPath}/transmission/complete"; + owner = "1000:1000"; + mode = "0755"; + }{ + path = "${serverCfg.dataPath}/transmission/incomplete"; + owner = "1000:1000"; + mode = "0755"; + }{ + path = "${serverCfg.dataPath}/transmission/config"; + owner = "1000:1000"; + mode = "0755"; + }]; + + containers = { + server = builder.mkContainer { + subdomain = containerCfg.subdomain; + imageStream = image; + port = 9091; + + extraEnv = { + PUID = "1000"; + PGID = "1000"; + TZ = "Europe/Zurich"; + }; + extraLabels = { } // (if serverCfg.containers ? authentik then { + "traefik.http.routers.${containerCfg.subdomain}.middlewares" = "authentik"; + } else {}); + + overrides = { + cmd = [ ]; + volumes = [ + "${serverCfg.dataPath}/transmission/complete:/downloads/complete" + "${serverCfg.dataPath}/transmission/incomplete:/downloads/incomplete" + "${serverCfg.dataPath}/transmission/config:/config" + ]; + }; + }; + }; + } \ No newline at end of file