extremist-software/modules/forgejo.nix

106 lines
2.7 KiB
Nix

{ 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;
};
actions = {
ENABLED = true;
DEFAULT_ACTIONS_URL = "https://code.forgejo.org";
};
openid = {
ENABLE_OPENID_SIGNIN = false;
ENABLE_OPENID_SIGNUP = false;
};
};
database.passwordFile = config.age.secrets.forgejo-db.path;
};
services.postgresql.enable = true;
# Forgejo Actions runner (native shell executor for Nix builds)
services.gitea-actions-runner.package = pkgs.forgejo-runner;
services.gitea-actions-runner.instances.nix-builder = {
enable = true;
name = "nix-builder";
url = "https://git.extremist.software";
tokenFile = config.age.secrets.forgejo-runner-token.path;
labels = [ "native:host" ];
hostPackages = with pkgs; [
bash
coreutils
curl
gawk
git
gnused
nix
nodejs
wget
];
settings = {
runner.capacity = 1;
cache.enabled = 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}"
];
}