2023-08-13 17:00:41 +01:00
|
|
|
{
|
|
|
|
config,
|
|
|
|
pkgs,
|
|
|
|
inputs,
|
|
|
|
lib,
|
|
|
|
system,
|
|
|
|
...
|
|
|
|
}: let
|
2023-07-23 08:14:38 +01:00
|
|
|
unstable = inputs.nixpkgs-nixos-unstable;
|
|
|
|
package = unstable.legacyPackages."${system}".gitea;
|
2022-10-25 21:23:22 +01:00
|
|
|
httpPort = 8083;
|
2022-10-30 19:24:46 +00:00
|
|
|
sshPort = 22;
|
2022-10-25 21:23:22 +01:00
|
|
|
domain = "git.cyplo.dev";
|
2022-12-04 00:07:26 +00:00
|
|
|
emailDomain = "peninsula.industries";
|
2022-10-25 21:23:22 +01:00
|
|
|
baseurl = "https://${domain}";
|
|
|
|
path = "/var/lib/gitea";
|
2022-12-04 00:07:26 +00:00
|
|
|
mailgunSmtpSecretName = "gitea-mailgun-smtp-password";
|
|
|
|
mailgunSmtpPasswordPath = "/run/secrets/${mailgunSmtpSecretName}";
|
|
|
|
uid = 2051;
|
|
|
|
gid = 3051;
|
|
|
|
systemUserName = "gitea";
|
|
|
|
systemGroupName = "gitea";
|
|
|
|
users = {
|
|
|
|
users."${systemUserName}" = {
|
|
|
|
inherit uid;
|
|
|
|
isSystemUser = true;
|
|
|
|
isNormalUser = false;
|
|
|
|
group = systemGroupName;
|
|
|
|
};
|
|
|
|
groups."${systemGroupName}" = {
|
|
|
|
inherit gid;
|
2023-08-13 17:00:41 +01:00
|
|
|
members = ["${systemUserName}" "nginx"];
|
2022-12-04 00:07:26 +00:00
|
|
|
};
|
|
|
|
};
|
2022-10-25 21:23:22 +01:00
|
|
|
in {
|
2023-08-13 17:00:41 +01:00
|
|
|
imports = [../nginx.nix];
|
2022-10-25 21:23:22 +01:00
|
|
|
|
2022-12-04 00:07:26 +00:00
|
|
|
inherit users;
|
|
|
|
|
2023-08-13 17:00:41 +01:00
|
|
|
boot.kernel.sysctl = {"net.ipv4.ip_unprivileged_port_start" = 0;};
|
2022-10-30 19:24:46 +00:00
|
|
|
systemd.services.systemd-sysctl.enable = lib.mkForce true;
|
|
|
|
|
2023-08-13 17:00:41 +01:00
|
|
|
networking.firewall.allowedTCPPorts = [sshPort];
|
2022-10-25 21:23:22 +01:00
|
|
|
services.nginx = {
|
|
|
|
virtualHosts = {
|
|
|
|
"${domain}" = {
|
|
|
|
forceSSL = true;
|
|
|
|
enableACME = true;
|
|
|
|
locations."/" = {
|
2023-06-01 20:17:44 +01:00
|
|
|
proxyPass = "http://127.0.0.1:" + toString httpPort;
|
2022-10-25 21:23:22 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2022-12-04 00:07:26 +00:00
|
|
|
sops.secrets."${mailgunSmtpSecretName}" = {
|
|
|
|
sopsFile = ./mailgun.sops.yaml;
|
|
|
|
path = mailgunSmtpPasswordPath;
|
|
|
|
owner = systemUserName;
|
|
|
|
group = systemGroupName;
|
|
|
|
};
|
|
|
|
|
2023-07-23 08:14:38 +01:00
|
|
|
containers.gitea = {
|
2022-10-25 21:23:22 +01:00
|
|
|
autoStart = true;
|
|
|
|
forwardPorts = [
|
|
|
|
{
|
2022-11-08 17:06:20 +00:00
|
|
|
inherit httpPort;
|
2022-10-25 21:23:22 +01:00
|
|
|
containerPort = httpPort;
|
|
|
|
}
|
|
|
|
{
|
2022-10-30 19:24:46 +00:00
|
|
|
containerPort = sshPort;
|
|
|
|
hostPort = sshPort;
|
2022-10-25 21:23:22 +01:00
|
|
|
}
|
|
|
|
];
|
|
|
|
bindMounts = {
|
|
|
|
"${path}" = {
|
|
|
|
hostPath = "${path}";
|
|
|
|
isReadOnly = false;
|
|
|
|
};
|
2022-12-04 00:07:26 +00:00
|
|
|
"${mailgunSmtpPasswordPath}" = {
|
|
|
|
hostPath = "${mailgunSmtpPasswordPath}";
|
|
|
|
isReadOnly = true;
|
|
|
|
};
|
2022-10-25 21:23:22 +01:00
|
|
|
};
|
2023-08-13 17:00:41 +01:00
|
|
|
config = {
|
|
|
|
config,
|
|
|
|
pkgs,
|
|
|
|
lib,
|
|
|
|
...
|
|
|
|
}: {
|
2023-12-18 10:28:15 +00:00
|
|
|
system.stateVersion = "23.11";
|
2023-08-13 17:00:41 +01:00
|
|
|
users =
|
|
|
|
users
|
|
|
|
// {
|
|
|
|
mutableUsers = false;
|
|
|
|
allowNoPasswordLogin = true;
|
|
|
|
};
|
|
|
|
disabledModules = ["services/misc/gitea.nix"];
|
|
|
|
imports = ["${unstable}/nixos/modules/services/misc/gitea.nix"];
|
2022-10-25 21:23:22 +01:00
|
|
|
services.gitea = {
|
|
|
|
enable = true;
|
2023-07-23 08:14:38 +01:00
|
|
|
inherit package;
|
2022-10-25 21:23:22 +01:00
|
|
|
stateDir = path;
|
2022-12-04 00:07:26 +00:00
|
|
|
user = systemUserName;
|
|
|
|
mailerPasswordFile = mailgunSmtpPasswordPath;
|
2023-06-01 21:13:21 +01:00
|
|
|
lfs.enable = true;
|
2024-01-01 13:55:47 +00:00
|
|
|
database.type = "sqlite3";
|
2022-10-29 22:44:34 +01:00
|
|
|
settings = {
|
2022-12-02 20:35:46 +00:00
|
|
|
service.DISABLE_REGISTRATION = true;
|
2023-05-13 07:18:17 +01:00
|
|
|
security.INSTALL_LOCK = true;
|
|
|
|
oauth2.ENABLE = false;
|
2023-06-01 21:13:21 +01:00
|
|
|
log.LEVEL = "Info";
|
2023-06-01 22:10:18 +01:00
|
|
|
actions.ENABLED = true;
|
2024-01-02 19:14:09 +00:00
|
|
|
"git.timeout" = {
|
|
|
|
DEFAULT = 600;
|
|
|
|
MIGRATE = 3600;
|
|
|
|
MIRROR = 3600;
|
|
|
|
CLONE = 600;
|
|
|
|
PULL = 600;
|
|
|
|
GC = 600;
|
|
|
|
};
|
2024-02-05 20:57:46 +00:00
|
|
|
"cron".ENABLED = true;
|
|
|
|
"cron.git_gc_repos".ENABLED = true;
|
|
|
|
"cron.delete_old_actions".ENABLED = true;
|
|
|
|
"cron.delete_old_system_notices".ENABLED = true;
|
|
|
|
"cron.gc_lfs".ENABLED = true;
|
2022-10-29 22:44:34 +01:00
|
|
|
server = {
|
2023-06-01 20:17:44 +01:00
|
|
|
ROOT_URL = baseurl;
|
|
|
|
DOMAIN = domain;
|
2022-10-29 22:44:34 +01:00
|
|
|
START_SSH_SERVER = true;
|
2022-10-30 19:24:46 +00:00
|
|
|
SSH_PORT = sshPort;
|
2023-06-01 20:17:44 +01:00
|
|
|
HTTP_PORT = httpPort;
|
2022-10-30 19:24:46 +00:00
|
|
|
SSH_LISTEN_PORT = sshPort;
|
2022-10-29 22:44:34 +01:00
|
|
|
DISABLE_SSH = false;
|
|
|
|
};
|
2022-12-04 00:07:26 +00:00
|
|
|
mailer = {
|
|
|
|
ENABLED = true;
|
|
|
|
FROM = "git.cyplo.dev <gitea@${emailDomain}>";
|
2023-08-19 12:17:53 +01:00
|
|
|
PROTOCOL = "smtps";
|
|
|
|
SMTP_ADDR = "smtp.eu.mailgun.org";
|
|
|
|
SMTP_PORT = 465;
|
2022-12-04 00:07:26 +00:00
|
|
|
USER = "postmaster@${emailDomain}";
|
|
|
|
};
|
2022-10-25 21:23:22 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|