{ callPackage, writeTextFile, writeShellScriptBin, minecraft-server, jre_headless }: let loader = callPackage ./generate-loader.nix {}; log4j = writeTextFile { name = "log4j.xml"; text = '' <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN" packages="com.mojang.util"> <Appenders> <Console name="SysOut" target="SYSTEM_OUT"> <PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level]: %msg%n" /> </Console> <Queue name="ServerGuiConsole"> <PatternLayout pattern="[%d{HH:mm:ss} %level]: %msg%n" /> </Queue> <RollingRandomAccessFile name="File" fileName="logs/latest.log" filePattern="logs/%d{yyyy-MM-dd}-%i.log.gz"> <PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level]: %msg%n" /> <Policies> <TimeBasedTriggeringPolicy /> <OnStartupTriggeringPolicy /> </Policies> <DefaultRolloverStrategy max="1000"/> </RollingRandomAccessFile> </Appenders> <Loggers> <Root level="info"> <filters> <MarkerFilter marker="NETWORK_PACKETS" onMatch="DENY" onMismatch="NEUTRAL" /> </filters> <AppenderRef ref="SysOut"/> <AppenderRef ref="File"/> <AppenderRef ref="ServerGuiConsole"/> </Root> </Loggers> </Configuration> ''; }; in writeShellScriptBin "minecraft-server" '' echo "serverJar=${minecraft-server}/lib/minecraft/server.jar" >> fabric-server-launcher.properties exec ${jre_headless}/bin/java -Dlog4j.configurationFile=${log4j} $@ -jar ${loader} nogui ''