{ config, pkgs, lib, ... }: { users.users."starr" = { extraGroups = [ "transmission" ]; }; users.users.transmission = { isSystemUser = true; group = "transmission"; uid = 992; }; users.groups = { transmission.gid = 989; }; # systemd.services = { # docker-transmission-network = { # after = [ # "network.target" # "docker-gluetun.service" # "docker-transmission.service" # ]; # wantedBy = [ # "docker-gluetun.service" # "docker-transmission.service" # ]; # serviceConfig = { # ExecStart = "${lib.getExe pkgs.docker} network create docker-transmission; exit 0"; # }; # }; # }; virtualisation.oci-containers = let peerport = "44161"; webport = "44160"; in { backend = "docker"; containers = { gluetun = { image = "qmcgaw/gluetun:latest"; environment = { VPN_SERVICE_PROVIDER = "airvpn"; VPN_TYPE = "wireguard"; SERVER_NAMES = "Taiyangshou"; FIREWALL_VPN_INPUT_PORTS = "${peerport},${webport}"; TZ = "Europe/Paris"; }; environmentFiles = [ config.age.secrets.airvpn-params.path ]; extraOptions = [ "--cap-add=NET_ADMIN" "--device=/dev/net/tun" # "--network=docker-transmission" ]; ports = [ "13277:13277" "${webport}:${webport}" "${peerport}:${peerport}" "${peerport}:${peerport}/udp" ]; volumes = [ "/etc/gluetun:/gluetun" ]; }; qbittorrent = { image = "lscr.io/linuxserver/qbittorrent:latest"; volumes = [ "/etc/localtime:/etc/localtime:ro" "/mnt/mediacenter/torrents:/mnt/mediacenter/torrents" "/mnt/data/transmission_downloads:/mnt/data/transmission_downloads" "/mnt/data/downloads:/downloads" "/etc/qbittorrent:/config" ]; dependsOn = [ "gluetun" ]; extraOptions = [ "--network=container:gluetun" # "-u=992:989" # "-u=${toString config.users.users.transmission.uid}:${toString config.users.groups.starr.gid}" ]; environment = { PUID = toString config.users.users.transmission.uid; PGID = toString config.users.groups.starr.gid; TZ = "Europe/Paris"; WEBUI_PORT = "${webport}"; TORRENTING_PORT = "${peerport}"; }; }; }; }; networking.firewall.allowedTCPPorts = [ 44160 13277 ]; }