{ pkgs, ... }:
{
  name = "smokeping";
  meta = with pkgs.lib.maintainers; {
    maintainers = [ cransom ];
  };

  nodes = {
    sm =
      { ... }:
      {
        networking.domain = "example.com"; # FQDN: sm.example.com
        services.smokeping = {
          enable = true;
          mailHost = "127.0.0.2";
          probeConfig = ''
            + FPing
            binary = /run/wrappers/bin/fping
            offset = 0%
          '';
        };
      };
  };

  testScript = ''
    start_all()
    sm.wait_for_unit("smokeping")
    sm.wait_for_unit("nginx")
    sm.wait_for_file("/var/lib/smokeping/data/Local/LocalMachine.rrd")
    sm.succeed("curl -s -f localhost/smokeping.fcgi?target=Local")
    # Check that there's a helpful page without explicit path as well.
    sm.succeed("curl -s -f localhost")
    sm.succeed("ls /var/lib/smokeping/cache/Local/LocalMachine_mini.png")
    sm.succeed("ls /var/lib/smokeping/cache/index.html")

    # stop and start the service like nixos-rebuild would do
    # see https://github.com/NixOS/nixpkgs/issues/265953)
    sm.succeed("systemctl stop smokeping")
    sm.succeed("systemctl start smokeping")
    # ensure all services restarted properly
    sm.succeed("systemctl --failed | grep -q '0 loaded units listed'")
  '';
}
