nixosTests.bittorrent: Refactor declarative part

This commit is contained in:
Jacek Galowicz 2020-01-14 10:18:58 +01:00
parent e1b1f5a484
commit adf5642ba6
1 changed files with 78 additions and 81 deletions

View File

@ -18,6 +18,17 @@ let
externalRouterAddress = "80.100.100.1"; externalRouterAddress = "80.100.100.1";
externalClient2Address = "80.100.100.2"; externalClient2Address = "80.100.100.2";
externalTrackerAddress = "80.100.100.3"; externalTrackerAddress = "80.100.100.3";
transmissionConfig = { ... }: {
environment.systemPackages = [ pkgs.transmission ];
services.transmission = {
enable = true;
settings = {
dht-enabled = false;
message-level = 3;
};
};
};
in in
{ {
@ -26,37 +37,31 @@ in
maintainers = [ domenkozar eelco rob bobvanderlinden ]; maintainers = [ domenkozar eelco rob bobvanderlinden ];
}; };
nodes = nodes = {
{ tracker = tracker = { pkgs, ... }: {
{ pkgs, ... }: imports = [ transmissionConfig ];
{ environment.systemPackages = [ pkgs.transmission ];
virtualisation.vlans = [ 1 ]; virtualisation.vlans = [ 1 ];
networking.firewall.enable = false;
networking.interfaces.eth1.ipv4.addresses = [ networking.interfaces.eth1.ipv4.addresses = [
{ address = externalTrackerAddress; prefixLength = 24; } { address = externalTrackerAddress; prefixLength = 24; }
]; ];
# We need Apache on the tracker to serve the torrents. # We need Apache on the tracker to serve the torrents.
services.httpd.enable = true; services.httpd = {
services.httpd.virtualHosts = { enable = true;
virtualHosts = {
"torrentserver.org" = { "torrentserver.org" = {
adminAddr = "foo@example.org"; adminAddr = "foo@example.org";
documentRoot = "/tmp"; documentRoot = "/tmp";
}; };
}; };
};
networking.firewall.enable = false;
services.opentracker.enable = true; services.opentracker.enable = true;
services.transmission.enable = true;
services.transmission.settings.dht-enabled = false;
services.transmission.settings.port-forwaring-enabled = false;
}; };
router = router = { pkgs, nodes, ... }: {
{ pkgs, nodes, ... }: virtualisation.vlans = [ 1 2 ];
{ virtualisation.vlans = [ 1 2 ];
networking.nat.enable = true; networking.nat.enable = true;
networking.nat.internalInterfaces = [ "eth2" ]; networking.nat.internalInterfaces = [ "eth2" ];
networking.nat.externalInterface = "eth1"; networking.nat.externalInterface = "eth1";
@ -79,9 +84,10 @@ in
}; };
}; };
client1 = client1 = { pkgs, nodes, ... }: {
{ pkgs, nodes, ... }: imports = [ transmissionConfig ];
{ environment.systemPackages = [ pkgs.transmission pkgs.miniupnpc ]; environment.systemPackages = [ pkgs.miniupnpc ];
virtualisation.vlans = [ 2 ]; virtualisation.vlans = [ 2 ];
networking.interfaces.eth0.ipv4.addresses = []; networking.interfaces.eth0.ipv4.addresses = [];
networking.interfaces.eth1.ipv4.addresses = [ networking.interfaces.eth1.ipv4.addresses = [
@ -89,29 +95,21 @@ in
]; ];
networking.defaultGateway = internalRouterAddress; networking.defaultGateway = internalRouterAddress;
networking.firewall.enable = false; networking.firewall.enable = false;
services.transmission.enable = true;
services.transmission.settings.dht-enabled = false;
services.transmission.settings.message-level = 3;
}; };
client2 = client2 = { pkgs, ... }: {
{ pkgs, ... }: imports = [ transmissionConfig ];
{ environment.systemPackages = [ pkgs.transmission ];
virtualisation.vlans = [ 1 ]; virtualisation.vlans = [ 1 ];
networking.interfaces.eth0.ipv4.addresses = []; networking.interfaces.eth0.ipv4.addresses = [];
networking.interfaces.eth1.ipv4.addresses = [ networking.interfaces.eth1.ipv4.addresses = [
{ address = externalClient2Address; prefixLength = 24; } { address = externalClient2Address; prefixLength = 24; }
]; ];
networking.firewall.enable = false; networking.firewall.enable = false;
services.transmission.enable = true;
services.transmission.settings.dht-enabled = false;
services.transmission.settings.port-forwaring-enabled = false;
}; };
}; };
testScript = testScript = { nodes, ... }: ''
{ nodes, ... }:
''
start_all() start_all()
# Wait for network and miniupnpd. # Wait for network and miniupnpd.
@ -163,5 +161,4 @@ in
"cmp /tmp/test.tar.bz2 ${file}" "cmp /tmp/test.tar.bz2 ${file}"
) )
''; '';
}) })