Files
.github
.vscode
docs
hydra
keys
lib
modules
pkgs
systems
artemision
palatine-hill
attic
docker
archiveteam.nix
books.nix
default.nix
firefly.nix
foundry.nix
glances.nix
haproxy.cfg
haproxy.nix
minecraft.nix
nextcloud.nix
postgres.nix
restic.nix
torr.nix
unifi.nix
haproxy
configuration.nix
default.nix
hardware-changes.nix
hardware.nix
hydra.nix
minio.nix
networking.nix
nextcloud.nix
secrets.yaml
vars.nix
zfs.nix
users
utils
.envrc
.gitconfig
.gitignore
.sops.yaml
CONTRIBUTING.md
README.md
checks.nix
flake.lock
flake.nix
shell.nix
statix.toml
treefmt.toml
nix-dotfiles/systems/palatine-hill/docker/minecraft.nix

80 lines
1.9 KiB
Nix
Raw Normal View History

{ config, lib, ... }:
let
servers = {
atm6 = "atm6.alicehuston.xyz";
stoneblock3 = "sb3.alicehuston.xyz";
RAD2 = "rad.alicehuston.xyz";
skyfactory = "sf.alicehuston.xyz";
divinejourney = "dj.alicehuston.xyz";
rlcraft = "rlcraft.alicehuston.xyz";
arcanum-institute = "arcanum.alicehuston.xyz";
};
defaultServer = "rlcraft";
defaultEnv = {
EULA = "true";
TYPE = "AUTO_CURSEFORGE";
STOP_SERVER_ANNOUNCE_DELAY = "120";
STOP_DURATION = "600";
SYNC_CHUNK_WRITES = "false";
USE_AIKAR_FLAGS = "true";
MEMORY = "8GB";
ALLOW_FLIGHT = "true";
MAX_TICK_TIME = "-1";
};
defaultOptions = [
"--stop-signal=SIGTERM"
"--stop-timeout=30m"
"--restart=unless-stopped"
"--network=minecraft-net"
];
vars = import ../vars.nix;
minecraft_path = "${vars.primary_games}/minecraft";
in
{
virtualisation.oci-containers.containers = {
mc-router = {
image = "itzg/mc-router:latest";
extraOptions = [
"--restart=always"
"--network=haproxy-net"
"--network=minecraft-net"
];
cmd = [
(
"--mapping=mc.alicehuston.xyz=${defaultServer}:25565"
+ (lib.rad-dev.mapAttrsToString (hostname: url: "," + url + "=" + hostname + ":25565") servers)
)
];
};
rlcraft = {
image = "itzg/minecraft-server:java8";
volumes = [
"${minecraft_path}/rlcraft/modpacks:/modpacks:ro"
"${minecraft_path}/rlcraft/data:/data"
];
hostname = "rlcraft";
environment = defaultEnv // {
VERSION = "1.12.2";
CF_SLUG = "rlcraft";
DIFFICULTY = "hard";
ENABLE_COMMAND_BLOCK = "true";
};
extraOptions = defaultOptions;
log-driver = "local";
environmentFiles = [ config.sops.secrets."docker/minecraft".path ];
};
};
sops = {
defaultSopsFile = ../secrets.yaml;
secrets = {
"docker/minecraft".owner = "docker-service";
};
};
}