1import ../make-test-python.nix (
2 { lib, ... }:
3 let
4 peer1-ip = "538:f40f:1c51:9bd9:9569:d3f6:d0a1:b2df";
5 peer2-ip = "5b6:6776:fee0:c1f3:db00:b6a8:d013:d38f";
6 in
7 {
8 name = "mycelium";
9 meta.maintainers = with lib.maintainers; [ lassulus ];
10
11 nodes = {
12
13 peer1 =
14 { config, pkgs, ... }:
15 {
16 virtualisation.vlans = [ 1 ];
17 networking.interfaces.eth1.ipv4.addresses = [
18 {
19 address = "192.168.1.11";
20 prefixLength = 24;
21 }
22 ];
23
24 services.mycelium = {
25 enable = true;
26 addHostedPublicNodes = false;
27 openFirewall = true;
28 keyFile = ./peer1.key;
29 peers = [
30 "quic://192.168.1.12:9651"
31 "tcp://192.168.1.12:9651"
32 ];
33 };
34 };
35
36 peer2 =
37 { config, pkgs, ... }:
38 {
39 virtualisation.vlans = [ 1 ];
40 networking.interfaces.eth1.ipv4.addresses = [
41 {
42 address = "192.168.1.12";
43 prefixLength = 24;
44 }
45 ];
46
47 services.mycelium = {
48 enable = true;
49 addHostedPublicNodes = false;
50 openFirewall = true;
51 keyFile = ./peer2.key;
52 };
53 };
54 };
55
56 testScript = ''
57 start_all()
58
59 peer1.wait_for_unit("network-online.target")
60 peer2.wait_for_unit("network-online.target")
61 peer1.wait_for_unit("mycelium.service")
62 peer2.wait_for_unit("mycelium.service")
63
64 peer1.succeed("mycelium peers list | grep 192.168.1.12")
65 peer2.succeed("mycelium peers list | grep 192.168.1.11")
66
67 peer1.succeed("ping -c5 ${peer2-ip}")
68 peer2.succeed("ping -c5 ${peer1-ip}")
69 '';
70 }
71)