about summary refs log tree commit diff
path: root/nixpkgs/pkgs/games/runescape-launcher/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/games/runescape-launcher/default.nix')
-rw-r--r--nixpkgs/pkgs/games/runescape-launcher/default.nix103
1 files changed, 103 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..8b678d792fcb
--- /dev/null
+++ b/nixpkgs/pkgs/games/runescape-launcher/default.nix
@@ -0,0 +1,103 @@
+{ stdenv, lib, buildFHSUserEnv, dpkg, glibc, gcc-unwrapped, autoPatchelfHook, fetchurl, wrapGAppsHook
+, gnome2, xorg
+, libSM, libXxf86vm, libX11, glib, pango, cairo, gtk2-x11, zlib, openssl
+, libpulseaudio
+, SDL2, xorg_sys_opengl, libGL
+}:
+let
+
+  runescape = stdenv.mkDerivation rec {
+    pname = "runescape-launcher";
+    version = "2.2.9";
+
+    src = fetchurl {
+      url = "https://content.runescape.com/downloads/ubuntu/pool/non-free/r/${pname}/${pname}_${version}_amd64.deb";
+      sha256 = "0r5v1pwh0aas31b1d3pkrc8lqmqz9b4fml2b4kxmg5xzp677h271";
+    };
+
+    nativeBuildInputs = [
+      autoPatchelfHook
+      wrapGAppsHook
+      dpkg
+    ];
+
+    buildInputs = [
+      glibc
+      gcc-unwrapped
+      libSM
+      libXxf86vm
+      libX11
+      glib
+      pango
+      cairo
+      gtk2-x11
+      zlib
+      openssl
+    ];
+
+    runtimeDependencies = [
+      libpulseaudio
+      libGL
+      SDL2
+      xorg_sys_opengl
+      openssl
+      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/";
+      license = licenses.unfree;
+      maintainers = with lib.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 buildFHSUserEnv.
+  * FHS simulates a classic linux shell
+  */
+  buildFHSUserEnv {
+   name = "RuneScape";
+   targetPkgs = pkgs: [
+     runescape
+     dpkg glibc gcc-unwrapped
+     libSM libXxf86vm libX11 glib pango cairo gtk2-x11 zlib openssl
+     libpulseaudio
+     xorg.libX11
+     SDL2 xorg_sys_opengl libGL
+   ];
+   multiPkgs = pkgs: [ libGL ];
+   runScript = "runescape-launcher";
+}