about summary refs log tree commit diff
path: root/pkgs/by-name/hy/hyperspeedcube/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/hy/hyperspeedcube/package.nix')
-rw-r--r--pkgs/by-name/hy/hyperspeedcube/package.nix131
1 files changed, 131 insertions, 0 deletions
diff --git a/pkgs/by-name/hy/hyperspeedcube/package.nix b/pkgs/by-name/hy/hyperspeedcube/package.nix
new file mode 100644
index 0000000000000..5b5c53b7708f8
--- /dev/null
+++ b/pkgs/by-name/hy/hyperspeedcube/package.nix
@@ -0,0 +1,131 @@
+{ cmake
+, alsa-lib
+, atk
+, cairo
+, directx-shader-compiler
+, expat
+, fetchFromGitHub
+, fontconfig
+, freetype
+, gdk-pixbuf
+, glib
+, gtk3
+, harfbuzz
+, lib
+, libGL
+, libX11
+, libxcb
+, libXcursor
+, libXi
+, libxkbcommon
+, libXrandr
+, makeWrapper
+, mold
+, pango
+, pkg-config
+, python3
+, rustPlatform
+, shaderc
+, stdenv
+, vulkan-extension-layer
+, vulkan-headers
+, vulkan-loader
+, vulkan-tools
+, vulkan-tools-lunarg
+, vulkan-validation-layers
+, wayland
+, wrapGAppsHook3
+, yq
+, zlib
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "hyperspeedcube";
+  version = "1.0.6";
+
+  src = fetchFromGitHub {
+    owner = "HactarCE";
+    repo = "Hyperspeedcube";
+    rev = "v${version}";
+    hash = "sha256-FcQuXxVxiyI4hOKS70m62BtZMfN5FzGTLagS+2B3WdY=";
+  };
+
+  cargoLock = {
+    lockFile = ./Cargo.lock;
+    outputHashes = {
+     "key-names-1.5.1" = "sha256-ZO3mlCoUHCaMnxD2vQno6GNx0+JmwZ8OiqpyveiVfvc=";
+    };
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    (lib.getDev libxcb)
+    python3
+    makeWrapper
+    wrapGAppsHook3
+  ];
+
+  buildInputs = [
+    alsa-lib
+    atk
+    cairo
+    directx-shader-compiler
+    expat
+    fontconfig
+    freetype
+    gdk-pixbuf
+    glib
+    gtk3
+    harfbuzz
+    mold
+    pango
+    shaderc
+    zlib
+
+    # for execution errors (see https://github.com/emilk/egui/discussions/1587)
+    libxkbcommon
+    libGL
+
+    # WINIT_UNIX_BACKEND=wayland
+    wayland
+
+    # WINIT_UNIX_BACKEND=x11
+    libXcursor
+    libXrandr
+    libXi
+    libX11
+
+    vulkan-headers
+    vulkan-loader
+    vulkan-tools
+    vulkan-tools-lunarg
+    vulkan-extension-layer
+    vulkan-validation-layers
+
+    yq
+  ];
+
+  postInstall = ''
+    patchelf \
+      --add-needed ${vulkan-loader}/lib/libvulkan.so.1 \
+      --add-needed ${libGL}/lib/libEGL.so.1 \
+      $out/bin/hyperspeedcube
+    wrapProgram $out/bin/hyperspeedcube --set WAYLAND_DISPLAY "" --set XDG_SESSION_TYPE ""
+    touch $out/bin/nonportable
+  '';
+
+  meta = {
+    description = "Hyperspeedcube is a 3D and 4D Rubik's cube simulator";
+    longDescription = ''
+      Hyperspeedcube is a modern, beginner-friendly 3D and 4D Rubik's cube
+      simulator with customizable mouse and keyboard controls and advanced
+      features for speedsolving. It's been used to break numerous speedsolving
+      records and runs on all major operating systems plus the web.
+    '';
+    homepage = "https://ajfarkas.dev/hyperspeedcube/";
+    license = lib.licenses.cc-by-nc-sa-40;
+    maintainers = [ lib.maintainers.omnipotententity ];
+    platforms = [ "x86_64-linux" ];
+  };
+}