{ config, pkgs, ... }: let customDir = "/var/lib/forgejo/custom"; themeCSS = ./forgejo-theme-gh-hc.css; logoSVG = ./forgejo-logo.svg; in { services.forgejo = { enable = true; database.type = "postgres"; lfs.enable = true; settings = { server = { DOMAIN = "git.extremist.software"; ROOT_URL = "https://git.extremist.software/"; HTTP_PORT = 3000; LANDING_PAGE = "/jet"; }; service = { DISABLE_REGISTRATION = true; SHOW_REGISTRATION_BUTTON = false; EXPLORE_REQUIRE_SIGNIN_VIEW = true; }; "service.explore" = { DISABLE_USERS_PAGE = true; DISABLE_ORGANIZATIONS_PAGE = true; }; repository = { DISABLE_STARS = true; }; ui = { DEFAULT_THEME = "gh-hc"; THEMES = "gh-hc,forgejo-auto,forgejo-light,forgejo-dark"; SHOW_USER_EMAIL = true; }; "ui.meta" = { AUTHOR = "jet"; DESCRIPTION = "Software extremist."; KEYWORDS = "git,forgejo,jet,extremist"; }; other = { SHOW_FOOTER_BRANDING = false; SHOW_FOOTER_VERSION = false; SHOW_FOOTER_TEMPLATE_LOAD_TIME = false; ENABLE_SWAGGER = false; }; openid = { ENABLE_OPENID_SIGNIN = false; ENABLE_OPENID_SIGNUP = false; }; }; database.passwordFile = config.age.secrets.forgejo-db.path; }; services.postgresql.enable = true; # Deploy custom theme CSS to Forgejo's custom directory systemd.tmpfiles.rules = [ "d ${customDir}/public 0755 forgejo forgejo -" "d ${customDir}/public/assets 0755 forgejo forgejo -" "d ${customDir}/public/assets/css 0755 forgejo forgejo -" "C+ ${customDir}/public/assets/css/theme-gh-hc.css 0644 forgejo forgejo - ${themeCSS}" "d ${customDir}/public/assets/img 0755 forgejo forgejo -" "C+ ${customDir}/public/assets/img/logo.svg 0644 forgejo forgejo - ${logoSVG}" "C+ ${customDir}/public/assets/img/favicon.svg 0644 forgejo forgejo - ${logoSVG}" ]; }