nixpkgs-suyu/pkgs/games/minecraft/default.nix

152 lines
3.3 KiB
Nix
Raw Normal View History

{ stdenv
, fetchurl
, makeDesktopItem
, makeWrapper
, wrapGAppsHook
, gobject-introspection
, jre # old or modded versions of the game may require Java 8 (https://aur.archlinux.org/packages/minecraft-launcher/#pinned-674960)
, xorg
, zlib
, nss
, nspr
, fontconfig
, gnome2
, cairo
, expat
, alsaLib
, cups
, dbus
, atk
2019-10-26 22:55:05 +02:00
, gtk3-x11
, gtk2-x11
, gdk-pixbuf
, glib
, curl
, freetype
, libpulseaudio
2020-05-30 14:07:06 +02:00
, libuuid
, systemd
, flite ? null
, libXxf86vm ? null
}:
let
desktopItem = makeDesktopItem {
name = "minecraft-launcher";
exec = "minecraft-launcher";
icon = "minecraft-launcher";
comment = "Official launcher for Minecraft, a sandbox-building game";
desktopName = "Minecraft Launcher";
categories = "Game;";
};
envLibPath = stdenv.lib.makeLibraryPath [
2020-05-30 14:07:06 +02:00
curl
libpulseaudio
systemd
alsaLib # needed for narrator
flite # needed for narrator
libXxf86vm # needed only for versions <1.13
];
2018-12-01 23:56:01 +01:00
libPath = stdenv.lib.makeLibraryPath ([
alsaLib
atk
cairo
cups
dbus
expat
fontconfig
freetype
gdk-pixbuf
glib
gnome2.GConf
gnome2.pango
2019-10-26 22:55:05 +02:00
gtk3-x11
gtk2-x11
nspr
nss
stdenv.cc.cc
zlib
2020-05-30 14:07:06 +02:00
libuuid
] ++
(with xorg; [
libX11
libxcb
libXcomposite
libXcursor
libXdamage
libXext
libXfixes
libXi
libXrandr
libXrender
libXtst
libXScrnSaver
]));
in
2020-05-30 14:07:06 +02:00
stdenv.mkDerivation rec {
pname = "minecraft-launcher";
2020-07-26 19:04:04 +02:00
version = "2.1.16102";
src = fetchurl {
url = "https://launcher.mojang.com/download/linux/x86_64/minecraft-launcher_${version}.tar.gz";
2020-07-26 19:04:04 +02:00
sha256 = "17zgxmijk9mq651h7ymkr7h2099cw23kc0r7jyfkdccp60dfd60i";
};
icon = fetchurl {
url = "https://launcher.mojang.com/download/minecraft-launcher.svg";
sha256 = "0w8z21ml79kblv20wh5lz037g130pxkgs8ll9s3bi94zn2pbrhim";
};
nativeBuildInputs = [ makeWrapper wrapGAppsHook ];
buildInputs = [ gobject-introspection ];
sourceRoot = ".";
dontWrapGApps = true;
dontConfigure = true;
dontBuild = true;
installPhase = ''
mkdir -p $out/opt
mv minecraft-launcher $out/opt
${desktopItem.buildCommand}
install -D $icon $out/share/icons/hicolor/symbolic/apps/minecraft-launcher.svg
'';
preFixup = ''
patchelf \
--set-interpreter ${stdenv.cc.bintools.dynamicLinker} \
--set-rpath '$ORIGIN/'":${libPath}" \
$out/opt/minecraft-launcher/minecraft-launcher
patchelf \
--set-rpath '$ORIGIN/'":${libPath}" \
$out/opt/minecraft-launcher/libcef.so
patchelf \
--set-rpath '$ORIGIN/'":${libPath}" \
$out/opt/minecraft-launcher/liblauncher.so
'';
postFixup = ''
# Do not create `GPUCache` in current directory
makeWrapper $out/opt/minecraft-launcher/minecraft-launcher $out/bin/minecraft-launcher \
--prefix LD_LIBRARY_PATH : ${envLibPath} \
--prefix PATH : ${stdenv.lib.makeBinPath [ jre ]} \
--set JAVA_HOME ${stdenv.lib.makeBinPath [ jre ]} \
--run "cd /tmp" \
"''${gappsWrapperArgs[@]}"
'';
meta = with stdenv.lib; {
description = "Official launcher for Minecraft, a sandbox-building game";
homepage = "https://minecraft.net";
maintainers = with maintainers; [ cpages ryantm infinisil ];
license = licenses.unfree;
2020-05-30 13:56:15 +02:00
platforms = [ "x86_64-linux" ];
};
passthru.updateScript = ./update.sh;
}