{ name = "networking"; nodes = { a = { pkgs, ... }: { }; b = { config, pkgs, lib, ... }: { networking.interfaces.eth1.genode.stack = null; genode.init.children.ping = { inputs = with pkgs.genodePackages; [ ping ]; routeToNics = [ "eth1" ]; configFile = let ipA = builtins.head config.networking.interfaces.eth1.ipv4.addresses; ipAddrB = with builtins; head (attrNames (lib.attrsets.filterAttrs (name: (any (host: host == "a"))) config.networking.hosts)); in pkgs.writeText "ping.dhall" '' let Genode = env:DHALL_GENODE let Init = Genode.Init let Child = Init.Child in Child.flat Child.Attributes::{ , binary = "ping" , resources = Init.Resources::{ ram = Genode.units.MiB 8 } , config = Init.Config::{ , attributes = toMap { interface = "${ipA.address}/${ toString ipA.prefixLength }" , dst_ip = "${ipAddrB}" , period_sec = "1" , count = "10" , verbose = "yes" } } } ''; }; }; }; testScript = '' a.start() a.wait_until_serial_output('lwIP Nic interface up address=192.168.1.1') b.start() b.wait_until_serial_output('child "ping" exited with exit value 0') ''; }