{pkgs, ...}: let
  gamePath = "/var/lib/steam-servers/7-days-to-die";
  relativeConfig = "serverconfig-7days.xml";
in {
  services.borgbackup.configs."seven-days" = {
    paths = ["/var/lib/steam-servers/7-days-to-die"];
    startAt = "02/3:00";
  };

  nixpkgs.overlays = [
    (final: prev: {
      steam = prev.steam.override {
        extraPreBwrapCmds = ''
          mkdir -p "$HOME/.local/share/sevendays/"
        '';
        extraBwrapArgs = [
          ''--bind "${gamePath}/" "$HOME/.local/share/sevendays/"''
        ];
      };
    })
  ];

  systemd = {
    extraConfig = "DefaultLimitNOFILE=10240";

    services."7-days-to-die" = {
      wantedBy = ["multi-user.target"];

      serviceConfig = {
        User = "matt";
        Group = "users";
      };

      path = builtins.attrValues {
        inherit
          (pkgs)
          steam-run
          steamcmd
          ;
      };

      script = ''
        # Install / Update server
        steamcmd +force_install_dir "$HOME/.local/share/sevendays" \
            +login anonymous +app_update 294420 \
            +quit

        # Launch server
        exec steam-run sh -c 'cd "$HOME/.local/share/sevendays"; \
            exec ./startserver.sh -configfile=${relativeConfig}'
      '';
    };
  };
}