Add forge minecraft service
This commit is contained in:
parent
1d95c40075
commit
b474f7e97c
6 changed files with 231 additions and 10 deletions
configuration/services
94
configuration/services/minecraft.nix
Normal file
94
configuration/services/minecraft.nix
Normal 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"
|
||||
];
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue