forked from Bun/nixos-config
This neoforge server isn't freaking working
This commit is contained in:
parent
c240c3f00d
commit
c3ee9a15ed
15 changed files with 3445 additions and 11 deletions
53
pkgs/forge-servers/default.nix
Normal file
53
pkgs/forge-servers/default.nix
Normal file
|
@ -0,0 +1,53 @@
|
|||
# based on:
|
||||
# - https://github.com/Infinidoge/nix-minecraft/blob/ab4790259bf8ed20f4417de5a0e5ee592094c7c3/pkgs/fabric-servers/default.nix
|
||||
# - https://github.com/Faeranne/nix-minecraft/blob/f4e4514f1d65b6a19704eab85070741e40c1d272/pkgs/forge-servers/default.nix
|
||||
{ callPackage
|
||||
, lib
|
||||
, jre8_headless
|
||||
, jre_headless
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
loader_versions = lib.importJSON ./lock_launcher.json;
|
||||
|
||||
# Older Minecraft versions that were written for Java 8, required Java 8.
|
||||
# Mojang has since rewritten a lot of their codebase so that Java versions
|
||||
# are no longer as important for stability as they used to be. Meaning we can
|
||||
# target latest the latest JDK for all newer versions of Minecraft.
|
||||
# TODO: Assert that jre_headless >= java version
|
||||
getJavaVersion = v: if v == 8 then jre8_headless else jre_headless;
|
||||
|
||||
# Copied from https://github.com/Infinidoge/nix-minecraft/blob/ab4790259bf8ed20f4417de5a0e5ee592094c7c3/lib/default.nix
|
||||
chain = {
|
||||
func = id;
|
||||
__functor = self: input:
|
||||
if (typeOf input) == "lambda"
|
||||
then self // { func = e: input (self.func e); }
|
||||
else self.func input;
|
||||
};
|
||||
|
||||
escapeVersion = replaceStrings [ "." " " ] [ "_" "_" ];
|
||||
|
||||
isNormalVersion = v: isList (match "([[:digit:]]+\.[[:digit:]]+(\.[[:digit:]]+)?)" v);
|
||||
|
||||
latestVersion = versions: chain
|
||||
(filter isNormalVersion)
|
||||
(sort versionOlder)
|
||||
last
|
||||
(attrNames versions);
|
||||
#####
|
||||
|
||||
mkServer = gameVersion: (callPackage ./server.nix {
|
||||
inherit gameVersion;
|
||||
loaderVersion = latestVersion loader_versions.${gameVersion};
|
||||
jre_headless = getJavaVersion 17;
|
||||
loaderDrv = ./derivation.nix;
|
||||
extraJavaArgs = "-Dlog4j.configurationFile=${./log4j.xml}";
|
||||
});
|
||||
|
||||
gameVersions = attrNames loader_versions;
|
||||
|
||||
packagesRaw = lib.genAttrs gameVersions mkServer;
|
||||
packages = lib.mapAttrs' (version: drv: nameValuePair "forge-${escapeVersion version}" drv) packagesRaw;
|
||||
in
|
||||
packages
|
Loading…
Add table
Add a link
Reference in a new issue