37 lines
1 KiB
Nix
37 lines
1 KiB
Nix
{ config, lib, ... }:
|
|
let
|
|
inherit (lib) mkEnableOption mkIf singleton;
|
|
inherit (lib.pantheon) mkRootDomain mkStrOption mkPortOption;
|
|
cfg = config.server.web-apps.forgejo;
|
|
upstreamCfg = config.services.forgejo;
|
|
in
|
|
{
|
|
options.server.web-apps.forgejo = {
|
|
enable = mkEnableOption "";
|
|
url = mkStrOption;
|
|
port = mkPortOption 3000;
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
persistDirs = singleton {
|
|
directory = upstreamCfg.stateDir;
|
|
inherit (upstreamCfg) user group;
|
|
};
|
|
server.networking.ddns.domains = singleton (mkRootDomain cfg.url);
|
|
server.web-servers.nginx.proxies = mkIf config.server.web-servers.nginx.enable (singleton {
|
|
source = cfg.url;
|
|
target = "http://${config.system.hostname}:${builtins.toString cfg.port}";
|
|
});
|
|
services.forgejo = {
|
|
enable = true;
|
|
settings = {
|
|
server = {
|
|
DOMAIN = cfg.url;
|
|
ROOT_URL = "https://${cfg.url}/";
|
|
HTTP_PORT = cfg.port;
|
|
};
|
|
"repository.signing".FORMAT = "ssh";
|
|
};
|
|
};
|
|
};
|
|
}
|