Add support for building minecraft modpacks

This commit is contained in:
Tristan Daniël Maat 2021-04-25 04:50:30 +01:00
parent b474f7e97c
commit a9e3610744
Signed by: tlater
GPG key ID: 49670FD774E43268
6 changed files with 121 additions and 11 deletions
pkgs/minecraft

View file

@ -1,4 +1,5 @@
{ lib, stdenv, fetchurl, jre_headless, runtimeShell }:
{ lib, stdenv, fetchurl, busybox, coreutils, jre_headless, runtimeShell
, mods ? null, config ? null, defaultconfigs ? null }:
let
name = "forge-server";
@ -45,6 +46,35 @@ in stdenv.mkDerivation rec {
#!${runtimeShell}
set -eu
# Delete any previous mods directory so that it can be updated
${busybox}/bin/rm -fr mods
${lib.optionalString (mods != null) ''
# Copy the specified mods into the directory. Note that, sadly,
# forge doesn't support symlinks here.
${busybox}/bin/mkdir -p mods
${busybox}/bin/cp -r '${mods}/mods/'*.jar mods
''}
# Delete any previous config directories so that they can be updated
${busybox}/bin/rm -fr config defaultconfigs
${lib.optionalString (config != null) ''
# Copy the specified configs into the directory. Forge (and
# mods) will try to write here, so we cannot symlink.
${busybox}/bin/mkdir -p config
${busybox}/bin/cp -r '${config}'/* config
${busybox}/bin/chmod -R u+w config
''}
${lib.optionalString (defaultconfigs != null) ''
# Copy the specified configs into the directory. Forge (and
# mods) will try to write here, so we cannot symlink.
${busybox}/bin/mkdir -p defaultconfigs
${busybox}/bin/cp -r '${defaultconfigs}'/* defaultconfigs
${busybox}/bin/chmod -R u+w defaultconfigs
''}
exec ${jre_headless}/bin/java \$@ -jar $out'/lib/forge/forge-${version}.jar' nogui
EOF