nixpkgs/pkgs/by-name/ru/runescape/package.nix
aleksana 571c71e6f7 treewide: migrate packages to pkgs/by-name, take 1
We are migrating packages that meet below requirements:

1. using `callPackage`
2. called path is a directory
3. overriding set is empty (`{ }`)
4. not containing path expressions other than relative path (to
makenixpkgs-vet happy)
5. not referenced by nix files outside of the directory, other
than`pkgs/top-level/all-packages.nix`
6. not referencing nix files outside of the directory
7. not referencing `default.nix` (since it's changed to `package.nix`)
8. `outPath` doesn't change after migration

The tool is here: https://github.com/Aleksanaa/by-name-migrate.
2024-11-09 20:04:51 +08:00

155 lines
3.5 KiB
Nix

{ stdenv
, lib
, autoPatchelfHook
, buildFHSEnv
, cairo
, dpkg
, fetchurl
, gcc-unwrapped
, glib
, glibc
, gtk2-x11
, libGL
, libpulseaudio
, libSM
, libXxf86vm
, libX11
, openssl_1_1
, pango
, SDL2
, wrapGAppsHook3
, 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
wrapGAppsHook3
];
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" ];
};
}