{ stdenvNoCC, unzipMcpack, minecraft-bedrock-server, lib }: { src, pname, version, mcpackVersion ? version, mcVersion ? null, mcpackId, mcpackModules ? [ ], mcpackDir ? pname, mcpackType, # "behavior_packs" or "resource_packs" etc ... }@args: let inherit (lib.strings) optionalString splitString; inherit (minecraft-bedrock-server) dataDir; argNames = [ "mcpackModules" "mcpackVersion" "mcpackId" ]; in stdenvNoCC.mkDerivation (removeAttrs args argNames // { inherit dataDir mcpackType mcpackDir; version = version + optionalString (mcVersion != null) "-${mcVersion}"; nativeBuildInputs = args.nativeBuildInputs or [ ] ++ [ unzipMcpack ]; installPhase = args.installPhase or '' install -d "$out$dataDir/$mcpackType/$mcpackDir" cp -a ./* "$out$dataDir/$mcpackType/$mcpackDir/" install ./manifest.json $manifest ''; outputs = [ "out" "manifest" ]; passthru = args.passthru or { } // { minecraft-bedrock = args.passthru.minecraft-bedrock or { } // { pack = args.passthru.minecraft-bedrock.pack or { } // { pack_id = mcpackId; modules = mcpackModules; version = splitString "." mcpackVersion; type = mcpackType; dir = mcpackDir; subPath = "${dataDir}/${mcpackType}/${mcpackDir}"; }; }; }; })