at master 1.2 kB view raw
1{ lib, pkgs, ... }: 2{ 3 name = "endlessh"; 4 meta.maintainers = with lib.maintainers; [ azahi ]; 5 6 nodes = { 7 server = 8 { ... }: 9 { 10 services.endlessh = { 11 enable = true; 12 openFirewall = true; 13 }; 14 15 specialisation = { 16 unprivileged.configuration.services.endlessh.port = 2222; 17 18 privileged.configuration.services.endlessh.port = 22; 19 }; 20 }; 21 22 client = 23 { pkgs, ... }: 24 { 25 environment.systemPackages = with pkgs; [ 26 curl 27 netcat 28 ]; 29 }; 30 }; 31 32 testScript = '' 33 def activate_specialisation(name: str): 34 server.succeed(f"/run/booted-system/specialisation/{name}/bin/switch-to-configuration test >&2") 35 36 start_all() 37 38 with subtest("Unprivileged"): 39 activate_specialisation("unprivileged") 40 server.wait_for_unit("endlessh.service") 41 server.wait_for_open_port(2222) 42 client.succeed("nc -dvW5 server 2222") 43 44 with subtest("Privileged"): 45 activate_specialisation("privileged") 46 server.wait_for_unit("endlessh.service") 47 server.wait_for_open_port(22) 48 client.succeed("nc -dvW5 server 22") 49 ''; 50}