pytrainer: unpin python 3.10
[NixPkgs.git] / pkgs / games / minecraft / default.nix
blob9bbe09367dd099e9016fb52caeebf86a77c69a70
1 { lib, stdenv
2 , fetchurl
3 , nixosTests
4 , copyDesktopItems
5 , makeDesktopItem
6 , makeWrapper
7 , wrapGAppsHook3
8 , gobject-introspection
9 , jre # old or modded versions of the game may require Java 8 (https://aur.archlinux.org/packages/minecraft-launcher/#pinned-674960)
10 , xorg
11 , zlib
12 , nss
13 , nspr
14 , fontconfig
15 , pango
16 , cairo
17 , expat
18 , alsa-lib
19 , cups
20 , dbus
21 , atk
22 , gtk3-x11
23 , gtk2-x11
24 , gdk-pixbuf
25 , glib
26 , curl
27 , freetype
28 , libpulseaudio
29 , libuuid
30 , systemd
31 , flite ? null
32 , libXxf86vm ? null
34 let
35   desktopItem = makeDesktopItem {
36     name = "minecraft-launcher";
37     exec = "minecraft-launcher";
38     icon = "minecraft-launcher";
39     comment = "Official launcher for Minecraft, a sandbox-building game";
40     desktopName = "Minecraft Launcher";
41     categories = [ "Game" ];
42   };
44   envLibPath = lib.makeLibraryPath [
45     curl
46     libpulseaudio
47     systemd
48     alsa-lib # needed for narrator
49     flite # needed for narrator
50     libXxf86vm # needed only for versions <1.13
51   ];
53   libPath = lib.makeLibraryPath ([
54     alsa-lib
55     atk
56     cairo
57     cups
58     dbus
59     expat
60     fontconfig
61     freetype
62     gdk-pixbuf
63     glib
64     pango
65     gtk3-x11
66     gtk2-x11
67     nspr
68     nss
69     stdenv.cc.cc
70     zlib
71     libuuid
72   ] ++
73   (with xorg; [
74     libX11
75     libxcb
76     libXcomposite
77     libXcursor
78     libXdamage
79     libXext
80     libXfixes
81     libXi
82     libXrandr
83     libXrender
84     libXtst
85     libXScrnSaver
86   ]));
88 stdenv.mkDerivation rec {
89   pname = "minecraft-launcher";
91   version = "2.2.1441";
93   src = fetchurl {
94     url = "https://launcher.mojang.com/download/linux/x86_64/minecraft-launcher_${version}.tar.gz";
95     sha256 = "03q579hvxnsh7d00j6lmfh53rixdpf33xb5zlz7659pvb9j5w0cm";
96   };
98   icon = fetchurl {
99     url = "https://launcher.mojang.com/download/minecraft-launcher.svg";
100     sha256 = "0w8z21ml79kblv20wh5lz037g130pxkgs8ll9s3bi94zn2pbrhim";
101   };
103   nativeBuildInputs = [ makeWrapper wrapGAppsHook3 copyDesktopItems gobject-introspection ];
105   sourceRoot = ".";
107   dontWrapGApps = true;
108   dontConfigure = true;
109   dontBuild = true;
111   installPhase = ''
112     runHook preInstall
114     mkdir -p $out/opt
115     mv minecraft-launcher $out/opt
117     install -D $icon $out/share/icons/hicolor/symbolic/apps/minecraft-launcher.svg
119     runHook postInstall
120   '';
122   preFixup = ''
123     patchelf \
124       --set-interpreter ${stdenv.cc.bintools.dynamicLinker} \
125       --set-rpath '$ORIGIN/'":${libPath}" \
126       $out/opt/minecraft-launcher/minecraft-launcher
127     patchelf \
128       --set-rpath '$ORIGIN/'":${libPath}" \
129       $out/opt/minecraft-launcher/libcef.so
130     patchelf \
131       --set-rpath '$ORIGIN/'":${libPath}" \
132       $out/opt/minecraft-launcher/liblauncher.so
133   '';
135   postFixup = ''
136     # Do not create `GPUCache` in current directory
137     makeWrapper $out/opt/minecraft-launcher/minecraft-launcher $out/bin/minecraft-launcher \
138       --prefix LD_LIBRARY_PATH : ${envLibPath} \
139       --prefix PATH : ${lib.makeBinPath [ jre ]} \
140       --set JAVA_HOME ${lib.getBin jre} \
141       --chdir /tmp \
142       "''${gappsWrapperArgs[@]}"
143   '';
145   desktopItems = [ desktopItem ];
147   meta = with lib; {
148     description = "Official launcher for Minecraft, a sandbox-building game";
149     homepage = "https://minecraft.net";
150     maintainers = with maintainers; [ ryantm ];
151     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
152     license = licenses.unfree;
153     platforms = [ "x86_64-linux" ];
154     # "minecraft-launcher will fail on NixOS for minecraft versions >1.19
155     # try prismlauncher or atlauncher instead"
156     broken = true;
157   };
159   passthru = {
160     tests = { inherit (nixosTests) minecraft; };
161     updateScript = ./update.sh;
162   };