{ lib, ... }: { flake.modules.nixos.server-forgejo = { config, ... }: let cfg = config.homelab.services.forgejo; inherit (lib) mkEnableOption mkOption mkIf types ; in { options.homelab.services.forgejo = { enable = mkEnableOption "Enable forgejo"; cloudflareTunnelId = mkOption { type = types.str; }; domain = mkOption { type = types.str; }; sshDomain = mkOption { type = types.str; }; }; config = mkIf cfg.enable { services.forgejo = { enable = true; settings = { server = { DOMAIN = cfg.domain; LANDING_PAGE = "explore"; ROOT_URL = "https://${config.services.forgejo.settings.server.DOMAIN}"; SSH_DOMAIN = cfg.sshDomain; }; service.DISABLE_REGISTRATION = true; ui.DEFAULT_THEME = "forgejo-auto"; }; }; services.cloudflared.tunnels.${cfg.cloudflareTunnelId}.ingress = { "${config.services.forgejo.settings.server.DOMAIN}" = "http://localhost:${toString config.services.forgejo.settings.server.HTTP_PORT}"; }; }; }; }