about summary refs log tree commit diff
path: root/pkgs/games/clonehero/default.nix
diff options
context:
space:
mode:
authorSyboxez Blank <@Syboxez:matrix.org>2023-04-25 00:29:28 -0500
committerKira Bruneau <kira.bruneau@pm.me>2023-05-24 17:07:32 -0400
commit47a2d457b04e2ac14605fbe3e8c32402ebf90d81 (patch)
tree285d20748fd0eee3baaf60952336909f78b66b07 /pkgs/games/clonehero/default.nix
parentdfe6d817db02778cf903499911e9148997cdf68f (diff)
clonehero: 0.23.2.2 -> 1.0.0.4080
Co-authored-by: Kira Bruneau <kira.bruneau@pm.me>
Diffstat (limited to 'pkgs/games/clonehero/default.nix')
-rw-r--r--pkgs/games/clonehero/default.nix99
1 files changed, 73 insertions, 26 deletions
diff --git a/pkgs/games/clonehero/default.nix b/pkgs/games/clonehero/default.nix
index cf1fad8d945b8..36d76195fb9ad 100644
--- a/pkgs/games/clonehero/default.nix
+++ b/pkgs/games/clonehero/default.nix
@@ -2,24 +2,31 @@
 , stdenv
 , fetchurl
 , autoPatchelfHook
+, gtk3
+, zlib
 , alsa-lib
-, gtk2
+, dbus
+, libXcursor
+, libXext
+, libXi
+, libXinerama
+, libxkbcommon
 , libXrandr
 , libXScrnSaver
+, libXxf86vm
 , udev
-, zlib
+, vulkan-loader # (not used by default, enable in settings menu)
+, wayland # (not used by default, enable with SDL_VIDEODRIVER=wayland - doesn't support HiDPI)
+, makeDesktopItem
 }:
 
-let
-  name = "clonehero";
-in
-stdenv.mkDerivation rec {
-  pname = "${name}-unwrapped";
-  version = "0.23.2.2";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "clonehero";
+  version = "1.0.0.4080";
 
   src = fetchurl {
-    url = "http://dl.clonehero.net/${name}-v${lib.removePrefix "0" version}/${name}-linux.tar.gz";
-    sha256 = "0k9jcnd55yhr42gj8cmysd18yldp4k3cpk4z884p2ww03fyfq7mi";
+    url = "https://pubdl.clonehero.net/clonehero-v${finalAttrs.version}-final/clonehero-linux.tar.xz";
+    hash = "sha256-YWLV+wgQ9RfKRSSWh/x0PMjB6tFA4YpHb9WtYOOgZZI=";
   };
 
   outputs = [ "out" "doc" ];
@@ -28,46 +35,86 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     # Load-time libraries (loaded from DT_NEEDED section in ELF binary)
-    gtk2
+    alsa-lib
+    gtk3
     stdenv.cc.cc.lib
     zlib
 
     # Run-time libraries (loaded with dlopen)
-    alsa-lib # ALSA sound
-    libXrandr # X11 resolution detection
-    libXScrnSaver # X11 screensaver prevention
-    udev # udev input drivers
+    dbus
+    libXcursor
+    libXext
+    libXi
+    libXinerama
+    libxkbcommon
+    libXrandr
+    libXScrnSaver
+    libXxf86vm
+    udev
+    vulkan-loader
+    wayland
   ];
 
+  desktopItem = makeDesktopItem {
+    name = "clonehero";
+    desktopName = "Clone Hero";
+    comment = finalAttrs.meta.description;
+    icon = "clonehero";
+    exec = "clonehero";
+    categories = [ "Game" ];
+  };
+
   installPhase = ''
-    mkdir -p "$out/bin" "$out/share"
-    install -Dm755 ${name} "$out/bin"
-    cp -r clonehero_Data "$out/share"
+    runHook preInstall
+
+    install -Dm755 clonehero "$out/bin/clonehero"
+    install -Dm644 UnityPlayer.so "$out/libexec/clonehero/UnityPlayer.so"
+
+    mkdir -p "$out/share/pixmaps"
+    cp -r clonehero_Data "$out/share/clonehero"
+    ln -s "$out/share/clonehero" "$out/bin/clonehero_Data"
+    ln -s "$out/share/clonehero/Resources/UnityPlayer.png" "$out/share/pixmaps/clonehero.png"
+    install -Dm644 "$desktopItem/share/applications/clonehero.desktop" "$out/share/applications/clonehero.desktop"
+
+    mkdir -p "$doc/share/doc/clonehero"
+    cp -r CLONE_HERO_MANUAL.{pdf,txt} Custom EULA.txt THIRDPARTY.txt "$doc/share/doc/clonehero"
 
-    mkdir -p "$doc/share/${name}"
-    cp README.txt "$doc/share/${name}"
+    runHook postInstall
   '';
 
   # Patch required run-time libraries as load-time libraries
   #
   # Libraries found with:
-  # > strings clonehero | grep '\.so'
-  # and
-  # > strace clonehero 2>&1 | grep '\.so'
+  # > strings UnityPlayer.so | grep '\.so'
+  # and:
+  # > LD_DEBUG=libs clonehero
   postFixup = ''
     patchelf \
       --add-needed libasound.so.2 \
+      --add-needed libdbus-1.so.3 \
+      --add-needed libpthread.so.0 \
       --add-needed libudev.so.1 \
+      --add-needed libvulkan.so.1 \
+      --add-needed libwayland-client.so.0 \
+      --add-needed libwayland-cursor.so.0 \
+      --add-needed libwayland-egl.so.1 \
+      --add-needed libX11.so.6 \
+      --add-needed libXcursor.so.1 \
+      --add-needed libXext.so.6 \
+      --add-needed libXi.so.6 \
+      --add-needed libXinerama.so.1 \
+      --add-needed libxkbcommon.so.0 \
       --add-needed libXrandr.so.2 \
       --add-needed libXss.so.1 \
-      "$out/bin/${name}"
+      --add-needed libXxf86vm.so.1 \
+      "$out/libexec/clonehero/UnityPlayer.so"
   '';
 
   meta = with lib; {
     description = "Clone of Guitar Hero and Rockband-style games";
     homepage = "https://clonehero.net";
     license = licenses.unfree;
-    maintainers = with maintainers; [ kira-bruneau ];
+    maintainers = with maintainers; [ kira-bruneau syboxez ];
     platforms = [ "x86_64-linux" ];
   };
-}
+})