{
  pkgs,
  nixosLib,
  clan-core,
  ...
}:
nixosLib.runTest (
  { ... }:
  {
    imports = [
      clan-core.modules.nixosTest.clanTest
    ];

    hostPkgs = pkgs;

    name = "service-mycelium";

    clan = {
      test.useContainers = false;
      directory = ./.;
      modules."@clan/mycelium" = ../../clanServices/mycelium/default.nix;
      inventory = {
        machines.server = { };

        instances = {
          mycelium-test = {
            module.name = "@clan/mycelium";
            module.input = "self";
            roles.peer.machines."server".settings = {
              openFirewall = true;
              addHostedPublicNodes = true;
            };
          };
        };
      };
    };

    nodes = {
      server = { };
    };

    testScript = ''
      start_all()

      # Check that mycelium service is running
      server.wait_for_unit("mycelium")
      server.succeed("systemctl status mycelium")

      # Check that mycelium is listening on its default port
      server.wait_until_succeeds("${pkgs.iproute2}/bin/ss -tulpn | grep -q 'mycelium'", 10)
    '';
  }
)
