(define-module (gchannel packages runescape-launcher) #:use-module ((guix licenses) #:prefix license:) #:use-module ((nonguix licenses) #:prefix license:) #:use-module (guix git-download) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix build-system gnu) #:use-module (guix build-system python) #:use-module (guix build-system copy) #:use-module (gnu packages audio) #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages certs) #:use-module (gnu packages compression) #:use-module (gnu packages curl) #:use-module (gnu packages debian) #:use-module (gnu packages elf) #:use-module (gnu packages file) #:use-module (gnu packages fonts) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gawk) #:use-module (gnu packages gcc) #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages graphics) #:use-module (gnu packages gtk) #:use-module (gnu packages libbsd) #:use-module (gnu packages libusb) #:use-module (gnu packages linux) #:use-module (gnu packages llvm) #:use-module (gnu packages logging) #:use-module (gnu packages lsof) #:use-module (gnu packages networking) #:use-module (gnu packages nss) #:use-module (nongnu packages nvidia) #:use-module (gnu packages pciutils) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages pretty-print) #:use-module (gnu packages python) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages toolkits) #:use-module (gnu packages tls) #:use-module (gnu packages sdl) #:use-module (gnu packages video) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xorg) #:use-module (gnu packages xml) #:use-module (nonguix build-system chromium-binary) #:use-module (nonguix multiarch-container) #:use-module (nonguix utils)) (define runescape-launcher (package (name "runescape-launcher") (version "2.2.11") (source (origin (method url-fetch) (uri (string-append "https://content.runescape.com/downloads/ubuntu/pool/non-free/r/" name "/" name "_" version "_amd64.deb")) (sha256 (base32 "00krw818s15bc38v9qv4ggk32704czjlw9c7vggg3vxxdhxvvscq")))) (build-system copy-build-system) (inputs (list cairo gcc glib glibc gtk libcap libglvnd libsm libx11 libxxf86vm openssl pango sdl2 zlib)) (arguments (list #:tests? #f ; no check target #:phases #~(modify-phases %standard-phases (replace 'unpack (lambda* (#:key source #:allow-other-keys) (invoke "dpkg-deb" "-x" source ".") #t)) (delete 'configure) (delete `build) (add-before 'install 'patch-elf-interpreter (lambda _ (display (invoke "ls" "-a" "./usr/share/games/runescape-launcher")) ;;(invoke "setcap" "cap_net_raw+ep" "./usr/share/games/runescape-launcher/runescape") (substitute* "./usr/bin/runescape-launcher" (("unset XMODIFIERS") (string-append "$envVarsWithXmodifiers")) (("/usr/share/games/runescape-launcher/runescape") (string-append (assoc-ref %outputs "out") "/usr/share/games/runescape-launcher/runescape"))) (display "catssss") (let ((glibc (assoc-ref %build-inputs "glibc")) (elf-file "./usr/share/games/runescape-launcher/runescape")) (invoke "patchelf" "--set-interpreter" (string-append glibc "/lib/ld-linux-x86-64.so.2") elf-file)) #t)) ;; (delete 'install) ) ) ) (native-inputs (list unzip dpkg patchelf iputils)) (synopsis "Soup") (home-page "https://www.runescape.com/") (description "RuneScape Game Client (NXT)") (license license:agpl3))) ;; Update license as this is a placeholder (define steam-client-libs `(("at-spi2-core" ,at-spi2-core) ; Required (often) for SteamVR interface. ("bash" ,bash) ; Required for steam startup. ("cairo", cairo) ("coreutils" ,coreutils) ("diffutils" ,diffutils) ("dbus-glib" ,dbus-glib) ; Required for steam browser. ("elfutils" ,elfutils) ; Required for capturing library dependencies in pv. ("eudev" ,eudev) ; Required for steamwebhelper/heavy runtime. ("expat" ,expat) ; Needed for RS3 ("fontconfig" ,fontconfig) ; Required for steam client. ("file" ,file) ; Used for steam installation. ("find" ,findutils) ; Required at least for some logging. ("fmt" ,fmt) ; Needed for RS3 ("font-google-noto" ,font-google-noto) ; Not required but to match following fonts. ;; These next three fonts are to cover emoji and Chinese/Japanese/Korean ;; and related scripts. ("font-google-noto-emoji" ,font-google-noto-emoji) ("font-google-noto-sans-cjk" ,font-google-noto-sans-cjk) ("font-google-noto-serif-cjk" ,font-google-noto-serif-cjk) ("freetype" ,freetype) ; Required for steam login. ("gawk" ,gawk) ("gdk-pixbuf" ,gdk-pixbuf) ; Required for steam tray icon. ;; Required for steam startup; use newer version for better compatibility ;; with some games like Dwarf Fortress. ("gcc:lib" ,gcc-14 "lib") ("glib" ,glib) ("glibc" ,glibc) ("grep" ,grep) ("gtk+" ,gtk+) ("gtk" ,gtk+-2) ("libbsd" ,libbsd) ("libcap" ,libcap) ; Required for SteamVR, but needs pkexec too. ("libdrm" ,libdrm) ; Needed for RS3 ("libglvnd" ,libglvnd) ("libusb" ,libusb) ; Required for SteamVR. ("libsm" ,libsm) ("libxcb" ,libxcb) ; Needed for RS3 ("libxcomposite" ,libxcomposite) ; Needed for RS3 ("libxext" ,libxext) ; Needed for RS3 ("libxkbcommon" ,libxkbcommon) ; Needed for RS3 ("libva" ,libva) ; Required for hardware video encoding/decoding. ("libvdpau" ,libvdpau) ; Required for hardware video encoding/decoding. ("libvdpau-va-gl" ,libvdpau-va-gl) ; Additional VDPAU support. ("libx11" ,libx11) ("libxdamage" ,libxdamage) ; Needed for RS3 ("libxfixes" ,libxfixes) ; Needed for RS3 ("libxxf86vm" ,libxxf86vm) ("llvm" ,llvm-for-mesa) ; Required for mesa. ("lsof" ,lsof) ; Required for some friend's list actions. ("mesa" ,mesa) ; Required for steam startup. ("nspr" ,nspr) ; Required for RS3 ("nss-certs" ,nss-certs) ; Required for steam login. ("nss" ,nss) ; Needed for RS3 ("pango" ,pango) ("pciutils" ,pciutils) ; Tries to run lspci at steam startup. ("procps" ,procps) ("openssl" ,openssl-1.1) ("sed" ,sed) ("sdl2" ,sdl2) ("tar" ,tar) ("usbutils" ,usbutils) ; Required for SteamVR. ("util-linux" ,util-linux) ; Required for steam login. ("wayland" ,wayland) ; Required for mesa vulkan (e.g. libvulkan_radeon). ("xdg-user-dirs" ,xdg-user-dirs) ; Suppress warning of missing xdg-user-dir. ("flatpak-xdg-utils" ,flatpak-xdg-utils) ("xz" ,xz) ("zenity" ,zenity) ("zlib" ,zlib) )) ; Required for progress dialogs. (define steam-gameruntime-libs `(("alsa-lib" ,alsa-lib) ; Required for audio in most games. ("alsa-plugins:pulseaudio" ,alsa-plugins "pulseaudio") ; Required for audio in most games. ("font-dejavu" ,font-dejavu) ("font-liberation" ,font-liberation) ("imgui" ,imgui-1.86) ; Required for MangoHud. ("mangohud" ,mangohud) ("openal" ,openal) ; Prevents corrupt audio in Crypt of the Necrodancer. ("pulseaudio" ,pulseaudio) ; Prevents corrupt audio in Sven Coop. ("python" ,python) ; Required for KillingFloor2 and Wreckfest. ("spdlog" ,spdlog))) ; Required for MangoHud. (define steam-container-libs (append steam-client-libs steam-gameruntime-libs fhs-min-libs)) (define steam-nvidia-container-libs (modify-inputs steam-container-libs (replace "mesa" nvda))) (define steam-ld.so.conf (packages->ld.so.conf (list (fhs-union steam-container-libs #:name "fhs-union-64") (fhs-union steam-container-libs #:name "fhs-union-32" #:system "i686-linux")))) (define steam-ld.so.cache (ld.so.conf->ld.so.cache steam-ld.so.conf)) (define steam-nvidia-ld.so.conf (packages->ld.so.conf (list (fhs-union steam-nvidia-container-libs #:name "fhs-union-64") (fhs-union steam-nvidia-container-libs #:name "fhs-union-32" #:system "i686-linux")))) (define steam-nvidia-ld.so.cache (ld.so.conf->ld.so.cache steam-nvidia-ld.so.conf)) (define-public runescape-container (nonguix-container (name "runescape") (wrap-package runescape-launcher) (run "/usr/bin/runescape-launcher") (ld.so.conf steam-ld.so.conf) (ld.so.cache steam-ld.so.cache) (union64 (fhs-union steam-container-libs #:name "fhs-union-64")) (union32 (fhs-union steam-container-libs #:name "fhs-union-32" #:system "i686-linux")) (link-files '("usr")) (description "Runescape."))) (define-public runescape (nonguix-container->package runescape-container)) runescape