WS-KCNHUB/machines/kcnhub/servers/forgejo.nix

69 lines
1.7 KiB
Nix

{ pkgs, config, ...}: let
# Domain TBD
domain = "git.ws.kcnhub.com";
in {
services.forgejo = {
enable = true;
database = {
type = "postgres";
socket = "/run/postgresql";
};
settings = {
server = {
HTTP_PORT = 5001;
ROOT_URL = "https://${domain}";
};
actions = {
ENABLED = true;
};
service.DISABLE_REGISTRATION = true;
};
};
# To allow forgejo to access /etc/shadow for PAM authentication
users.users.forgejo.extraGroups = [ "shadow" ];
# Services Runner running in nixos-container w/ host label
# This allows sharing of nix-store for caching actions builds
# ... Maybe I'll actually set this up. Some concern for clearing its
# cache and it overpopulating. Idk. We'll see.
# services.gitea-actions-runner.instances."nix-runner" = {
# enable = true;
# name = "nix-runner";
# url = "http://localhost:${config.services.gitea.settings.server.HTTP_PORT}";
# labels = [
# # don't require docker/podman
# "native:host"
# ];
# tokenFile = "/var/lib/gitea/runner_token";
# };
services.postgresql = {
enable = true;
port = 5432;
# Ensures forejo user owns a db called forgejo
ensureDatabases = [
"forgejo"
];
ensureUsers = [{
name = "forgejo";
ensureDBOwnership = true;
ensureClauses = {
createdb = true;
};
}];
};
services.caddy.virtualHosts = {
"ws.kcnhub.com" = {
extraConfig = ''
redir "https://git.ws.kcnhub.com/KCNHUB/WS-KCNHUB/wiki"
'';
};
"${domain}" = {
extraConfig = ''
reverse_proxy 127.0.0.1:${toString config.services.forgejo.settings.server.HTTP_PORT}
'';
};
};
}