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.nix155
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" ];
+    };
+  }