Merge branch 'main' of gh:greg-hellings/nixos-config

This commit is contained in:
Greg Hellings
2023-12-19 13:08:05 -06:00
3 changed files with 25 additions and 127 deletions
+13 -5
View File
@@ -10,12 +10,20 @@
./postgres.nix
./synapse.nix
];
greg.home = false;
greg.linode.enable = true;
greg.tailscale.enable = true;
networking.hostName = "linode";
networking.domain = "thehellings.com";
greg = {
home = false;
linode.enable = true;
tailscale.enable = true;
};
networking = {
hostName = "linode";
domain = "thehellings.com";
nameservers = [
"100.88.91.27"
];
};
environment.systemPackages = with pkgs; [
bind
forgejo
gitea-actions-runner
graphviz
+5 -121
View File
@@ -2,132 +2,16 @@
let
srcDomain = "src.thehellings.com";
ciDomain = "ci.thehellings.com";
ciPort = "17080";
droneDir = "/var/lib/drone";
execWorkDir = "/var/lib/drone-exec";
droneWorkerEnvironment = {
DRONE_RPC_PROTO = "https";
DRONE_RPC_HOST = ciDomain;
DRONE_RUNNER_CAPACITY = "2";
DRONE_RUNNER_NAME = "docker";
};
in {
environment.systemPackages = [ pkgs.drone-runner-exec ];
##########################################################################################
###########
# GIT SERVICES
##########
##########################################################################################
services = {
forgejo = rec {
enable = true;
package = pkgs.unstable.forgejo;
database = {
type = "postgres";
user = "forgejo";
};
dump = {
enable = true;
type = "tar.xz";
};
settings = {
actions.ENABLED = true;
DEFAULT = {
APP_NAME = "Greg's Sources";
};
server = rec {
ROOT_URL = "https://${DOMAIN}/";
DOMAIN = srcDomain;
HTTP_PORT = 3001;
};
service.DISABLE_REGISTRATION = pkgs.lib.mkForce true;
session.COOKIE_SECURE = pkgs.lib.mkForce true;
log.level = "Info";
};
};
# For now, at least, this is the same as Forgejo's action runner
gitea-actions-runner.instances = {
exec = {
enable = true;
hostPackages = with pkgs; [
bashInteractive
podman
git
nodejs
];
name = "Linode";
labels = [
"native:host"
];
tokenFile = config.age.secrets.forgejo-runner.path;
url = "https://src.thehellings.com";
settings = {
log.level = "info";
runner = {
file = ".runner";
capacity = 3;
envs = {}; # Environment variables
env_file = ".env";
timeout = "3h"; # This is the default on Gitea/Forgejo as well
insecure = false; # TLS verification
fetch_timeout = "5s";
fetch_interval = "2s";
#labels = []; # See above
};
cache = {
enabled = true;
dir = ""; # Default is $HOME/.cache/actcache
host = ""; # How to access cache from the runner, autodetect
port = 0;
external_server = ""; #We are not going externally
};
container = {
network = ""; # Auto-create
privileged = false;
options = null;
workdir_parent = "/workspace";
valid_volumes = [];
#docker_host = "";
force_pull = false;
};
host = {
workdir_parent = null; # Default $HOME/.cache/act
};
};
};
};
logrotate = {
enable = true;
settings = {
forgejo = {
enable = true;
files = "${config.services.forgejo.dump.backupDir}/*";
};
};
};
};
age.secrets.forgejo-runner = {
file = ../../secrets/linode-forgejo-runner.age;
owner = config.systemd.services.gitea-runner-exec.serviceConfig.User;
};
greg.proxies."${srcDomain}" = {
target = "${config.services.forgejo.settings.server.PROTOCOL}://${config.services.forgejo.settings.server.DOMAIN}:${toString config.services.forgejo.settings.server.HTTP_PORT}";
target = "http://git.thehellings.lan";
ssl = true;
genAliases = false;
extraConfig = ''
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Ssl on;
'';
};
greg.backup.jobs.forgejo = {
src = config.services.forgejo.dump.backupDir;
dest = "forgejo";
user = "forgejo";
};
##########################################################################################
###########
# CI SERVICES
+7 -1
View File
@@ -14,7 +14,7 @@ let
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
'';
'' + dest.extraConfig;
};
serverAliases = lib.mkIf dest.genAliases [ "${alias name}" ];
};
@@ -63,6 +63,12 @@ in with lib; {
description = "The path prefix for this proxy";
default = "/";
};
extraConfig = mkOption {
type = types.str;
description = "Extra nginx config options";
default = "";
};
};
}));
};