76 lines
2.5 KiB
Nix
76 lines
2.5 KiB
Nix
{ 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" = {};
|
|
};
|
|
};
|
|
};
|
|
routerName = if containerCfg.subpath != null
|
|
then "${containerCfg.subdomain}-${lib.strings.sanitizeDerivationName containerCfg.subpath}"
|
|
else containerCfg.subdomain;
|
|
in {
|
|
paths = [{
|
|
path = "${serverCfg.dataPath}/transmission/complete";
|
|
owner = "1000:1000";
|
|
mode = "0755";
|
|
}{
|
|
path = "${serverCfg.dataPath}/transmission/incomplete";
|
|
owner = "1000:1000";
|
|
mode = "0755";
|
|
}{
|
|
path = "${serverCfg.configPath}/transmission/config";
|
|
owner = "1000:1000";
|
|
mode = "0755";
|
|
}];
|
|
|
|
containers = {
|
|
server = builder.mkContainer {
|
|
subdomain = containerCfg.subdomain;
|
|
subpath = containerCfg.subpath;
|
|
imageStream = image;
|
|
port = 9091;
|
|
|
|
extraEnv = {
|
|
PUID = "1000";
|
|
PGID = "1000";
|
|
WHITELIST = "";# 127.0.0.1,::1,10.*";
|
|
# HOST_WHITELIST = "traefik-server,authentik-server,authentik-worker";
|
|
};
|
|
extraLabels = {
|
|
"traefik.http.routers.${routerName}.middlewares" = "transmission-rewrite";
|
|
"traefik.http.middlewares.transmission-rewrite.replacepathregex.regex" = "^/p2p(.*)";
|
|
"traefik.http.middlewares.transmission-rewrite.replacepathregex.replacement" = "/transmission/web$$1";
|
|
} // (if serverCfg.containers ? authentik then {
|
|
"traefik.http.routers.${routerName}.middlewares" = "authentik,transmission-rewrite";
|
|
} else {});
|
|
|
|
overrides = {
|
|
cmd = [ ];
|
|
volumes = [
|
|
"${serverCfg.dataPath}/transmission/complete:/downloads/complete"
|
|
"${serverCfg.dataPath}/transmission/incomplete:/downloads/incomplete"
|
|
"${serverCfg.configPath}/transmission/config:/config"
|
|
];
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
setup = {
|
|
trigger = "server";
|
|
envFile = [ config.sops.secrets."CUSTOM".path ];
|
|
script = pkgs.writeShellScript "setup" ''
|
|
|
|
${pkgs.gettext}/bin/envsubst < "${../data/transmission/settings.json}" > "${serverCfg.configPath}/transmission/config/settings.json"
|
|
'';
|
|
};
|
|
|
|
} |