5 Commits

3 changed files with 114 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
{
config,
lib,
registry,
...
}:
let
cfg = config.guests.gitea;
in
{
options.guests.gitea.dataPath = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
example = "/srv/gitea";
description = "Host path mounted as Gitea's state directory.";
};
config = lib.mkIf cfg.enable {
assertions = [
{
assertion = cfg.dataPath != null;
message = "guests.gitea.dataPath must point at the host directory that stores Gitea state.";
}
];
guests.gitea = {
interior.modules.services.gitea = {
enable = true;
reverseProxyAddress = registry.address.${config.networking.hostName}."reverse-proxy";
};
mounts."/var/lib/gitea" = {
directory = cfg.dataPath;
owner = config.registry."stable-uid".${config.networking.hostName}.gitea;
group = "storage";
mode = "2770";
};
};
};
}

View File

@@ -96,6 +96,13 @@
};
};
guests.gitea = {
enable = true;
vlan = 20;
address = "10.23.20.206";
dataPath = "/pikachu/data/gitea";
};
guests.romm = {
enable = true;
vlan = 20;

View File

@@ -0,0 +1,67 @@
{
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;
};
};
})
];
}