diff options
Diffstat (limited to 'pkgs/by-name/hy/hyperspeedcube/package.nix')
-rw-r--r-- | pkgs/by-name/hy/hyperspeedcube/package.nix | 131 |
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" ]; + }; +} |