{
  hostname ? null,
}:
{ pkgs, lib, ... }:
let
  inherit (lib) optionalString;
in
{
  networking.firewall = {
    allowedTCPPorts = [
      7000
      7001
      7100
    ];
    allowedUDPPorts = [
      5353
      6000
      6001
      7011
    ];
  };

  environment.systemPackages = with pkgs; [
    uxplay
  ];

  systemd.user.services.uxplay = {
    wantedBy = [ "default.target" ];
    serviceConfig = {
      Restart = "on-failure";
      RestartSec = 5;
      Type = "simple";
      ExecStart = "${pkgs.uxplay}/bin/uxplay ${
        optionalString (hostname != null) "-n ${hostname}"
      } -fps 60 -nh -p";
    };
  };

  services.avahi = {
    enable = true;
    openFirewall = true;
    nssmdns4 = true;
    publish = {
      enable = true;
      addresses = true;
      workstation = true;
      userServices = true;
      domain = true;
    };
  };
}
