{ config, lib, pkgs, ... }:
let
  cfg = config.services.gitea;
in
{
  config = {
    services.gitea = {
      enable = true;
      lfs.enable = true;
      settings = {
        repository = {
          ENABLE_PUSH_CREATE_USER = true;
          ENABLE_PUSH_CREATE_ORG = true;
          DEFAULT_PUSH_CREATE_PRIVATE = true;
        };

        server = {
          ROOT_URL = "https://gitea.protogen.io/";
          LANDING_PAGE = "explore";
          OFFLINE_MODE = false;
        };

        service.DISABLE_REGISTRATION = true;

        session = {
          COOKIE_NAME = "session";
          COOKIE_SECURE = false;
          PROVIDER = "file";
        };
        # TODO package themes
        ui = {
          DEFAULT_THEME = "catppuccin-mocha-pink";
          THEMES = let
            ctpAttrs = {
              flavor = [ "latte" "frappe" "macchiato" "mocha" ];
              accent = [ "rosewater" "flamingo" "pink" "mauve"
                "red" "maroon" "peach" "yellow" "green" "teal"
                "sky" "sapphire" "blue" ];
            };
            ctpThemes = lib.mapCartesianProduct
              ( { flavor, accent }: "catppuccin-${flavor}-${accent}" )
              ctpAttrs;
          in lib.concatStringsSep "," ([
            "gitea"
            "arc-green"
            "auto"
          ] ++ ctpThemes);
        };
      };
    };
  };
}