nixpkgs/pkgs/games/minecraft/default.nix

161 lines
3.4 KiB
Nix
Raw Normal View History

{ stdenv
, fetchurl
2020-11-28 17:42:10 +00:00
, nixosTests
2020-11-27 12:45:31 +00:00
, copyDesktopItems
, 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
2020-10-25 19:38:25 +00:00
, pango
, cairo
, expat
, alsaLib
, cups
, dbus
, atk
2019-10-26 20:55:05 +00:00
, gtk3-x11
, gtk2-x11
, gdk-pixbuf
, glib
, curl
, freetype
, libpulseaudio
2020-05-30 12:07:06 +00: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 12:07:06 +00:00
curl
libpulseaudio
systemd
alsaLib # needed for narrator
flite # needed for narrator
libXxf86vm # needed only for versions <1.13
];
2018-12-01 22:56:01 +00:00
libPath = stdenv.lib.makeLibraryPath ([
alsaLib
atk
cairo
cups
dbus
expat
fontconfig
freetype
gdk-pixbuf
glib
2020-10-25 19:38:25 +00:00
pango
2019-10-26 20:55:05 +00:00
gtk3-x11
gtk2-x11
nspr
nss
stdenv.cc.cc
zlib
2020-05-30 12:07:06 +00:00
libuuid
] ++
(with xorg; [
libX11
libxcb
libXcomposite
libXcursor
libXdamage
libXext
libXfixes
libXi
libXrandr
libXrender
libXtst
libXScrnSaver
]));
in
2020-05-30 12:07:06 +00:00
stdenv.mkDerivation rec {
pname = "minecraft-launcher";
version = "2.2.909";
src = fetchurl {
url = "https://launcher.mojang.com/download/linux/x86_64/minecraft-launcher_${version}.tar.gz";
sha256 = "15x2imr8c4m2bjfs9y1l34fpvixxdf09gqls4bqb4rdvj1vhdrh2";
};
icon = fetchurl {
url = "https://launcher.mojang.com/download/minecraft-launcher.svg";
sha256 = "0w8z21ml79kblv20wh5lz037g130pxkgs8ll9s3bi94zn2pbrhim";
};
2020-11-27 12:45:31 +00:00
nativeBuildInputs = [ makeWrapper wrapGAppsHook copyDesktopItems ];
buildInputs = [ gobject-introspection ];
sourceRoot = ".";
dontWrapGApps = true;
dontConfigure = true;
dontBuild = true;
installPhase = ''
2020-11-27 12:45:31 +00:00
runHook preInstall
mkdir -p $out/opt
mv minecraft-launcher $out/opt
install -D $icon $out/share/icons/hicolor/symbolic/apps/minecraft-launcher.svg
2020-11-27 12:45:31 +00:00
runHook postInstall
'';
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.getBin jre} \
--run "cd /tmp" \
"''${gappsWrapperArgs[@]}"
'';
2020-11-27 12:45:31 +00:00
desktopItems = [ desktopItem ];
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 11:56:15 +00:00
platforms = [ "x86_64-linux" ];
};
2020-11-28 17:42:10 +00:00
passthru = {
tests = { inherit (nixosTests) minecraft; };
updateScript = ./update.sh;
};
}