{ config, pkgs, lib, ... }:
let
  cfg = config.services.gitea;
  domain = "git.feal.no";
  httpPort = 3004;
  sshPort = 2222;
in {
    services.gitea = {
      enable = true;
      appName = "felixalbs Gitea";
      database.type = "postgres";
      stateDir = "/tank/services/gitea";

      settings = {
        server = {
          # Serve on local unix socket, exposed in hosts/defiant/services/nginx.nix
          PROTOCOL = "http+unix";
          DOMAIN = domain;
          ROOT_URL = "https://${domain}";
          LANDING_PAGE=''"/felixalb"'';

          SSH_PORT = sshPort;
          SSH_LISTEN_PORT = sshPort;
          START_SSH_SERVER = true;
          BUILTIN_SSH_SERVER_USER = "git";
        };

        service.DISABLE_REGISTRATION = true;
        session.COOKIE_SECURE = true;

        packages.ENABLED = false;
        packages.CHUNKED_UPLOAD_PATH = "${cfg.stateDir}/tmp/package-upload";

        oauth2_client = {
          ENABLE_AUTO_REGISTRATION = true;
          OPENID_CONNECT_SCOPES = "email profile openid";
          UPDATE_AVATAR = true;
          ACCOUNT_LINKING = "auto";
        };

        log.LEVEL = "Info";

        database.LOG_SQL = false;

        ui = {
          THEMES="gitea,arc-green,nord";
          DEFAULT_THEME="nord";
        };
      };

      # TODO: configure mailer
    };

    systemd.services.gitea.serviceConfig.WorkingDirectory = lib.mkForce "${cfg.stateDir}/work";

    services.postgresqlBackup.databases = [ "gitea" ];

    networking.firewall.allowedTCPPorts = [ sshPort ];
}