system/roles/torrent-client.nix (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | {
config,
lib,
pkgs,
...
}:
let
inherit (config.networking) domain fqdn;
inherit (import ../../data) homenet tailnet;
cfg = config.services.transmission;
storeDir = "/data/transmission";
in
{
services.transmission = {
enable = true;
openPeerPorts = true;
webHome = pkgs.trgui-ng-web;
performanceNetParameters = true;
settings = {
utp-enabled = false;
download-dir = "${storeDir}/complete";
incomplete-dir = "${storeDir}/downloads";
incomplete-dir-enabled = false;
watch-dir = "${storeDir}/watch";
watch-dir-enabled = true;
trash-original-torrent-files = false;
rpc-bind-address = "[::1]";
rpc-whitelist-enabled = false;
rpc-host-whitelist-enabled = false;
};
};
systemd.services.transmission = {
serviceConfig = {
LimitNOFILE = 524288;
};
};
systemd.tmpfiles.rules = [
"d ${storeDir} 0755 ${cfg.user} ${cfg.group}"
"d ${cfg.settings.download-dir} 0755 ${cfg.user} ${cfg.group}"
"d ${cfg.settings.incomplete-dir} 0755 ${cfg.user} ${cfg.group}"
"d ${cfg.settings.watch-dir} 0777 ${cfg.user} ${cfg.group}"
];
services.caddy.virtualHosts =
let
upstream = ''
reverse_proxy [::1]:${toString cfg.settings.rpc-port}
'';
in
{
"bt.${tailnet}" = {
extraConfig = ''
bind tailscale/bt
tls {
get_certificate tailscale
}
${upstream}
'';
};
};
}
|