Files
homelab/hosts/sin/transmission.nix
T
sin_serhao 95ddd2d8e9
analysis.yaml / perform flake analysis (push) Failing after 1m9s
deploy.yaml / build hive configuration (push) Failing after 30s
stable somewhat
2026-09-11 14:43:20 +02:00

112 lines
2.7 KiB
Nix

{
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
];
}