99 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { 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";
 | |
|     meits = "meits.alicehuston.xyz";
 | |
|     # bcg-plus = "bcg.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=1800"
 | |
|   #   "--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";
 | |
|       pull = "always";
 | |
|       extraOptions = [
 | |
|         "--network=haproxy-net"
 | |
|         "--network=minecraft-net"
 | |
|       ];
 | |
|       cmd = [
 | |
|         (
 | |
|           "--mapping=mc.alicehuston.xyz=${defaultServer}:25565"
 | |
|           + (lib.adev.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 ];
 | |
|     # };
 | |
|     # bcg-plus = {
 | |
|     #   image = "itzg/minecraft-server:java17";
 | |
|     #   volumes = [
 | |
|     #     "${minecraft_path}/bcg-plus/modpacks:/modpacks:ro"
 | |
|     #     "${minecraft_path}/bcg-plus/data:/data"
 | |
|     #   ];
 | |
|     #   hostname = "bcg-plus";
 | |
|     #   environment = defaultEnv // {
 | |
|     #     VERSION = "1.17";
 | |
|     #     CF_SLUG = "bcg";
 | |
|     #     DIFFICULTY = "normal";
 | |
|     #     DEBUG = "true";
 | |
|     #     # 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";
 | |
|     };
 | |
|   };
 | |
| }
 |