1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
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.7";
src = fetchFromGitHub {
owner = "HactarCE";
repo = "Hyperspeedcube";
rev = "v${version}";
hash = "sha256-ykFf0dfc8j88Y25tx+G9lic09eHDz3WR+h6+owTeWbU=";
};
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" ];
};
}
|