forgejo initial config

This commit is contained in:
Bryan Ramos 2026-03-12 03:22:46 -04:00
parent e2e6fb5dae
commit 40c509731e
2 changed files with 29 additions and 36 deletions

View file

@ -6,6 +6,7 @@
modules.system = { modules.system = {
nginx.enable = true; nginx.enable = true;
forgejo.enable = true;
}; };
users.users = { users.users = {

View file

@ -4,54 +4,46 @@ with lib;
let let
cfg = config.modules.system.forgejo; cfg = config.modules.system.forgejo;
nginx = config.modules.system.nginx; nginx = config.modules.system.nginx;
domain = "ramos.codes";
socketPath = "/run/forgejo/forgejo.sock";
in in
{ options.modules.system.forgejo = { enable = mkEnableOption "Forgejo Server"; }; {
config = mkIf cfg.enable { options.modules.system.forgejo = {
users = { enable = mkEnableOption "Forgejo Server";
users = {
"git" = {
description = "Git server system user";
isSystemUser = true;
group = "git";
extraGroups = mkIf nginx.enable [
"web"
];
};
"nginx" = {
extraGroups = mkIf nginx.enable [
"git"
];
};
};
groups = {
"git" = {
members = [
"git"
];
};
};
}; };
services.forgejo = rec { config = mkIf cfg.enable {
users.users.nginx = mkIf nginx.enable {
extraGroups = [ "git" ];
};
services.forgejo = {
enable = true; enable = true;
user = "git"; user = "git";
group = "git"; group = "git";
stateDir = "/var/lib/forgejo";
settings = { settings.server = {
server = { DOMAIN = "git.${domain}";
ROOT_URL = "https://git.${domain}/";
PROTOCOL = "http+unix"; PROTOCOL = "http+unix";
DOMAIN = "127.0.0.1"; HTTP_ADDR = socketPath;
HTTP_ADDR = "/run/forgejo/forgejo.sock"; SSH_DOMAIN = "git.${domain}";
}; SSH_PORT = 22;
START_SSH_SERVER = false;
}; };
database = { database = {
inherit user;
type = "sqlite3"; type = "sqlite3";
path = "${stateDir}/data/forgejo.db"; path = "/var/lib/forgejo/data/forgejo.db";
createDatabase = true; };
};
services.nginx.virtualHosts."git.${domain}" = mkIf nginx.enable {
useACMEHost = domain;
forceSSL = true;
locations."/" = {
proxyPass = "http://unix:${socketPath}";
}; };
}; };
}; };