{ config, ... }: let cfg = config.services.forgejo; srv = cfg.settings.server; in { services.nginx.virtualHosts.${srv.DOMAIN} = { forceSSL = true; enableACME = true; extraConfig = '' client_max_body_size 512M; ''; locations."/".proxyPass = "http://localhost:${builtins.toString srv.HTTP_PORT}"; }; services.forgejo = { enable = true; user = "git"; group = cfg.user; database.user = cfg.user; settings = { server = { DOMAIN = "git.tokinanpa.dev"; ROOT_URL = "https://${srv.DOMAIN}/"; }; service = { DISABLE_REGISTRATION = true; }; repository = { DEFAULT_REPO_UNITS = "repo.code,repo.releases,repo.issues"; DISABLE_STARS = true; ENABLE_PUSH_CREATE_USER = true; DEFAULT_PUSH_CREATE_PRIVATE = false; PREFERRED_LICENSES = "MIT"; }; ui = { DEFAULT_THEME = "forgejo-dark"; DEFAULT_SHOW_FULL_NAME = true; }; mirror.DEFAULT_INTERVAL = "1h"; }; }; users.users.${cfg.user} = { home = cfg.stateDir; useDefaultShell = true; group = cfg.group; isSystemUser = true; }; users.groups.${cfg.group} = {}; services.openssh.enable = true; services.openssh.settings.AcceptEnv = "GIT_PROTOCOL"; }