Add minecraft service
This is an initial configuration to restore old services. Obviously, vendoring everything in a tarball is pretty awful, and if I ever wanted to open source this, that would be a problem. I intend to create a proper derivation in time, but including mods is difficult from some initial experimentation.
This commit is contained in:
parent
74a19ed164
commit
1f0c70f1c2
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
*.tar.gz filter=lfs diff=lfs merge=lfs -text
|
2
Makefile
2
Makefile
|
@ -5,7 +5,7 @@ tlaternet.qcow2:
|
|||
nix-shell -p qemu --run 'qemu-img create -f qcow2 $@ 10G'
|
||||
|
||||
run: result tlaternet.qcow2
|
||||
QEMU_OPTS="-m 4096 -nographic" QEMU_NET_OPTS="hostfwd=tcp::2222-:2222,hostfwd=tcp::8000-:80" ./result/bin/run-tlaternet-vm
|
||||
QEMU_OPTS="-m 4096 -nographic" QEMU_NET_OPTS="hostfwd=tcp::2222-:2222,hostfwd=tcp::8000-:80,hostfwd=tcp::25565-:25565" ./result/bin/run-tlaternet-vm
|
||||
|
||||
format: $(wildcard etc/nixos/**/*.nix)
|
||||
nix-shell -p nixpkgs-fmt --run 'nixpkgs-fmt $^'
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
./services/gitea.nix
|
||||
./services/nextcloud.nix
|
||||
./services/tlaternet.nix
|
||||
./services/minecraft.nix
|
||||
];
|
||||
|
||||
networking = {
|
||||
|
@ -32,6 +33,7 @@
|
|||
443
|
||||
2222
|
||||
2221
|
||||
25565
|
||||
];
|
||||
};
|
||||
};
|
||||
|
|
BIN
etc/nixos/services/configs/minecraft.tar.gz
(Stored with Git LFS)
Normal file
BIN
etc/nixos/services/configs/minecraft.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
126
etc/nixos/services/minecraft.nix
Normal file
126
etc/nixos/services/minecraft.nix
Normal file
|
@ -0,0 +1,126 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
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 = "140d177a-966f-41b8-a4c0-e305babd291b";
|
||||
name = "TLATER";
|
||||
}
|
||||
]);
|
||||
properties = pkgs.writeText "server.properties" ''
|
||||
#Minecraft server properties
|
||||
#Sun Jul 19 16:04:54 GMT 2020
|
||||
max-tick-time=60000
|
||||
generator-settings=
|
||||
allow-nether=true
|
||||
force-gamemode=false
|
||||
gamemode=0
|
||||
enable-query=false
|
||||
player-idle-timeout=0
|
||||
difficulty=1
|
||||
spawn-monsters=true
|
||||
op-permission-level=4
|
||||
pvp=false
|
||||
snooper-enabled=true
|
||||
level-type=DEFAULT
|
||||
hardcore=false
|
||||
enable-command-block=false
|
||||
max-players=4
|
||||
network-compression-threshold=256
|
||||
resource-pack-sha1=
|
||||
max-world-size=29999984
|
||||
server-port=25565
|
||||
server-ip=
|
||||
spawn-npcs=true
|
||||
allow-flight=true
|
||||
level-name=world
|
||||
view-distance=15
|
||||
resource-pack=
|
||||
spawn-animals=true
|
||||
white-list=true
|
||||
generate-structures=true
|
||||
online-mode=true
|
||||
max-build-height=256
|
||||
level-seed=
|
||||
prevent-proxy-connections=false
|
||||
use-native-transport=true
|
||||
motd=Adventures met die broers
|
||||
enable-rcon=false
|
||||
'';
|
||||
|
||||
in
|
||||
{
|
||||
docker-containers = {
|
||||
minecraft = {
|
||||
image = "tlaternet/minecraft";
|
||||
imageFile = pkgs.dockerTools.buildImage {
|
||||
name = "tlaternet/minecraft";
|
||||
tag = "latest";
|
||||
runAsRoot = ''
|
||||
mkdir -p /var/lib/
|
||||
${pkgs.gzip}/bin/gzip -dc ${./configs/minecraft.tar.gz} | ${pkgs.gnutar}/bin/tar -xf - -C /var/lib
|
||||
echo 'eula=true' > /var/lib/minecraft/eula.txt
|
||||
cp -f ${properties} /var/lib/minecraft
|
||||
'';
|
||||
config = {
|
||||
Cmd = [ "${pkgs.jre_headless}/bin/java"
|
||||
"-Xms2G"
|
||||
"-Xmx2G"
|
||||
# Using recommended flags from https://mcflags.emc.gs
|
||||
"-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"
|
||||
"-jar"
|
||||
"/var/lib/minecraft/forge-1.12.2-14.23.5.2854.jar"
|
||||
"nogui"
|
||||
];
|
||||
Volumes = {
|
||||
"/var/lib/minecraft/world" = {};
|
||||
};
|
||||
WorkingDir = "/var/lib/minecraft";
|
||||
ExposedPorts = {
|
||||
"25565" = {};
|
||||
};
|
||||
};
|
||||
};
|
||||
ports = [
|
||||
"25565:25565"
|
||||
];
|
||||
volumes = [
|
||||
"${ops}:/var/lib/minecraft/ops.json:ro"
|
||||
"${whitelist}:/var/lib/minecraft/whitelist.json:ro"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue