forked from hacc/haccfiles
stuebinm
6bba15faae
cf. https://docs.gitea.io/en-us/config-cheat-sheet/#git-git, entry for option ENABLE_AUTO_GIT_WIRE_PROTOCOL
133 lines
3.8 KiB
Nix
133 lines
3.8 KiB
Nix
{ config, lib, pkgs, profiles, modules, evalConfig, sources, ... }:
|
|
|
|
{
|
|
containers.gitea = {
|
|
privateNetwork = true;
|
|
hostAddress = "192.168.100.1";
|
|
localAddress = "192.168.100.10";
|
|
autoStart = true;
|
|
bindMounts = {
|
|
"/persist" = {
|
|
hostPath = "/persist/containers/gitea";
|
|
isReadOnly = false;
|
|
};
|
|
};
|
|
path = (evalConfig {
|
|
hosts = { };
|
|
groups = { };
|
|
} ({ config, lib, pkgs, profiles, modules, sources, ... }: {
|
|
boot.isContainer = true;
|
|
networking.useDHCP = false;
|
|
users.users.root.hashedPassword = "";
|
|
|
|
imports = [ ((import sources.nix-hexchen) { }).profiles.nopersist ];
|
|
|
|
environment.systemPackages = [ pkgs.gitea ];
|
|
|
|
hexchen.bindmounts."/var/lib/gitea" = "/persist/gitea";
|
|
|
|
nixpkgs.config.allowUnfree = true;
|
|
networking.firewall.enable = false;
|
|
networking.defaultGateway = {
|
|
address = "192.168.100.1";
|
|
interface = "eth0";
|
|
};
|
|
services.coredns = {
|
|
enable = true;
|
|
config = ''
|
|
.:53 {
|
|
forward . 1.1.1.1
|
|
}
|
|
'';
|
|
};
|
|
services.gitea = {
|
|
enable = true;
|
|
appName = "0x0: git for all creatures";
|
|
rootUrl = "https://git.infra4future.de/";
|
|
httpAddress = "0.0.0.0";
|
|
httpPort = 3000;
|
|
lfs.enable = true;
|
|
disableRegistration = true;
|
|
database.type = "postgres";
|
|
cookieSecure = true;
|
|
log.level = "Info";
|
|
# mailerPasswordFile =
|
|
# "/var/lib/secrets/noreply"; # see below for access permissions
|
|
settings = {
|
|
# mailer = {
|
|
# ENABLED = true;
|
|
# HOST = "0x0.rip:465";
|
|
# FROM = "noreply@0x0.rip";
|
|
# ENVELOPE_FROM = "noreply@0x0.rip";
|
|
# USER = "noreply@0x0.rip";
|
|
|
|
# };
|
|
repository = {
|
|
DEFAULT_PRIVATE = "public";
|
|
PREFERRED_LICENSES = "Unlicense";
|
|
DEFAULT_BRANCH = "main";
|
|
};
|
|
oauth2_client = {
|
|
ACCOUNT_LINKING = "auto";
|
|
ENABLE_AUTO_REGISTRATION = true;
|
|
};
|
|
"repository.pull-requests" = {
|
|
DEFAULT_MERGE_STYLE = "merge";
|
|
DEFAULT_MERGE_MESSAGE_ALL_AUTHORS = true;
|
|
};
|
|
"repository.upload".FILE_MAX_SIZE = 1024;
|
|
server = {
|
|
LANDING_PAGE = "explore";
|
|
OFFLINE_MODE = true;
|
|
};
|
|
security = { INSTALL_LOCK = true; };
|
|
other = {
|
|
SHOW_FOOTER_VERSION = false;
|
|
SHOW_FOOTER_TEMPLATE_LOAD_TIME = false;
|
|
};
|
|
cron = {
|
|
ENABLED = true;
|
|
NOTICE_ON_SUCCESS = true;
|
|
};
|
|
"cron.update_mirrors" = {
|
|
SCHEDULE = "@every 12h";
|
|
PULL_LIMIT = "-1";
|
|
PUSH_LIMIT = "-1";
|
|
};
|
|
"cron.git_gc_repos".ENABLED = true;
|
|
"cron.delete_old_actions".ENABLED = true;
|
|
};
|
|
};
|
|
services.postgresqlBackup = {
|
|
enable = true;
|
|
databases = [ "gitea" ];
|
|
startAt = "*-*-* 23:45:00";
|
|
location = "/persist/backups/postgres";
|
|
};
|
|
services.openssh = {
|
|
enable = true;
|
|
passwordAuthentication = false;
|
|
listenAddresses = [ {
|
|
addr = "192.168.100.10";
|
|
port = 22;
|
|
} ];
|
|
extraConfig = ''
|
|
AcceptEnv GIT_PROTOCOL
|
|
'';
|
|
};
|
|
})).config.system.build.toplevel;
|
|
};
|
|
|
|
services.nginx.virtualHosts."git.infra4future.de" = {
|
|
forceSSL = true;
|
|
enableACME = true;
|
|
locations."/" = {
|
|
proxyPass = "http://${config.containers.gitea.localAddress}:3000";
|
|
};
|
|
};
|
|
hexchen.nftables.nat.forwardPorts = [{
|
|
ports = [ 22 ];
|
|
destination = "${config.containers.gitea.localAddress}:22";
|
|
proto = "tcp";
|
|
}];
|
|
}
|