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,92 +37,79 @@ 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.interfaces.eth1.ipv4.addresses = [
|
networking.firewall.enable = false;
|
||||||
{ address = externalTrackerAddress; prefixLength = 24; }
|
networking.interfaces.eth1.ipv4.addresses = [
|
||||||
];
|
{ 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;
|
||||||
"torrentserver.org" = {
|
virtualHosts = {
|
||||||
adminAddr = "foo@example.org";
|
"torrentserver.org" = {
|
||||||
documentRoot = "/tmp";
|
adminAddr = "foo@example.org";
|
||||||
};
|
documentRoot = "/tmp";
|
||||||
};
|
|
||||||
|
|
||||||
networking.firewall.enable = false;
|
|
||||||
|
|
||||||
services.opentracker.enable = true;
|
|
||||||
|
|
||||||
services.transmission.enable = true;
|
|
||||||
services.transmission.settings.dht-enabled = false;
|
|
||||||
services.transmission.settings.port-forwaring-enabled = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
router =
|
|
||||||
{ pkgs, nodes, ... }:
|
|
||||||
{ virtualisation.vlans = [ 1 2 ];
|
|
||||||
networking.nat.enable = true;
|
|
||||||
networking.nat.internalInterfaces = [ "eth2" ];
|
|
||||||
networking.nat.externalInterface = "eth1";
|
|
||||||
networking.firewall.enable = true;
|
|
||||||
networking.firewall.trustedInterfaces = [ "eth2" ];
|
|
||||||
networking.interfaces.eth0.ipv4.addresses = [];
|
|
||||||
networking.interfaces.eth1.ipv4.addresses = [
|
|
||||||
{ address = externalRouterAddress; prefixLength = 24; }
|
|
||||||
];
|
|
||||||
networking.interfaces.eth2.ipv4.addresses = [
|
|
||||||
{ address = internalRouterAddress; prefixLength = 24; }
|
|
||||||
];
|
|
||||||
services.miniupnpd = {
|
|
||||||
enable = true;
|
|
||||||
externalInterface = "eth1";
|
|
||||||
internalIPs = [ "eth2" ];
|
|
||||||
appendConfig = ''
|
|
||||||
ext_ip=${externalRouterAddress}
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
client1 =
|
services.opentracker.enable = true;
|
||||||
{ pkgs, nodes, ... }:
|
|
||||||
{ environment.systemPackages = [ pkgs.transmission pkgs.miniupnpc ];
|
|
||||||
virtualisation.vlans = [ 2 ];
|
|
||||||
networking.interfaces.eth0.ipv4.addresses = [];
|
|
||||||
networking.interfaces.eth1.ipv4.addresses = [
|
|
||||||
{ address = internalClient1Address; prefixLength = 24; }
|
|
||||||
];
|
|
||||||
networking.defaultGateway = internalRouterAddress;
|
|
||||||
networking.firewall.enable = false;
|
|
||||||
services.transmission.enable = true;
|
|
||||||
services.transmission.settings.dht-enabled = false;
|
|
||||||
services.transmission.settings.message-level = 3;
|
|
||||||
};
|
|
||||||
|
|
||||||
client2 =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{ environment.systemPackages = [ pkgs.transmission ];
|
|
||||||
virtualisation.vlans = [ 1 ];
|
|
||||||
networking.interfaces.eth0.ipv4.addresses = [];
|
|
||||||
networking.interfaces.eth1.ipv4.addresses = [
|
|
||||||
{ address = externalClient2Address; prefixLength = 24; }
|
|
||||||
];
|
|
||||||
networking.firewall.enable = false;
|
|
||||||
services.transmission.enable = true;
|
|
||||||
services.transmission.settings.dht-enabled = false;
|
|
||||||
services.transmission.settings.port-forwaring-enabled = false;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript =
|
router = { pkgs, nodes, ... }: {
|
||||||
{ nodes, ... }:
|
virtualisation.vlans = [ 1 2 ];
|
||||||
''
|
networking.nat.enable = true;
|
||||||
|
networking.nat.internalInterfaces = [ "eth2" ];
|
||||||
|
networking.nat.externalInterface = "eth1";
|
||||||
|
networking.firewall.enable = true;
|
||||||
|
networking.firewall.trustedInterfaces = [ "eth2" ];
|
||||||
|
networking.interfaces.eth0.ipv4.addresses = [];
|
||||||
|
networking.interfaces.eth1.ipv4.addresses = [
|
||||||
|
{ address = externalRouterAddress; prefixLength = 24; }
|
||||||
|
];
|
||||||
|
networking.interfaces.eth2.ipv4.addresses = [
|
||||||
|
{ address = internalRouterAddress; prefixLength = 24; }
|
||||||
|
];
|
||||||
|
services.miniupnpd = {
|
||||||
|
enable = true;
|
||||||
|
externalInterface = "eth1";
|
||||||
|
internalIPs = [ "eth2" ];
|
||||||
|
appendConfig = ''
|
||||||
|
ext_ip=${externalRouterAddress}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
client1 = { pkgs, nodes, ... }: {
|
||||||
|
imports = [ transmissionConfig ];
|
||||||
|
environment.systemPackages = [ pkgs.miniupnpc ];
|
||||||
|
|
||||||
|
virtualisation.vlans = [ 2 ];
|
||||||
|
networking.interfaces.eth0.ipv4.addresses = [];
|
||||||
|
networking.interfaces.eth1.ipv4.addresses = [
|
||||||
|
{ address = internalClient1Address; prefixLength = 24; }
|
||||||
|
];
|
||||||
|
networking.defaultGateway = internalRouterAddress;
|
||||||
|
networking.firewall.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
client2 = { pkgs, ... }: {
|
||||||
|
imports = [ transmissionConfig ];
|
||||||
|
|
||||||
|
virtualisation.vlans = [ 1 ];
|
||||||
|
networking.interfaces.eth0.ipv4.addresses = [];
|
||||||
|
networking.interfaces.eth1.ipv4.addresses = [
|
||||||
|
{ address = externalClient2Address; prefixLength = 24; }
|
||||||
|
];
|
||||||
|
networking.firewall.enable = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = { 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