nix-config/modules/git/default.nix

69 lines
1.7 KiB
Nix

{
lib,
config,
pkgs,
...
}: let
inherit (lib) mkIf;
cfg = config.conf.git;
in
mkIf cfg.enable {
services = {
nginx = {
virtualHosts.${cfg.domain.full} = {
serverName = cfg.domain.full;
useACMEHost = cfg.domain.base;
forceSSL = true;
locations = {
"/" = {
proxyPass = "http://unix:/run/forgejo/socket";
};
};
};
};
forgejo = {
enable = true;
package = pkgs.forgejo;
database = {
type = "postgres";
};
user = "forgejo";
lfs.enable = true;
settings = {
server = {
DOMAIN = cfg.domain.full;
ROOT_URL = "https://${cfg.domain.full}";
PROTOCOL = "http+unix";
HTTP_ADDR = "/run/forgejo/socket";
};
service.DISABLE_REGISTRATION = true;
actions = {
ENABLED = true;
DEFAULT_ACTIONS_URL = "github";
};
repository = {
ENABLE_PUSH_CREATE_USER = true;
};
};
};
};
environment.systemPackages = let
cfg = config.services.forgejo;
forgejo-cli = pkgs.writeScriptBin "forgejo-cli" ''
#!${pkgs.runtimeShell}
cd ${cfg.stateDir}
sudo=exec
if [[ "$USER" != forgejo ]]; then
sudo='exec /run/wrappers/bin/sudo -u ${cfg.user} -g ${cfg.group} --preserve-env=GITEA_WORK_DIR --preserve-env=GITEA_CUSTOM'
fi
# Note that these variable names will change
export GITEA_WORK_DIR=${cfg.stateDir}
export GITEA_CUSTOM=${cfg.customDir}
$sudo ${lib.getExe cfg.package} "$@"
'';
in [
forgejo-cli
];
}