server-config/services/quadlet.nix
2024-09-27 10:27:22 -04:00

85 lines
2.3 KiB
Nix

{ service_configs, ... }:
{
virtualisation.quadlet = {
containers =
let
baseContainerConfig = {
autoUpdate = "registry";
environments = {
PUID = 1000;
PGID = 1000;
};
};
in
{
minecraft-server.containerConfig = baseContainerConfig // {
image = "docker.io/itzg/minecraft-server:java21-graalvm";
name = "minecraft";
environments = {
TYPE = "QUILT";
MEMORY = "4G";
MOD_PLATFORM = "MODRINTH";
USE_AIKAR_FLAGS = true;
JVM_OPTS = "-XX:-UseJVMCICompiler";
MODRINTH_MODPACK = "https://modrinth.com/modpack/sop";
VERSION = "1.21.1";
};
publishPorts = [ "${builtins.toString service_configs.ports.minecraft}:25565" ];
volumes = [ "${service_configs.minecraft.dir}:/data:z" ];
};
gluetun.containerConfig = baseContainerConfig // {
image = "docker.io/qmcgaw/gluetun";
name = "gluetun";
addCapabilities = [
"NET_ADMIN"
"MKNOD"
];
environments = import ../secrets/mullvad.nix;
publishPorts = [
"6081:6081"
"6081:6081/udp"
"${builtins.toString service_configs.ports.torrent}:6011"
];
volumes = [ "${service_configs.gluetun.dir}:/gluetun:z" ];
podmanArgs = [
"--device=/dev/net/tun"
"--security-opt label=disable"
];
};
qbittorrent = {
containerConfig = baseContainerConfig // {
image = "lscr.io/linuxserver/qbittorrent:latest";
name = "qbittorrent";
environments = {
WEBUI_PORT = service_configs.ports.torrent;
DOCKER_MODS = "ghcr.io/gabe565/linuxserver-mod-vuetorrent";
};
volumes = [
"${service_configs.torrent.config_dir}:/config:z"
"${service_configs.torrent.download_dir}:/downloads:z"
];
networks = [ "container:gluetun" ];
};
serviceConfig = {
requires = [ "gluetun.service" ];
after = [ "gluetun.service" ];
};
};
};
networks = {
internal.networkConfig.subnets = [ "10.0.123.1/24" ];
};
};
}