diff options
Diffstat (limited to 'nixpkgs/pkgs/games/runescape-launcher/default.nix')
-rw-r--r-- | nixpkgs/pkgs/games/runescape-launcher/default.nix | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/games/runescape-launcher/default.nix b/nixpkgs/pkgs/games/runescape-launcher/default.nix new file mode 100644 index 000000000000..062a194c83dc --- /dev/null +++ b/nixpkgs/pkgs/games/runescape-launcher/default.nix @@ -0,0 +1,155 @@ +{ stdenv +, lib +, autoPatchelfHook +, buildFHSEnv +, cairo +, dpkg +, fetchurl +, gcc-unwrapped +, glib +, glibc +, gnome2 +, gtk2-x11 +, libGL +, libpulseaudio +, libSM +, libXxf86vm +, libX11 +, openssl_1_1 +, pango +, SDL2 +, wrapGAppsHook +, xdg-utils +, xorg +, xorg_sys_opengl +, zlib +}: +let + + runescape = stdenv.mkDerivation rec { + pname = "runescape-launcher"; + version = "2.2.10"; + + # Packages: https://content.runescape.com/downloads/ubuntu/dists/trusty/non-free/binary-amd64/Packages + # upstream is https://content.runescape.com/downloads/ubuntu/pool/non-free/r/${pname}/${pname}_${version}_amd64.deb + src = fetchurl { + url = "https://archive.org/download/${pname}_${version}_amd64/${pname}_${version}_amd64.deb"; + sha256 = "1v96vjiblphhbqhpp3m7wbvdvcnp76ncdlf4pdcr2z1dz8nh6shg"; + }; + + nativeBuildInputs = [ + autoPatchelfHook + dpkg + wrapGAppsHook + ]; + + buildInputs = [ + cairo + gcc-unwrapped + glib + glibc + gtk2-x11 + libSM + libXxf86vm + libX11 + openssl_1_1 + pango + zlib + ]; + + runtimeDependencies = [ + libGL + libpulseaudio + SDL2 + openssl_1_1 + xdg-utils # The launcher uses `xdg-open` to open HTTP URLs in the user's browser + xorg_sys_opengl + zlib + ]; + + dontUnpack = true; + + preBuild = '' + export DH_VERBOSE=1 + ''; + + envVarsWithXmodifiers = '' + export MESA_GLSL_CACHE_DIR=~/Jagex + export GDK_SCALE=2 + unset XMODIFIERS + ''; + + installPhase = '' + mkdir -p $out/bin $out/share + dpkg -x $src $out + + patchShebangs $out/usr/bin/runescape-launcher + substituteInPlace $out/usr/bin/runescape-launcher \ + --replace "unset XMODIFIERS" "$envVarsWithXmodifiers" \ + --replace "/usr/share/games/runescape-launcher/runescape" "$out/share/games/runescape-launcher/runescape" + + cp -r $out/usr/bin $out/ + cp -r $out/usr/share $out/ + + rm -r $out/usr + ''; + + + meta = with lib; { + description = "Launcher for RuneScape 3, the current main RuneScape"; + homepage = "https://www.runescape.com/"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + maintainers = with maintainers; [ grburst ]; + platforms = [ "x86_64-linux" ]; + }; + }; + +in + + /* + * We can patch the runescape launcher, but it downloads a client at runtime and checks it for changes. + * For that we need use a buildFHSEnv. + * FHS simulates a classic linux shell + */ + buildFHSEnv { + name = "RuneScape"; + targetPkgs = pkgs: [ + runescape + cairo + dpkg + gcc-unwrapped + glib + glibc + gtk2-x11 + libGL + libpulseaudio + libSM + libXxf86vm + libX11 + openssl_1_1 + pango + SDL2 + xdg-utils + xorg.libX11 + xorg_sys_opengl + zlib + ]; + multiPkgs = pkgs: [ libGL ]; + runScript = "runescape-launcher"; + extraInstallCommands = '' + mkdir -p "$out/share/applications" + cp ${runescape}/share/applications/runescape-launcher.desktop "$out/share/applications" + cp -r ${runescape}/share/icons "$out/share/icons" + substituteInPlace "$out/share/applications/runescape-launcher.desktop" \ + --replace "/usr/bin/runescape-launcher" "RuneScape" + ''; + + meta = with lib; { + description = "RuneScape Game Client (NXT) - Launcher for RuneScape 3"; + homepage = "https://www.runescape.com/"; + license = licenses.unfree; + maintainers = with maintainers; [ grburst ]; + platforms = [ "x86_64-linux" ]; + }; + } |