68 lines
1.7 KiB
Nix
68 lines
1.7 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
let
|
|
cfg = config.modules.services.gitea;
|
|
in
|
|
{
|
|
options.modules.services.gitea = {
|
|
enable = lib.mkEnableOption "Gitea";
|
|
|
|
reverseProxyAddress = lib.mkOption {
|
|
type = lib.types.str;
|
|
description = "IP address of the reverse proxy trusted to forward client headers.";
|
|
};
|
|
};
|
|
|
|
config = lib.mkMerge [
|
|
{
|
|
registry."stable-uid".${config.networking.hostName}.gitea = 20007;
|
|
}
|
|
|
|
(lib.mkIf cfg.enable {
|
|
users.users.gitea = {
|
|
isSystemUser = true;
|
|
uid = config.registry."stable-uid".${config.networking.hostName}.gitea;
|
|
group = "storage";
|
|
home = "/var/lib/gitea";
|
|
};
|
|
|
|
networking.firewall.allowedTCPPorts = [
|
|
2222
|
|
3000
|
|
];
|
|
|
|
services.gitea = {
|
|
enable = true;
|
|
user = "gitea";
|
|
group = "storage";
|
|
stateDir = "/var/lib/gitea";
|
|
repositoryRoot = "/var/lib/gitea/repositories";
|
|
lfs = {
|
|
enable = true;
|
|
contentDir = "/var/lib/gitea/data/lfs";
|
|
};
|
|
database.type = "sqlite3";
|
|
settings = {
|
|
server = {
|
|
HTTP_ADDR = "0.0.0.0";
|
|
HTTP_PORT = 3000;
|
|
ROOT_URL = "https://git.alexion.dev/";
|
|
SSH_DOMAIN = "git.alexion.dev";
|
|
SSH_PORT = 22;
|
|
START_SSH_SERVER = true;
|
|
SSH_LISTEN_HOST = "0.0.0.0";
|
|
SSH_LISTEN_PORT = 2222;
|
|
REVERSE_PROXY_TRUSTED_PROXIES = "${cfg.reverseProxyAddress}/32";
|
|
};
|
|
service.DISABLE_REGISTRATION = true;
|
|
# Direct bootstrap access uses HTTP until the public HTTPS route moves.
|
|
session.COOKIE_SECURE = false;
|
|
};
|
|
};
|
|
})
|
|
];
|
|
}
|