{ config, lib, pkgs, ... }:

let cfg = config.sydnix.deertopia.servarr.sonarr;
in {
  options.sydnix.deertopia.servarr.sonarr = {
    enable = lib.mkEnableOption "Sonarr (via Nixarr)";
  };

  config = lib.mkIf cfg.enable {
    nixarr.sonarr = {
      enable = true;
      openFirewall = true;
    };

    sydnix.deertopia.nginx.vhosts."sonarr" = {
      directory = null;
      vhost = {
        forceSSL = true;
        enableACME = true;
        # Per https://wiki.servarr.com/radarr/installation/reverse-proxy
        locations."/".extraConfig = ''
          proxy_pass $upstream;
          proxy_set_header Host $host;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Host $host;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_redirect off;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection $http_connection;
        '';
        locations."/api".extraConfig = ''
          # Allow the API External Access via NGINX
          auth_basic off;
          proxy_pass $upstream;
        '';
        extraConfig = ''
          set $upstream http://127.0.0.1:8989;
        '';
      };
    };
  };
}
