{ config, pkgs, ... }:

{
  imports = [
    ./owncast-archiver.nix
  ];

  deployment = {
    vcpu = 8;
    mem = 2048;
    persistedShares = [ "/etc" "/home" "/var" ];
  };
  c3d2.hq.statistics.enable = true;

  networking.hostName = "owncast";

  services = {
    nginx = {
      enable = true;
      additionalModules = [ pkgs.nginxModules.fancyindex ];
      virtualHosts."owncast.c3d2.de" = {
        default = true;
        forceSSL = true;
        enableACME = true;

        locations = {
          "/" = {
            proxyPass = "http://127.0.0.1:${toString config.services.owncast.port}";
            proxyWebsockets = true;
          };
          "/archive".return = "307 /archive/";
          "/archive/" = {
            alias = "${config.services.owncast-archiver.targetDir}/";
            extraConfig = ''
              fancyindex on;
              fancyindex_exact_size off;
            '';
          };
        };
      };
    };
    owncast = {
      enable = true;
      openFirewall = true;
    };
  };

  systemd.services.nginx.serviceConfig.ReadWritePaths = [
    config.services.owncast-archiver.targetDir
  ];

  services.owncast-archiver.enable = true;
}
