nixos-combined-flake/modules/nixos/games/minecraft/default.nix

102 lines
3.8 KiB
Nix

{ inputs, lib, ... }:
with lib;
let
operators = {
masterodie = {
uuid = "c0e67091-d6d0-4cf2-89d5-d0c6f2bd4f30";
level = 4;
bypassesPlayerLimit = true;
};
Rooomi = {
uuid = "5c5b4a28-e292-46fa-bf92-3b21f577c30e";
level = 4;
bypassesPlayerLimit = true;
};
};
whitelist = { } // attrsets.mapAttrs (n: v: v.uuid) operators;
jvmArgs = "-XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:+UseNUMA -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:+UseVectorCmov -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:ThreadPriorityPolicy=1 -XX:AllocatePrefetchStyle=3 -XX:+UseG1GC -XX:MaxGCPauseMillis=130 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=28 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5 -XX:G1ConcRSHotCardLimit=16 -XX:G1ConcRefinementServiceIntervalMillis=150";
in
{
imports = [
inputs.minecraft-server-flake.nixosModules.minecraft-servers
];
services.minecraft-servers = {
velocitySecret = "01KqxtMy3kEH";
openFirewall = true;
domain = "odie.home.arpa";
inherit jvmArgs;
servers = {
vanilla-plus = {
inherit whitelist operators;
stopCommand = null;
enable = true;
autoStart = false;
openFirewall = true;
serverProperties = {
online-mode = false;
enforce-secure-profile = true;
server-name = "GajaCraft Survival";
server-port = 25566;
server-ip = "127.0.0.1";
difficulty = "easy";
gamemode = "survival";
max-players = 10;
white-list = true;
enforce-whitelist = true;
pause-when-empty-seconds = 1;
force-gamemode = true;
view-distance = 12;
};
};
flat = {
inherit whitelist operators;
enable = true;
stopCommand = null;
autoStart = false;
serverProperties = {
online-mode = false;
enforce-secure-profile = true;
server-name = "GajaCraft Creative Flat";
server-port = 25567;
server-ip = "127.0.0.1";
difficulty = "hard";
gamemode = "creative";
max-players = 10;
white-list = true;
enforce-whitelist = true;
pause-when-empty-seconds = 1;
force-gamemode = true;
view-distance = 12;
generate-structures = false;
level-type = "minecraft:flat";
generator-settings = ''{"biome": "minecraft:desert", "layers": [ { "block": "minecraft:bedrock", "height": 1 }, { "block": "minecraft:sandstone", "height": 62 } ] }'';
};
};
velocity.enable = true;
};
extraOptions = {
flat = {
memory = "2G";
port = 25567;
mapPort = 8101;
voicePort = 24455;
blacklist = [ "Discord" "bluemap" "bmm-fabric" ];
whitelist = [ "worldedit" ];
};
vanilla-plus = {
memory = "4G";
port = 25566;
mapPort = 8100;
voicePort = 24454;
blacklist = [ "Discord" "bluemap" "bmm-fabric" ];
whitelist = [ "worldedit" ];
};
velocity = {
port = 25565;
mapPort = 8100;
voicePort = 24454;
};
};
};
}