nixosTests.bittorrent: Refactor declarative part
This commit is contained in:
parent
e1b1f5a484
commit
adf5642ba6
|
@ -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}"
|
||||||
)
|
)
|
||||||
'';
|
'';
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue