{
  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);
        };
      };
    };
  };
}