Skip to content

Commit adf5642

Browse files
committed
nixosTests.bittorrent: Refactor declarative part
1 parent e1b1f5a commit adf5642

1 file changed

Lines changed: 77 additions & 80 deletions

File tree

nixos/tests/bittorrent.nix

Lines changed: 77 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,17 @@ let
1818
externalRouterAddress = "80.100.100.1";
1919
externalClient2Address = "80.100.100.2";
2020
externalTrackerAddress = "80.100.100.3";
21+
22+
transmissionConfig = { ... }: {
23+
environment.systemPackages = [ pkgs.transmission ];
24+
services.transmission = {
25+
enable = true;
26+
settings = {
27+
dht-enabled = false;
28+
message-level = 3;
29+
};
30+
};
31+
};
2132
in
2233

2334
{
@@ -26,92 +37,79 @@ in
2637
maintainers = [ domenkozar eelco rob bobvanderlinden ];
2738
};
2839

29-
nodes =
30-
{ tracker =
31-
{ pkgs, ... }:
32-
{ environment.systemPackages = [ pkgs.transmission ];
33-
34-
virtualisation.vlans = [ 1 ];
35-
networking.interfaces.eth1.ipv4.addresses = [
36-
{ address = externalTrackerAddress; prefixLength = 24; }
37-
];
38-
39-
# We need Apache on the tracker to serve the torrents.
40-
services.httpd.enable = true;
41-
services.httpd.virtualHosts = {
42-
"torrentserver.org" = {
43-
adminAddr = "foo@example.org";
44-
documentRoot = "/tmp";
45-
};
40+
nodes = {
41+
tracker = { pkgs, ... }: {
42+
imports = [ transmissionConfig ];
43+
44+
virtualisation.vlans = [ 1 ];
45+
networking.firewall.enable = false;
46+
networking.interfaces.eth1.ipv4.addresses = [
47+
{ address = externalTrackerAddress; prefixLength = 24; }
48+
];
49+
50+
# We need Apache on the tracker to serve the torrents.
51+
services.httpd = {
52+
enable = true;
53+
virtualHosts = {
54+
"torrentserver.org" = {
55+
adminAddr = "foo@example.org";
56+
documentRoot = "/tmp";
4657
};
47-
48-
networking.firewall.enable = false;
49-
50-
services.opentracker.enable = true;
51-
52-
services.transmission.enable = true;
53-
services.transmission.settings.dht-enabled = false;
54-
services.transmission.settings.port-forwaring-enabled = false;
5558
};
59+
};
60+
services.opentracker.enable = true;
61+
};
5662

57-
router =
58-
{ pkgs, nodes, ... }:
59-
{ virtualisation.vlans = [ 1 2 ];
60-
networking.nat.enable = true;
61-
networking.nat.internalInterfaces = [ "eth2" ];
62-
networking.nat.externalInterface = "eth1";
63-
networking.firewall.enable = true;
64-
networking.firewall.trustedInterfaces = [ "eth2" ];
65-
networking.interfaces.eth0.ipv4.addresses = [];
66-
networking.interfaces.eth1.ipv4.addresses = [
67-
{ address = externalRouterAddress; prefixLength = 24; }
68-
];
69-
networking.interfaces.eth2.ipv4.addresses = [
70-
{ address = internalRouterAddress; prefixLength = 24; }
71-
];
72-
services.miniupnpd = {
73-
enable = true;
74-
externalInterface = "eth1";
75-
internalIPs = [ "eth2" ];
76-
appendConfig = ''
77-
ext_ip=${externalRouterAddress}
78-
'';
79-
};
80-
};
63+
router = { pkgs, nodes, ... }: {
64+
virtualisation.vlans = [ 1 2 ];
65+
networking.nat.enable = true;
66+
networking.nat.internalInterfaces = [ "eth2" ];
67+
networking.nat.externalInterface = "eth1";
68+
networking.firewall.enable = true;
69+
networking.firewall.trustedInterfaces = [ "eth2" ];
70+
networking.interfaces.eth0.ipv4.addresses = [];
71+
networking.interfaces.eth1.ipv4.addresses = [
72+
{ address = externalRouterAddress; prefixLength = 24; }
73+
];
74+
networking.interfaces.eth2.ipv4.addresses = [
75+
{ address = internalRouterAddress; prefixLength = 24; }
76+
];
77+
services.miniupnpd = {
78+
enable = true;
79+
externalInterface = "eth1";
80+
internalIPs = [ "eth2" ];
81+
appendConfig = ''
82+
ext_ip=${externalRouterAddress}
83+
'';
84+
};
85+
};
8186

82-
client1 =
83-
{ pkgs, nodes, ... }:
84-
{ environment.systemPackages = [ pkgs.transmission pkgs.miniupnpc ];
85-
virtualisation.vlans = [ 2 ];
86-
networking.interfaces.eth0.ipv4.addresses = [];
87-
networking.interfaces.eth1.ipv4.addresses = [
88-
{ address = internalClient1Address; prefixLength = 24; }
89-
];
90-
networking.defaultGateway = internalRouterAddress;
91-
networking.firewall.enable = false;
92-
services.transmission.enable = true;
93-
services.transmission.settings.dht-enabled = false;
94-
services.transmission.settings.message-level = 3;
95-
};
87+
client1 = { pkgs, nodes, ... }: {
88+
imports = [ transmissionConfig ];
89+
environment.systemPackages = [ pkgs.miniupnpc ];
90+
91+
virtualisation.vlans = [ 2 ];
92+
networking.interfaces.eth0.ipv4.addresses = [];
93+
networking.interfaces.eth1.ipv4.addresses = [
94+
{ address = internalClient1Address; prefixLength = 24; }
95+
];
96+
networking.defaultGateway = internalRouterAddress;
97+
networking.firewall.enable = false;
98+
};
9699

97-
client2 =
98-
{ pkgs, ... }:
99-
{ environment.systemPackages = [ pkgs.transmission ];
100-
virtualisation.vlans = [ 1 ];
101-
networking.interfaces.eth0.ipv4.addresses = [];
102-
networking.interfaces.eth1.ipv4.addresses = [
103-
{ address = externalClient2Address; prefixLength = 24; }
104-
];
105-
networking.firewall.enable = false;
106-
services.transmission.enable = true;
107-
services.transmission.settings.dht-enabled = false;
108-
services.transmission.settings.port-forwaring-enabled = false;
109-
};
100+
client2 = { pkgs, ... }: {
101+
imports = [ transmissionConfig ];
102+
103+
virtualisation.vlans = [ 1 ];
104+
networking.interfaces.eth0.ipv4.addresses = [];
105+
networking.interfaces.eth1.ipv4.addresses = [
106+
{ address = externalClient2Address; prefixLength = 24; }
107+
];
108+
networking.firewall.enable = false;
110109
};
110+
};
111111

112-
testScript =
113-
{ nodes, ... }:
114-
''
112+
testScript = { nodes, ... }: ''
115113
start_all()
116114
117115
# Wait for network and miniupnpd.
@@ -163,5 +161,4 @@ in
163161
"cmp /tmp/test.tar.bz2 ${file}"
164162
)
165163
'';
166-
167164
})

0 commit comments

Comments
 (0)