pandora-launcher: init at 5.2.2 (#510425)
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
{
|
||||
addDriverRunpath,
|
||||
lib,
|
||||
stdenv,
|
||||
rustPlatform,
|
||||
fetchFromGitHub,
|
||||
imagemagick,
|
||||
patchelf,
|
||||
pkg-config,
|
||||
|
||||
alsa-lib,
|
||||
dbus,
|
||||
fontconfig,
|
||||
libGL,
|
||||
libseccomp,
|
||||
libxcb,
|
||||
libxkbcommon,
|
||||
openssl,
|
||||
vulkan-loader,
|
||||
wayland,
|
||||
|
||||
copyDesktopItems,
|
||||
makeDesktopItem,
|
||||
|
||||
apple-sdk_15,
|
||||
|
||||
msaClientID ? null,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "pandora-launcher-unwrapped";
|
||||
version = "5.2.2";
|
||||
|
||||
strictDeps = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Moulberry";
|
||||
repo = "PandoraLauncher";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-jUvCrz8srRRlXcrFWQ5Kx8V6KLc8cozZg+QYrcnMOUE=";
|
||||
};
|
||||
|
||||
# Currently the client id is hardcoded and must be patched like this.
|
||||
postPatch = lib.optionalString (msaClientID != null) ''
|
||||
substituteInPlace crates/auth/src/constants.rs \
|
||||
--replace-fail \
|
||||
'pub const CLIENT_ID: &str = "e5226706-5096-431d-9516-ae48fe263401";' \
|
||||
'pub const CLIENT_ID: &str = "${msaClientID}";'
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
rustPlatform.bindgenHook
|
||||
copyDesktopItems
|
||||
|
||||
imagemagick
|
||||
patchelf
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
fontconfig
|
||||
openssl
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||
alsa-lib
|
||||
dbus
|
||||
libseccomp
|
||||
libxcb
|
||||
libxkbcommon
|
||||
wayland
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
apple-sdk_15
|
||||
];
|
||||
|
||||
buildFeatures = lib.optionals stdenv.hostPlatform.isDarwin [ "gpui/runtime_shaders" ];
|
||||
|
||||
doCheck = false; # there aren't any tests
|
||||
|
||||
env.OPENSSL_NO_VENDOR = true;
|
||||
|
||||
dontUpdateAutotoolsGnuConfigScripts = true; # will modify vendor dir, which cargo doesn't allow
|
||||
cargoVendorDir = "vendor"; # everything is vendored in-tree
|
||||
dontCargoSetupPostUnpack = true;
|
||||
|
||||
desktopItems = lib.singleton (makeDesktopItem {
|
||||
name = "com.moulberry.pandoralauncher";
|
||||
desktopName = "Pandora Launcher";
|
||||
genericName = "Unofficial Minecraft Launcher";
|
||||
exec = "pandora_launcher";
|
||||
icon = "pandora_launcher";
|
||||
});
|
||||
|
||||
postInstall = ''
|
||||
for size in 16 24 32 48 64 128 256; do
|
||||
geometry="$size"x"$size"
|
||||
mkdir -p "$out/share/icons/hicolor/$geometry/apps"
|
||||
magick package/windows.svg -resize "$geometry" \
|
||||
"$out/share/icons/hicolor/$geometry/apps/pandora_launcher.png"
|
||||
done
|
||||
'';
|
||||
|
||||
doInstallCheck = true;
|
||||
|
||||
installCheckPhase =
|
||||
let
|
||||
expectedOutput = builtins.toFile "pandora-launcher-help-expected" ''
|
||||
Usage: pandora_launcher [OPTIONS]
|
||||
|
||||
Options:
|
||||
--run-instance <RUN_INSTANCE> Instance to launch, instead of opening the launcher
|
||||
-h, --help Print help
|
||||
'';
|
||||
in
|
||||
''
|
||||
runHook preInstallCheck
|
||||
|
||||
diff <($out/bin/pandora_launcher --help) ${expectedOutput}
|
||||
|
||||
runHook postInstallCheck
|
||||
'';
|
||||
|
||||
postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
patchelf --add-rpath "${addDriverRunpath.driverLink}/lib:${
|
||||
lib.makeLibraryPath [
|
||||
libGL
|
||||
vulkan-loader
|
||||
wayland
|
||||
]
|
||||
}" $out/bin/pandora_launcher
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Minecraft launcher that balances ease-of-use with powerful instance management features";
|
||||
homepage = "https://github.com/Moulberry/PandoraLauncher";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [
|
||||
dtomvan
|
||||
eveeifyeve
|
||||
];
|
||||
mainProgram = "pandora_launcher";
|
||||
};
|
||||
})
|
||||
@@ -0,0 +1,142 @@
|
||||
# adapted from prismlauncher's wrapper, since they both include libs for
|
||||
# launching minecraft. I can't do `prismlauncher.override
|
||||
# { prismlauncher-unwrapped = pandora-launcher-unwrapped; }` though, since
|
||||
# pandora isn't a QT app (and most likely future subtle differences).
|
||||
{
|
||||
addDriverRunpath,
|
||||
alsa-lib,
|
||||
flite,
|
||||
gamemode,
|
||||
glfw3-minecraft,
|
||||
jdk17,
|
||||
jdk21,
|
||||
jdk25,
|
||||
jdk8,
|
||||
lib,
|
||||
libGL,
|
||||
libjack2,
|
||||
libpulseaudio,
|
||||
libusb1,
|
||||
libx11,
|
||||
libxcursor,
|
||||
libxext,
|
||||
libxrandr,
|
||||
libxxf86vm,
|
||||
makeWrapper,
|
||||
openal,
|
||||
pandora-launcher-unwrapped,
|
||||
pciutils,
|
||||
pipewire,
|
||||
stdenv,
|
||||
symlinkJoin,
|
||||
udev,
|
||||
vulkan-loader,
|
||||
xrandr,
|
||||
|
||||
additionalLibs ? [ ],
|
||||
additionalPrograms ? [ ],
|
||||
controllerSupport ? stdenv.hostPlatform.isLinux,
|
||||
gamemodeSupport ? stdenv.hostPlatform.isLinux,
|
||||
jdks ? [
|
||||
jdk25
|
||||
jdk21
|
||||
jdk17
|
||||
jdk8
|
||||
],
|
||||
msaClientID ? null,
|
||||
textToSpeechSupport ? stdenv.hostPlatform.isLinux,
|
||||
}:
|
||||
|
||||
assert lib.assertMsg (
|
||||
controllerSupport -> stdenv.hostPlatform.isLinux
|
||||
) "controllerSupport only has an effect on Linux.";
|
||||
|
||||
assert lib.assertMsg (
|
||||
textToSpeechSupport -> stdenv.hostPlatform.isLinux
|
||||
) "textToSpeechSupport only has an effect on Linux.";
|
||||
|
||||
let
|
||||
pandora-launcher' = pandora-launcher-unwrapped.override { inherit msaClientID; };
|
||||
in
|
||||
|
||||
symlinkJoin {
|
||||
pname = "pandora-launcher";
|
||||
inherit (pandora-launcher') version;
|
||||
|
||||
strictDeps = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
paths = [ pandora-launcher' ];
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
makeWrapperArgs =
|
||||
let
|
||||
runtimeLibs = [
|
||||
|
||||
(lib.getLib stdenv.cc.cc)
|
||||
## native versions
|
||||
glfw3-minecraft
|
||||
openal
|
||||
|
||||
## openal
|
||||
alsa-lib
|
||||
libjack2
|
||||
libpulseaudio
|
||||
pipewire
|
||||
|
||||
## glfw
|
||||
libGL
|
||||
libx11
|
||||
libxcursor
|
||||
libxext
|
||||
libxrandr
|
||||
libxxf86vm
|
||||
|
||||
udev # oshi
|
||||
|
||||
vulkan-loader # VulkanMod's lwjgl
|
||||
]
|
||||
++ lib.optional textToSpeechSupport flite
|
||||
++ lib.optional gamemodeSupport gamemode.lib
|
||||
++ lib.optional controllerSupport libusb1
|
||||
++ additionalLibs;
|
||||
|
||||
runtimePrograms = [
|
||||
pciutils # need lspci
|
||||
xrandr # needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128
|
||||
]
|
||||
++ additionalPrograms;
|
||||
|
||||
in
|
||||
[
|
||||
"--prefix"
|
||||
"FORCE_EXTERNAL_JAVA"
|
||||
":"
|
||||
(lib.concatStringsSep ":" (map (jdk: jdk.home) jdks))
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||
"--set"
|
||||
"LD_LIBRARY_PATH"
|
||||
"${addDriverRunpath.driverLink}/lib:${lib.makeLibraryPath runtimeLibs}"
|
||||
|
||||
"--prefix"
|
||||
"PATH"
|
||||
":"
|
||||
(lib.makeBinPath runtimePrograms)
|
||||
];
|
||||
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/pandora_launcher "''${makeWrapperArgs[@]}"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
inherit (pandora-launcher'.meta)
|
||||
description
|
||||
homepage
|
||||
license
|
||||
maintainers
|
||||
mainProgram
|
||||
;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user