75 lines
3.2 KiB
Nix
75 lines
3.2 KiB
Nix
|
{config, lib, pkgs, ... }:
|
||
|
|
||
|
{
|
||
|
|
||
|
imports = [ ./minecraft-server-fabric.nix ];
|
||
|
|
||
|
pvv.minecraft-server-fabric = {
|
||
|
enable = true;
|
||
|
eula = true;
|
||
|
|
||
|
package = pkgs.callPackage ../../pkgs/minecraft-server-fabric { inherit (pkgs.unstable) minecraft-server; };
|
||
|
jvmOpts = "-Xms10G -Xmx10G -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled";
|
||
|
|
||
|
serverProperties = {
|
||
|
view-distance = 32;
|
||
|
gamemode = 1;
|
||
|
enable-rcon = true;
|
||
|
"rcon.password" = "pvv";
|
||
|
};
|
||
|
|
||
|
dataDir = "/fast/minecraft-fabric";
|
||
|
|
||
|
mods = [
|
||
|
(pkgs.fetchurl { # Fabric API is a common dependency for fabric based mods
|
||
|
url = "https://cdn.modrinth.com/data/P7dR8mSH/versions/0.44.0+1.18/fabric-api-0.44.0+1.18.jar";
|
||
|
sha256 = "0mlmj7mj073a48s8zgc1km0jwkphz01c1fvivn4mw37lbm2p4834";
|
||
|
})
|
||
|
(pkgs.fetchurl { # Lithium is a 100% vanilla compatible optimization mod
|
||
|
url = "https://cdn.modrinth.com/data/gvQqBUqZ/versions/mc1.18.1-0.7.6/lithium-fabric-mc1.18.1-0.7.6.jar";
|
||
|
sha256 = "1fw1ikg578v4i6bmry7810a3q53h8yspxa3awdz7d746g91g8lf7";
|
||
|
})
|
||
|
(pkgs.fetchurl { # Starlight is the lighting engine of papermc
|
||
|
url = "https://cdn.modrinth.com/data/H8CaAYZC/versions/Starlight%201.0.0%201.18.x/starlight-1.0.0+fabric.d0a3220.jar";
|
||
|
sha256 = "0bv9im45hhc8n6x57lakh2rms0g5qb7qfx8qpx8n6mbrjjz6gla1";
|
||
|
})
|
||
|
(pkgs.fetchurl { # Krypton is a linux optimized optimizer for minecrafts networking system
|
||
|
url = "https://cdn.modrinth.com/data/fQEb0iXm/versions/0.1.6/krypton-0.1.6.jar";
|
||
|
sha256 = "1ribvbww4msrfdnzlxipk8kpzz7fnwnd4q6ln6mpjlhihcjb3hni";
|
||
|
})
|
||
|
(pkgs.fetchurl { # C2ME is a parallelizer for chunk loading and generation, experimental!!!
|
||
|
url = "https://cdn.modrinth.com/data/VSNURh3q/versions/0.2.0+alpha.5.104%201.18.1/c2me-fabric-mc1.18.1-0.2.0+alpha.5.104-all.jar";
|
||
|
sha256 = "13zrpsg61fynqnnlm7dvy3ihxk8khlcqsif68ak14z7kgm4py6nw";
|
||
|
})
|
||
|
(pkgs.fetchurl { # Spark is a profiler for minecraft
|
||
|
url = "https://ci.lucko.me/job/spark/251/artifact/spark-fabric/build/libs/spark-fabric.jar";
|
||
|
sha256 = "1clvi5v7a14ba23jbka9baz99h6wcfjbadc8kkj712fmy2h0sx07";
|
||
|
})
|
||
|
(pkgs.fetchurl { # Carpetmod gives you tps views in the tab menu,
|
||
|
# but also adds a lot of optional serverside vanilla+ features (which we arent using).
|
||
|
# So probably want something else
|
||
|
url = "https://github.com/gnembon/fabric-carpet/releases/download/1.4.56/fabric-carpet-1.18-1.4.56+v211130.jar";
|
||
|
sha256 = "0rvl2yb8xymla8c052j07gqkqfkz4h5pxf6aip2v9v0h8r84p9hf";
|
||
|
})
|
||
|
];
|
||
|
};
|
||
|
|
||
|
networking.firewall.allowedTCPPorts = [ 25565 ];
|
||
|
networking.firewall.allowedUDPPorts = [ 25565 ];
|
||
|
|
||
|
systemd.services."minecraft-backup" = {
|
||
|
serviceConfig.Type = "oneshot";
|
||
|
script = ''
|
||
|
${pkgs.mcrcon}/bin/mcrcon -p pvv "say Starting Backup" "save-off" "save-all"
|
||
|
${pkgs.rsync}/bin/rsync -avz --delete ${config.pvv.minecraft-server-fabric.dataDir}/world /fast/backup # Where to put backup
|
||
|
${pkgs.mcrcon}/bin/mcrcon -p pvv "save-all" "say Completed Backup" "save-on" "save-all"
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
systemd.timers."minecraft-backup" = {
|
||
|
wantedBy = ["timers.target"];
|
||
|
timerConfig.OnCalendar = [ "hourly" ];
|
||
|
};
|
||
|
|
||
|
}
|