summaryrefslogtreecommitdiffstats
path: root/hosts/poweredge/transmission.nix
blob: 047a3ab3ba6cd38a7b2c518fe85ad74f814d4a00 (plain)
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
67
68
69
70
71
72
73
74
75
{
	# Container
	containers.transmission = let
		home = "/var/lib/transmission";
		download-dir = "${home}/Downloads";
		incomplete-dir = "${home}/.incomplete";
	in {
		autoStart = true;
		privateNetwork = true;
		hostBridge = "br-lan0";
		localMacAddress = "02:00:00:00:01:47";

		# Download dirs
		bindMounts = {
			"${download-dir}" = {
				hostPath = "/media/ingens/media/dls/transmission/complete";
				isReadOnly = false;
			};
			"${incomplete-dir}" = {
				hostPath = "/media/ingens/media/dls/transmission/incomplete";
				isReadOnly = false;
			};
			"/media/ingens/media" = {
				hostPath = "/media/ingens/media";
				isReadOnly = false;
			};
		};

		config = { lib, ... }: {
			# Network
			networking = {
				enableIPv6 = false;  # Prevent ip leaks
				firewall.allowedTCPPorts = [ 80 51413 ];  # RPC interface + transmission tcp
				firewall.allowedUDPPorts = [ 51413 ];  # transmission udp
				# Override dhcp server settings for default route and dns servers with static settings
				interfaces.eth0.useDHCP = true;
				dhcpcd.extraConfig = ''
					interface eth0
					static routers=192.168.1.9
					static domain_name_servers=9.9.9.9 1.1.1.1
				'';
				#defaultGateway = "192.168.1.9";  # Doesn't work, see above
				#nameservers = [ "9.9.9.9" "1.1.1.1" ];  # Does work, above prevents using dhcp default nameserver
			};

			# Transmission
			services.transmission = {
				inherit home;
				enable = true;
				user = "transmission";

				settings = {
					inherit download-dir incomplete-dir;
					downloadDirPermissions = "775";
				};
			};

			# TODO remove (#258793)
			systemd.services.transmission.serviceConfig = {
				RootDirectoryStartOnly = lib.mkForce null;
				RootDirectory = lib.mkForce null;
			};

			# Reverse proxy
			services.caddy = {
				enable = true;
				virtualHosts.":80".extraConfig = ''
					reverse_proxy localhost:9091
				'';
			};

			system.stateVersion = "26.05";
		};
	};
}