at master 1.6 kB view raw
1{ pkgs, ... }: 2 3let 4 client = 5 { pkgs, ... }: 6 7 { 8 imports = [ ./common/x11.nix ]; 9 hardware.graphics.enable = true; 10 environment.systemPackages = [ pkgs.openarena ]; 11 }; 12 13in 14{ 15 name = "openarena"; 16 meta = with pkgs.lib.maintainers; { 17 maintainers = [ fpletz ]; 18 }; 19 20 nodes = { 21 server = { 22 services.openarena = { 23 enable = true; 24 extraFlags = [ 25 "+set g_gametype 0" 26 "+map oa_dm7" 27 "+addbot Angelyss" 28 "+addbot Arachna" 29 ]; 30 openPorts = true; 31 }; 32 }; 33 34 client1 = client; 35 client2 = client; 36 }; 37 38 testScript = '' 39 start_all() 40 41 server.wait_for_unit("openarena") 42 server.wait_until_succeeds("ss --numeric --udp --listening | grep -q 27960") 43 44 client1.wait_for_x() 45 client2.wait_for_x() 46 47 client1.execute("openarena +set r_fullscreen 0 +set name Foo +connect server >&2 &") 48 client2.execute("openarena +set r_fullscreen 0 +set name Bar +connect server >&2 &") 49 50 server.wait_until_succeeds( 51 "journalctl -u openarena -e | grep -q 'Foo.*entered the game'" 52 ) 53 server.wait_until_succeeds( 54 "journalctl -u openarena -e | grep -q 'Bar.*entered the game'" 55 ) 56 57 server.sleep(10) # wait for a while to get a nice screenshot 58 59 client1.screenshot("screen_client1_1") 60 client2.screenshot("screen_client2_1") 61 62 client1.block() 63 64 server.sleep(10) 65 66 client1.screenshot("screen_client1_2") 67 client2.screenshot("screen_client2_2") 68 69 client1.unblock() 70 71 server.sleep(10) 72 73 client1.screenshot("screen_client1_3") 74 client2.screenshot("screen_client2_3") 75 ''; 76 77}