2024-05-11 19:41:08 +02:00
|
|
|
# Big thanks to Pyrox for their config! https://git.pyrox.dev/pyrox/nix/src/branch/main/hosts/marvin/services/git.nix
|
2024-05-12 12:01:04 +02:00
|
|
|
{ lib, pkgs, config, data, ... }:
|
2024-05-11 19:41:08 +02:00
|
|
|
let
|
2024-05-15 21:14:50 +02:00
|
|
|
inherit (data.host) rootDomain;
|
|
|
|
inherit (data.services.git) domain sshPort;
|
2024-05-11 19:41:08 +02:00
|
|
|
|
|
|
|
cfg = config.services.forgejo;
|
|
|
|
srv = cfg.settings.server;
|
|
|
|
|
|
|
|
stateDir = "/var/lib/forgejo";
|
|
|
|
customDir = "${stateDir}/custom";
|
|
|
|
confDir = "${customDir}/conf";
|
|
|
|
in
|
|
|
|
{
|
|
|
|
services.nginx.virtualHosts.${domain} = {
|
|
|
|
forceSSL = true;
|
|
|
|
useACMEHost = "${rootDomain}";
|
|
|
|
extraConfig = ''
|
|
|
|
client_max_body_size 512M;
|
|
|
|
'';
|
|
|
|
locations."/" = {
|
|
|
|
proxyPass = "http://127.0.0.1:${toString srv.HTTP_PORT}";
|
|
|
|
recommendedProxySettings = true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
services.forgejo = {
|
|
|
|
enable = true;
|
|
|
|
inherit stateDir;
|
|
|
|
inherit customDir;
|
|
|
|
database = {
|
|
|
|
type = "postgres";
|
|
|
|
createDatabase = true;
|
|
|
|
passwordFile = config.sops.secrets."forgejo/db_password".path;
|
|
|
|
};
|
|
|
|
settings = {
|
|
|
|
server = {
|
|
|
|
DOMAIN = domain;
|
|
|
|
ROOT_URL = "https://${srv.DOMAIN}/";
|
2024-05-11 21:39:17 +02:00
|
|
|
HTTP_ADDR = "127.0.0.1";
|
|
|
|
HTTP_PORT = 3001;
|
2024-05-15 21:14:50 +02:00
|
|
|
SSH_PORT = sshPort;
|
2024-05-11 19:41:08 +02:00
|
|
|
};
|
2024-05-12 00:17:51 +02:00
|
|
|
DEFAULT = {
|
|
|
|
APP_NAME = "Lgmrszd's git";
|
|
|
|
};
|
2024-05-12 20:16:21 +02:00
|
|
|
session = {
|
|
|
|
PROVIDER = "db";
|
|
|
|
COOKIE_SECURE = true;
|
|
|
|
COOKIE_NAME = "lgmgit-session";
|
|
|
|
DOMAIN = domain;
|
|
|
|
GC_INTERVAL_TIME = 86400 * 7;
|
|
|
|
SESSION_LIFE_TIME = 86400 * 7;
|
|
|
|
};
|
2024-05-11 23:42:29 +02:00
|
|
|
service = {
|
|
|
|
DISABLE_REGISTRATION = false;
|
|
|
|
ALLOW_ONLY_INTERNAL_REGISTRATION = false;
|
|
|
|
ALLOW_ONLY_EXTERNAL_REGISTRATION = true;
|
|
|
|
SHOW_REGISTRATION_BUTTON = false;
|
|
|
|
REGISTER_EMAIL_CONFIRM = false;
|
|
|
|
DEFAULT_KEEP_EMAIL_PRIVATE = true;
|
|
|
|
DEFAULT_ALLOW_CREATE_ORGANIZATION = false;
|
|
|
|
};
|
|
|
|
repository = {
|
|
|
|
MAX_CREATION_LIMIT = 0;
|
2024-05-12 00:17:51 +02:00
|
|
|
ALLOW_FORK_WITHOUT_MAXIMUM_LIMIT = false;
|
2024-05-12 20:07:38 +02:00
|
|
|
ENABLE_PUSH_CREATE_USER = true;
|
2024-05-12 00:17:51 +02:00
|
|
|
};
|
|
|
|
"ui.meta" = {
|
|
|
|
AUTHOR = "Lgmrszd";
|
|
|
|
DESCRIPTION = "Lgmrszd's forgejo instance";
|
2024-05-11 23:42:29 +02:00
|
|
|
};
|
|
|
|
|
2024-05-11 19:41:08 +02:00
|
|
|
actions = {
|
|
|
|
ENABLED = false;
|
|
|
|
};
|
|
|
|
mailer = {
|
2024-05-16 02:28:51 +02:00
|
|
|
ENABLED = true;
|
|
|
|
MAILER_TYPE = "sendmail";
|
|
|
|
FROM = "forgejo+%{token}@${domain}";
|
|
|
|
SENDMAIL_PATH = "/run/wrappers/bin/sendmail";
|
|
|
|
SENDMAIL_ARGS = "--";
|
2024-05-11 19:41:08 +02:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
sops.secrets."forgejo/db_password" = {
|
|
|
|
sopsFile = ../secrets/forgejo.yaml;
|
|
|
|
format = "yaml";
|
|
|
|
owner = "forgejo";
|
|
|
|
group = "forgejo";
|
|
|
|
};
|
2024-05-12 00:17:51 +02:00
|
|
|
}
|