{ pkgs, config, lib, ... }: let rsyncSSHKeys = config.users.users.agatha.openssh.authorizedKeys.keys ++ config.users.users.julia.openssh.authorizedKeys.keys; jre8 = pkgs.temurin-bin-8; jre17 = pkgs.temurin-bin-17; jvmOpts = lib.concatStringsSep " " [ "-XX:+UseG1GC" "-XX:+ParallelRefProcEnabled" "-XX:MaxGCPauseMillis=200" "-XX:+UnlockExperimentalVMOptions" "-XX:+DisableExplicitGC" "-XX:+AlwaysPreTouch" "-XX:G1NewSizePercent=40" "-XX:G1MaxNewSizePercent=50" "-XX:G1HeapRegionSize=16M" "-XX:G1ReservePercent=15" "-XX:G1HeapWastePercent=5" "-XX:G1MixedGCCountTarget=4" "-XX:InitiatingHeapOccupancyPercent=20" "-XX:G1MixedGCLiveThresholdPercent=90" "-XX:G1RSetUpdatingPauseTimePercent=5" "-XX:SurvivorRatio=32" "-XX:+PerfDisableSharedMem" "-XX:MaxTenuringThreshold=1" ]; serverDefaults = { white-list = true; spawn-protection = 0; allow-flight = true; max-tick-time = 2 * 60 * 1000; }; in { services.modded-minecraft-servers = { eula = true; instances = { # End to End encrypted modded minecraft yay e2e = { enable = false; inherit rsyncSSHKeys jvmOpts; jvmInitialAllocation = "1G"; jvmMaxAllocation = "8G"; jvmPackage = jre8; serverConfig = serverDefaults // { server-port = 25565; rcon-port = 25566; motd = "Enigmeowtica 2: Expert"; extra-options.level-type = "BIOMESOP"; }; }; enigmatica-8 = { enable = false; inherit rsyncSSHKeys jvmOpts; jvmInitialAllocation = "1G"; jvmMaxAllocation = "8G"; jvmPackage = jre17; serverConfig = serverDefaults // { server-port = 25567; rcon-port = 25568; motd = "Enigmeowtica 8"; max-tick-time = 300000; }; }; }; }; systemd.services.mc-e2e.path = with pkgs; [ getconf gawk ]; users.users.agatha.packages = with pkgs; [ mcrcon ]; }