Add forge minecraft service

This commit is contained in:
Tristan Daniël Maat 2021-04-22 22:32:54 +01:00
parent 1d95c40075
commit b474f7e97c
Signed by: tlater
GPG key ID: 49670FD774E43268
6 changed files with 231 additions and 10 deletions
configuration
default.nix
services
configs/minecraft/voor-kia
minecraft.nix

View file

@ -3,6 +3,7 @@
{
imports = [
./services/gitea.nix
./services/minecraft.nix
./services/nextcloud.nix
./services/webserver.nix
./ids.nix

View file

@ -0,0 +1,52 @@
#Minecraft server properties
#Thu Apr 08 21:07:16 BST 2021
allow-flight=true
allow-nether=true
broadcast-console-to-ops=true
broadcast-rcon-to-ops=true
difficulty=normal
enable-command-block=false
enable-jmx-monitoring=false
enable-query=false
enable-rcon=false
enable-status=true
enforce-whitelist=true
entity-broadcast-range-percentage=100
force-gamemode=false
function-permission-level=2
gamemode=survival
generate-structures=true
generator-settings=
hardcore=false
level-name=world
level-seed=
level-type=default
max-build-height=256
max-players=5
max-tick-time=-1
max-world-size=29999984
motd=Minecraft met Kia en die broers
network-compression-threshold=256
online-mode=true
op-permission-level=4
player-idle-timeout=0
prevent-proxy-connections=false
pvp=false
query.port=25565
rate-limit=0
rcon.password=
rcon.port=25575
resource-pack=
resource-pack-sha1=
server-ip=
server-port=25565
snooper-enabled=true
spawn-animals=true
spawn-monsters=true
spawn-npcs=true
spawn-protection=1
sync-chunk-writes=true
text-filtering-config=
use-native-transport=true
view-distance=10
white-list=true

View file

@ -0,0 +1,94 @@
{ config, pkgs, ... }:
let
minecraft-server-args = [
"-Xms2G"
"-Xmx2G"
"-Dsun.rmi.dgc.server.gcInterval=2157583646"
"-XX:+UseG1GC"
"-XX:+ParallelRefProcEnabled"
"-XX:MaxGCPauseMillis=200"
"-XX:+UnlockExperimentalVMOptions"
"-XX:+DisableExplicitGC"
"-XX:+AlwaysPreTouch"
"-XX:G1NewSizePercent=30"
"-XX:G1MaxNewSizePercent=40"
"-XX:G1HeapRegionSize=8M"
"-XX:G1ReservePercent=20"
"-XX:G1HeapWastePercent=5"
"-XX:G1MixedGCCountTarget=4"
"-XX:InitiatingHeapOccupancyPercent=15"
"-XX:G1MixedGCLiveThresholdPercent=90"
"-XX:G1RSetUpdatingPauseTimePercent=5"
"-XX:SurvivorRatio=32"
"-XX:+PerfDisableSharedMem"
"-XX:MaxTenuringThreshold=1"
];
ops = pkgs.writeText "ops.json" (builtins.toJSON [{
uuid = "140d177a-966f-41b8-a4c0-e305babd291b";
name = "TLATER";
level = 4;
bypassesPlayerLimit = true;
}]);
whitelist = pkgs.writeText "whitelist.json" (builtins.toJSON [
{
uuid = "59cd1648-14a4-4bcf-8f5a-2e1bde678f2c";
name = "romino25";
}
{
uuid = "0ab6e3d1-544a-47e7-8538-2e6c248e49a4";
name = "lasi25";
}
{
uuid = "01c9e737-fc9d-4d55-b8c2-610ca80eb4be";
name = "Nampeyo25";
}
{
uuid = "140d177a-966f-41b8-a4c0-e305babd291b";
name = "tlater";
}
]);
eula = pkgs.writeText "eula.txt" "eula=true";
in {
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (pkgs.lib.getName pkg) [ "forge-server" ];
virtualisation.oci-containers.containers.minecraft-voor-kia =
let properties = ./configs/minecraft/voor-kia/server.properties;
in {
image = "tlaternet/minecraft-voor-kia";
imageFile = pkgs.dockerTools.buildImage {
name = "tlaternet/minecraft-voor-kia";
tag = "latest";
contents = [
(pkgs.local.forge-server.override {
jre_headless = pkgs.jdk11_headless;
})
];
config = let
# Use the upstream minecraft uid
uid = toString config.ids.uids.minecraft;
gid = toString config.users.groups.nogroup.gid;
in {
Cmd = [ "forge-server" ] ++ minecraft-server-args;
WorkingDir = "/var/lib/minecraft";
Volumes = { "/var/lib/minecraft" = { }; };
ExposedPorts = { "25565" = { }; };
User = "${uid}:${gid}";
};
};
autoStart = false;
ports = [ "25565:25565" ];
volumes = [
"minecraft:/var/lib/minecraft"
"${properties}:/var/lib/minecraft/server.properties:ro"
"${ops}:/var/lib/minecraft/ops.json:ro"
"${whitelist}:/var/lib/minecraft/whitelist.json:ro"
"${eula}:/var/lib/minecraft/eula.txt:ro"
];
};
}