Compare commits
5 Commits
main
...
feat/gitea
| Author | SHA1 | Date | |
|---|---|---|---|
| 7ddd16e1cc | |||
| 0c85707b05 | |||
| d4d10da461 | |||
| 86c698e39e | |||
| 7737f72328 |
40
configs/nixos/guests/gitea.nix
Normal file
40
configs/nixos/guests/gitea.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
67
configs/nixos/modules/services/gitea.nix
Normal file
67
configs/nixos/modules/services/gitea.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
})
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user