add nixfiles.lib.minecraft library
Contains one function, mkServer, which makes configuring a server slightly more user friendly as well as implementing a few default server options.
This commit is contained in:
parent
25c595f32e
commit
7f88009432
@ -4,4 +4,5 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
types = (import ./types.nix) pkgs;
|
types = (import ./types.nix) pkgs;
|
||||||
|
minecraft = (import ./minecraft.nix) pkgs;
|
||||||
}
|
}
|
||||||
|
63
lib/nixfiles/minecraft.nix
Normal file
63
lib/nixfiles/minecraft.nix
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
pkgs:
|
||||||
|
let
|
||||||
|
inherit (pkgs) lib;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
mkServer = { modpack ? null, modpackSymlinks ? [], modpackFiles ? [], jvmOpts ? null, ...}@opts: let
|
||||||
|
# log4j exploit is bad and scary and i have no idea if this is still needed
|
||||||
|
# but it's best to be on the safe side
|
||||||
|
jvmOptsPatched = let
|
||||||
|
requiredJvmOpts = "-Dlog4j2.formatMsgNoLookups=true";
|
||||||
|
in if (!(builtins.isNull jvmOpts))
|
||||||
|
then requiredJvmOpts + " " + jvmOpts
|
||||||
|
else requiredJvmOpts;
|
||||||
|
|
||||||
|
symlinks = lib.genAttrs modpackSymlinks (path: "${modpack}/${path}");
|
||||||
|
files = lib.genAttrs modpackFiles (path: "${modpack}/${path}");
|
||||||
|
|
||||||
|
serverPackage = let
|
||||||
|
mcVersion = modpack.manifest.versions.minecraft;
|
||||||
|
fixedVersion = lib.replaceStrings [ "." ] [ "_" ] mcVersion;
|
||||||
|
quiltVersion = modpack.manifest.versions.quilt or null;
|
||||||
|
fabricVersion = modpack.manifest.versions.fabric or null;
|
||||||
|
loader = if (!(builtins.isNull quiltVersion)) then "quilt" else "fabric";
|
||||||
|
loaderVersion = if loader == "quilt" then quiltVersion else fabricVersion;
|
||||||
|
in pkgs.minecraftServers."${loader}-${fixedVersion}".override { inherit loaderVersion; };
|
||||||
|
|
||||||
|
in lib.mkMerge [
|
||||||
|
(lib.mkIf (!(builtins.isNull modpack)) {
|
||||||
|
inherit symlinks files;
|
||||||
|
package = lib.mkDefault serverPackage;
|
||||||
|
})
|
||||||
|
{
|
||||||
|
autoStart = lib.mkDefault true;
|
||||||
|
jvmOpts = jvmOptsPatched;
|
||||||
|
whitelist = lib.mkDefault {
|
||||||
|
NullBite = "e24e8e0e-7540-4126-b737-90043155bcd4";
|
||||||
|
Silveere = "468554f1-27cd-4ea1-9308-3dd14a9b1a12";
|
||||||
|
YzumThreeEye = "3dad78e8-6979-404f-820e-952ce20964a0";
|
||||||
|
};
|
||||||
|
serverProperties = {
|
||||||
|
# allows no chat reports to run
|
||||||
|
enforce-secure-profile = lib.mkDefault false;
|
||||||
|
|
||||||
|
# whitelist
|
||||||
|
white-list = lib.mkDefault true;
|
||||||
|
enforce-whitelist = lib.mkDefault true;
|
||||||
|
|
||||||
|
motd = lib.mkDefault "owo what's this (nix preset edition)";
|
||||||
|
enable-rcon = lib.mkDefault false;
|
||||||
|
|
||||||
|
# btrfs performance fix
|
||||||
|
sync-chunk-writes = lib.mkDefault false;
|
||||||
|
|
||||||
|
# this helps with some mod support. disable it on public servers.
|
||||||
|
allow-flight = lib.mkDefault true;
|
||||||
|
|
||||||
|
# no telemetry
|
||||||
|
snooper-enabled = lib.mkDefault false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
(builtins.removeAttrs opts [ "modpack" "modpackSymlinks" "modpackFiles" "jvmOpts" ])
|
||||||
|
];
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user