feat: refactor the modules/servers directory.

This commit is contained in:
CronyAkatsuki 2026-01-19 21:36:24 +01:00
parent 4e783c052b
commit 8b754d3a7e
69 changed files with 61 additions and 62 deletions

View file

@ -0,0 +1,14 @@
{...}: let
servicesDir = ./services;
serviceFiles =
builtins.filter
(name: builtins.match "^.*\\.nix$" name != null)
(builtins.attrNames (builtins.readDir servicesDir));
hostModules = map (fn: import "${servicesDir}/${fn}") serviceFiles;
in {
imports =
[
../../common
]
++ hostModules;
}

View file

@ -0,0 +1,49 @@
{...}: {
virtualisation.oci-containers.containers.crafty-controller = {
image = "registry.gitlab.com/crafty-controller/crafty-4:latest";
autoStart = true;
ports = [
"8443:8443"
"8123:8123"
"19132:19132"
"25500-25600:25500-25600"
];
labels = {
"io.containers.autoupdate" = "registry";
};
volumes = [
"/var/lib/crafty-controller/backups:/crafty/backups"
"/var/lib/crafty-controller/logs:/crafty/logs"
"/var/lib/crafty-controller/servers:/crafty/servers"
"/var/lib/crafty-controller/config:/crafty/app/config"
"/var/lib/crafty-controller/import:/crafty/import"
];
};
networking.firewall = {
allowedTCPPorts = [25500];
allowedUDPPorts = [25500];
};
services.traefik.dynamicConfigOptions.http = {
services.crafty.loadBalancer.servers = [
{
url = "https://localhost:8443";
}
];
routers.crafty = {
rule = "Host(`crafty.cronyakatsuki.xyz`)";
tls = {
certResolver = "porkbun";
};
service = "crafty";
entrypoints = "websecure";
};
};
services.restic.backups = {
local.paths = ["/var/lib/crafty-controller"];
server.paths = ["/var/lib/crafty-controller"];
};
}