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'
|
nix-shell -p qemu --run 'qemu-img create -f qcow2 $@ 10G'
|
||||||
|
|
||||||
run: result tlaternet.qcow2
|
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)
|
format: $(wildcard etc/nixos/**/*.nix)
|
||||||
nix-shell -p nixpkgs-fmt --run 'nixpkgs-fmt $^'
|
nix-shell -p nixpkgs-fmt --run 'nixpkgs-fmt $^'
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
./services/gitea.nix
|
./services/gitea.nix
|
||||||
./services/nextcloud.nix
|
./services/nextcloud.nix
|
||||||
./services/tlaternet.nix
|
./services/tlaternet.nix
|
||||||
|
./services/minecraft.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
|
@ -32,6 +33,7 @@
|
||||||
443
|
443
|
||||||
2222
|
2222
|
||||||
2221
|
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