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