diff options
| author | Mel <mel@rnrd.eu> | 2025-09-04 04:49:00 +0200 |
|---|---|---|
| committer | Mel <mel@rnrd.eu> | 2025-09-04 04:49:00 +0200 |
| commit | d33b7b3faa9c296a3439dbe3a9d6132e7436e8b7 (patch) | |
| tree | 0b25ab67842a0559c47a6597cce927668a111482 /services/transmission.nix | |
| parent | 10c53704c80a0f8543f78684d9a32f43f395171c (diff) | |
| download | network-d33b7b3faa9c296a3439dbe3a9d6132e7436e8b7.tar.zst network-d33b7b3faa9c296a3439dbe3a9d6132e7436e8b7.zip | |
Add alternative BitTorrent client service (qBittorrent)
Signed-off-by: Mel <mel@rnrd.eu>
Diffstat (limited to 'services/transmission.nix')
| -rw-r--r-- | services/transmission.nix | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/services/transmission.nix b/services/transmission.nix deleted file mode 100644 index d761bc1..0000000 --- a/services/transmission.nix +++ /dev/null @@ -1,176 +0,0 @@ -{ - me, - config, - lib, - pkgs, - auxiliaryPkgs, - ... -}: - -let - inherit (pkgs) dockerTools; - inherit (auxiliaryPkgs) common; - - transmission = pkgs.transmission_4; - - transmissionLocalPort = 2018; - transmissionDir = "/srv/transmission"; - - mtu = 1280; - - # gluetun openvpn likes to ignore my mtu settings, - # so we set it forcefully every 15 seconds. - vpn-force-mtu = pkgs.writeTextFile { - name = "vpn-force-mtu"; - destination = "/scripts/vpn-force-mtu.sh"; - executable = true; - text = '' - #!/bin/ash - while true; do - /bin/sleep 15 - /sbin/ip link set dev tun0 mtu ${toString mtu} 2>/dev/null || true - done - ''; - }; - vpn-entry = pkgs.writeTextFile { - name = "vpn-entry"; - destination = "/scripts/vpn-entry.sh"; - executable = true; - text = '' - #!/bin/ash - /scripts/vpn-force-mtu.sh & - /gluetun-entrypoint - ''; - }; - - vpn-scripts = pkgs.symlinkJoin { - name = "vpn-scripts"; - paths = [ - vpn-entry - vpn-force-mtu - ]; - }; - - transmissionImage = dockerTools.streamLayeredImage { - name = "transmission"; - tag = transmission.version; - fromImage = common.alpine.base; - contents = [ transmission ]; - }; - - gluetunImage = common.pullImage { - name = "qmcgaw/gluetun"; - tag = "v3.39"; - digest = "sha256:6a8058e626763cbf735ac2f78c774dbb24fec2490bd9d9f7d67e22592cb4a991"; - x86.sha256 = "1cg43lmp3ql64zsfwp2f52kigijs30n3hnja12msr9npbgq8a8ga"; - }; - - vpnImage = dockerTools.streamLayeredImage { - name = "vpn"; - tag = "3.39.0-renard"; - fromImage = gluetunImage.base; - contents = [ vpn-scripts ]; - }; - - piaCountries = [ - "Albania" - "Austria" - "Belgium" - "Bosnia and Herzegovina" - "Bulgaria" - "Czech Republic" - "ES Madrid" - "ES Valencia" - "Estonia" - "Georgia" - "Greece" - "Hungary" - "IT Milano" - "Poland" - "Portugal" - "Romania" - "Serbia" - "Turkey" - "Ukraine" - ]; -in -{ - age.secrets.pia-login-secrets = { - file = ../secrets/pia-login-secrets.age; - }; - - foundation = { - networks.vpn = { - enable = true; - driver = "bridge"; - # current vpn does not support ipv6! - ipv6.enable = false; - # lower MTU to prevent packet non-deliverability - inherit mtu; - }; - - services = { - transmission = { - image = transmissionImage; - - volumes = [ - [ - "${transmissionDir}/config" - "/var/lib/transmission/config" - ] - [ - "${transmissionDir}/download" - "/var/lib/transmission/download" - ] - [ - "${transmissionDir}/torrents" - "/var/lib/transmission/torrents" - ] - ]; - - entrypoint = lib.getExe' transmission "transmission-daemon"; - cmd = [ - "--foreground" - "--config-dir" - "/var/lib/transmission/config" - ]; - - customNetworkOption = "container:vpn"; - }; - - vpn = { - network = "vpn"; - - image = vpnImage; - - ports = [ - (common.tailnetPort me [ - transmissionLocalPort - 9091 - ]) - ]; - - volumes = [ - [ - "${transmissionDir}/gluetun" - "/gluetun" - ] - ]; - - entrypoint = "/scripts/vpn-entry.sh"; - - capabilities = [ "NET_ADMIN" ]; - devices = [ "/dev/net/tun" ]; - - environment = { - VPN_SERVICE_PROVIDER = "private internet access"; - VPN_TYPE = "openvpn"; - OPENVPN_MSSFIX = toString mtu; - SERVER_REGIONS = lib.concatStringsSep "," piaCountries; - }; - - environmentFiles = [ config.age.secrets.pia-login-secrets.path ]; - }; - }; - }; -} |
