nixfiles/services/forgejo.nix

61 lines
1.4 KiB
Nix

{ config, lib, pkgs, ... }:
let
cfg = config.qenya.services.forgejo;
inherit (lib) mkIf mkEnableOption mkOption types;
in
{
options.qenya.services.forgejo = {
enable = mkEnableOption "Forgejo";
domain = mkOption {
type = types.str;
};
stateDir = mkOption {
type = types.str;
};
};
config = mkIf cfg.enable {
# TODO: email out
# TODO: interface customisation
services = {
nginx = {
enable = true;
virtualHosts = {
${cfg.domain} = {
forceSSL = true;
enableACME = true;
locations."/".proxyPass = "http://[::1]:3000/";
};
};
};
forgejo = {
enable = true;
stateDir = cfg.stateDir;
settings = {
DEFAULT.APP_NAME = cfg.domain;
cache = {
ADAPTER = "twoqueue";
HOST = ''{"size": 100, "recent_ratio": 0.25, "ghost_ratio": 0.5}'';
};
database = {
DB_TYPE = "sqlite3";
SQLITE_JOURNAL_MODE = "WAL";
};
security.LOGIN_REMEMBER_DAYS = 365;
server = {
DOMAIN = cfg.domain;
HTTP_PORT = 3000;
ROOT_URL = "https://${cfg.domain}/";
};
service.DISABLE_REGISTRATION = true;
};
};
};
networking.firewall.allowedTCPPorts = [ 80 443 ];
};
}