summaryrefslogtreecommitdiff
path: root/modules/ryan-packages
diff options
context:
space:
mode:
Diffstat (limited to 'modules/ryan-packages')
-rw-r--r--modules/ryan-packages/hyprland.scm497
-rw-r--r--modules/ryan-packages/patches/aquamarine-fix-cmake.patch25
-rw-r--r--modules/ryan-packages/patches/hyprland-fix-cmake.patch41
3 files changed, 563 insertions, 0 deletions
diff --git a/modules/ryan-packages/hyprland.scm b/modules/ryan-packages/hyprland.scm
new file mode 100644
index 0000000..04a9292
--- /dev/null
+++ b/modules/ryan-packages/hyprland.scm
@@ -0,0 +1,497 @@
1(define-module (ryan-packages hyprland)
2 #:use-module ((guix licenses) #:prefix license:)
3 #:use-module (guix build-system cmake)
4 #:use-module (guix build-system gnu)
5 #:use-module (guix build-system meson)
6 #:use-module (guix download)
7 #:use-module (guix gexp)
8 #:use-module (guix git-download)
9 #:use-module (guix packages)
10 #:use-module (gnu packages autotools)
11 #:use-module (gnu packages admin)
12 #:use-module (gnu packages base)
13 #:use-module (gnu packages compression)
14 #:use-module (gnu packages cpp)
15 #:use-module (gnu packages cmake)
16 #:use-module (gnu packages check)
17 #:use-module (gnu packages gcc)
18 #:use-module (gnu packages gtk)
19 #:use-module (gnu packages gnome)
20 #:use-module (gnu packages freedesktop)
21 #:use-module (gnu packages pciutils)
22 #:use-module (gnu packages pkg-config)
23 #:use-module (gnu packages python)
24 #:use-module (gnu packages xdisorg)
25 #:use-module (gnu packages xml)
26 #:use-module (gnu packages xorg)
27 #:use-module (gnu packages web)
28 #:use-module (gnu packages wm)
29 #:use-module (gnu packages gl)
30 #:use-module (ryan-packages gl)
31 #:use-module (guix utils))
32
33; hyprland deps
34(define-public libseat-0.8.0
35 (package
36 (inherit libseat)
37 (name "libseat")
38 (version "0.8.0")
39 (source (origin
40 (method git-fetch)
41 (uri (git-reference
42 (url "https://git.sr.ht/~kennylevinsen/seatd")
43 (commit version)))
44 (file-name (git-file-name name version))
45 (sha256
46 (base32
47 "02wzrgp8di6hqmicnm2fim6jnvbn62wy248ikvdvrhiywrb7i931"))))))
48
49(define-public libinput-minimal-1.26.1
50 (package
51 (inherit libinput-minimal)
52 (name "libinput-minimal")
53 (version "1.26.1")
54 (source (origin
55 (method git-fetch)
56 (uri (git-reference
57 (url "https://gitlab.freedesktop.org/libinput/libinput.git")
58 (commit version)))
59 (file-name (git-file-name name version))
60 (sha256
61 (base32
62 "094k23i10jjmgdzhv5lj7xpc3fgkwi9afcihf0l2fjj71ym8l9fy"))))
63 (native-inputs
64 (modify-inputs (package-native-inputs libinput)
65 (append python-minimal-wrapper python-pytest)))))
66
67(define-public cmake-minimal-3.27.0
68 (package
69 (inherit cmake-minimal)
70 (name "cmake-minimal")
71 (version "3.27.0")
72 (source (origin
73 (inherit (package-source cmake-minimal))
74 (method url-fetch)
75 (uri (string-append "https://cmake.org/files/v"
76 (version-major+minor version)
77 "/cmake-" version ".tar.gz"))
78 (sha256
79 (base32
80 "1f1w9mb868q38nzy145b6q9mc5waf8yi521cwfkd14xr51mxpvda"))))
81 (arguments
82 (substitute-keyword-arguments (package-arguments cmake-minimal)
83 ((#:configure-flags flags ''())
84 #~(append (list "-DCMake_ENABLE_DEBUGGER=false") #$flags))
85 ((#:phases phases)
86 #~(modify-phases #$phases
87 (delete 'delete-help-documentation)
88 (delete 'check)))))))
89
90; hypr suite
91
92(define hyprutils
93 (package
94 (name "hyprutils")
95 (version "0.2.1")
96 (source (origin
97 (method git-fetch)
98 (uri (git-reference
99 (url "https://github.com/hyprwm/hyprutils")
100 (commit (string-append "v" version))))
101 (file-name (git-file-name name version))
102 (sha256
103 (base32
104 "0nxx5yb5k9726x95n8gi27xyxyzwb0ma0nj3czpb51sda1k0hz0g"))))
105 (build-system cmake-build-system)
106 ;(arguments (list #:tests? #f))
107 (native-inputs (list pkg-config gcc-13))
108 (inputs (list pixman))
109 (home-page "https://hyprland.org/")
110 (synopsis "Small C++ library for utilities used across the Hypr* ecosystem")
111 (description "C++ library for utilities in the Hypr ecosystem")
112 (license license:bsd-3)))
113
114(define-public libliftoff
115 (package
116 (name "libliftoff")
117 (version "0.1.0")
118 (source (origin
119 (method url-fetch)
120 (uri (string-append "https://github.com/emersion/libliftoff"
121 "/archive/refs/tags/v" version ".tar.gz"))
122 (sha256
123 (base32
124 "17ssbjbv8njgvfha8zsx4nixpi5xxl1rwvk0lcacgqk0nmjyb23s"))))
125 (build-system meson-build-system)
126 (native-inputs (list gcc-13
127 pkg-config
128 cmake-minimal
129 libdrm))
130 (home-page "https://github.com/emersion/libliftoff")
131 (synopsis "Lightweight KMS plane library")
132 (description "")
133 (license license:expat)))
134
135(define udis86
136 (let ((revision "186")
137 (commit "5336633af70f3917760a6d441ff02d93477b0c86"))
138 (package
139 (name "udis86")
140 (version (git-version "1.7.2" revision commit))
141 (source (origin
142 (method git-fetch)
143 (uri (git-reference
144 (url "https://github.com/canihavesomecoffee/udis86")
145 (commit commit)))
146 (file-name (git-file-name name version))
147 (sha256
148 (base32
149 "0y5z1169wff578jylpafsww4px4y6gickhcs885a9c660d8xs9qy"))))
150 (build-system gnu-build-system)
151 (native-inputs (list autoconf automake libtool python-minimal-wrapper))
152 (home-page "https://github.com/canihavesomecoffee/udis86")
153 (synopsis "Disassembler Library for x86 and x86-64")
154 (description
155 "Udis86 is a disassembler for the x86 and x86-64 class of instruction
156set architectures. It consists of a C library called @code{libudis86} and a
157command line tool called @code{udcli} that incorporates the library.")
158 (license license:bsd-2))))
159
160(define hyprlang
161 (package
162 (name "hyprlang")
163 (version "0.5.2")
164 (source (origin
165 (method git-fetch)
166 (uri (git-reference
167 (url "https://github.com/hyprwm/hyprlang")
168 (commit (string-append "v" version))))
169 (file-name (git-file-name name version))
170 (sha256
171 (base32
172 "17i0372yv0fcwnyki36crz7afw8c5f3j985m083p7rjbh4fn3br6"))))
173 (build-system cmake-build-system)
174 (native-inputs (list gcc-13))
175 (home-page "https://hyprland.org/hyprlang/")
176 (synopsis "Official implementation library for hypr config language")
177 (description
178 "This package provides the official implementation for hypr configuration
179language used in @code{hyprland}.")
180 (license license:gpl3+)))
181
182(define-public hyprcursor
183 (package
184 (name "hyprcursor")
185 (version "0.1.9")
186 (source (origin
187 (method git-fetch)
188 (uri (git-reference
189 (url "https://github.com/hyprwm/hyprcursor")
190 (commit (string-append "v" version))))
191 (file-name (git-file-name name version))
192 (sha256
193 (base32
194 "0z3ar580n630145nq80qw0p8v0kai6knvhi6nr9z0y1jrb07b0ql"))))
195 (build-system cmake-build-system)
196 (arguments (list #:tests? #f)) ;FIXME
197 (inputs (list cairo hyprlang librsvg libzip tomlplusplus))
198 (native-inputs (list gcc-13 pkg-config))
199 (home-page "https://hyprland.org/")
200 (synopsis "Hyprland cursor format, library and utilities")
201 (description
202 "This package provides Hyprland cursor format, library and utilities.")
203 (license license:bsd-3)))
204
205(define-public hyprland-protocols
206 (package
207 (name "hyprland-protocols")
208 (version "0.2")
209 (source (origin
210 (method git-fetch)
211 (uri (git-reference
212 (url "https://github.com/hyprwm/hyprland-protocols")
213 (commit (string-append "v" version))))
214 (file-name (git-file-name name version))
215 (sha256
216 (base32
217 "1drjznj7fn6m5m6skhzh0p031cb5x0bb4i56jxnxwpwaa71g1z20"))))
218 (build-system meson-build-system)
219 (home-page "https://hyprland.org")
220 (synopsis "Wayland protocol extensions for Hyprland")
221 (description
222 "This package provides Wayland protocol extensions for Hyprland and it
223exists in an effort to bridge the gap between Hyprland and KDE/Gnome's
224functionality. Since @code{wlr-protocols} is closed for new submissions, and
225@code{wayland-protocols} is very slow with changes, this package will hold
226protocols used by Hyprland to bridge the aforementioned gap.")
227 (license license:bsd-3)))
228
229(define-public hyprwayland-scanner
230 (package
231 (name "hyprwayland-scanner")
232 (version "0.4.0")
233 (source (origin
234 (method git-fetch)
235 (uri (git-reference
236 (url "https://github.com/hyprwm/hyprwayland-scanner")
237 (commit (string-append "v" version))))
238 (file-name (git-file-name name version))
239 (sha256
240 (base32
241 "1xc2xcxpq61lg964ihk0wbfzqqvibw20iz09g0p33ym51gwlpxr4"))))
242 (build-system cmake-build-system)
243 (arguments (list #:tests? #f)) ;No tests.
244 (inputs (list pugixml))
245 (native-inputs (list gcc-13 pkg-config))
246 (home-page "https://github.com/hyprwm/hyprwayland-scanner")
247 (synopsis "Hyprland implementation of wayland-scanner, in and for C++")
248 (description
249 "This package provides a Hyprland implementation of wayland-scanner, in and
250for C++.")
251 (license license:bsd-3)))
252
253(define hwdata-for-hyprland
254 (package
255 (inherit hwdata)
256 (arguments
257 (substitute-keyword-arguments (package-arguments hwdata)
258 ((#:phases _) #~%standard-phases)))
259 (outputs '("out"))))
260
261(define-public wayland-protocols-1.36
262 (package
263 (inherit wayland-protocols)
264 (name "wayland-protocols")
265 (version "1.36")
266 (source (origin
267 (method url-fetch)
268 (uri (string-append
269 "https://gitlab.freedesktop.org/wayland/wayland-protocols"
270 "/-/releases/" version "/downloads/"
271 "wayland-protocols-" version ".tar.xz"))
272 (sha256
273 (base32
274 "14kyxywpfkgpjpkrybs28q1s2prnz30k1b4zap5a3ybrbvh4vzbi"))))))
275
276
277(define-public aquamarine
278 (package
279 (name "aquamarine")
280 (version "0.3.0")
281 (source (origin
282 (method git-fetch)
283 (uri (git-reference
284 (url "https://github.com/hyprwm/aquamarine")
285 (commit (string-append "v" version))))
286 (patches (list
287 (local-file "patches/aquamarine-fix-cmake.patch")))
288 (file-name (git-file-name name version))
289 (sha256
290 (base32
291 "114fspibmrwvzdmzv4xdy000vg7mn9r5vas3pr1ndb9xyl15ja1s"))))
292 (build-system cmake-build-system)
293 (arguments
294 (list #:tests? #f))
295 (native-inputs
296 (list gcc-13
297 pkg-config
298 mesa-headers
299 hyprwayland-scanner
300 hwdata-for-hyprland))
301 (propagated-inputs
302 (list mesa-libglvnd
303 libglvnd
304 libseat-0.8.0
305 libinput-minimal-1.26.1
306 libxkbcommon
307 libdisplay-info
308 libxcb
309 libxinerama
310 libxcursor
311 xcb-util
312 xcb-util-errors
313 xcb-util-keysyms
314 xcb-util-wm
315 wayland
316 wayland-protocols-1.36))
317 (inputs
318 (list hyprutils pixman))
319 (home-page "https://hyprland.org")
320 (synopsis "Aquamarine is a very light linux rendering backend library ")
321 (description "") ;; TODO: this
322 (license license:bsd-3)))
323
324
325(define xorg-server-xwayland-for-hyprland
326 (package
327 (inherit xorg-server-xwayland)
328 (arguments
329 (substitute-keyword-arguments (package-arguments xorg-server-xwayland)
330 ((#:phases phases)
331 #~(modify-phases #$phases
332 (add-after 'install 'install-headers
333 (lambda _
334 (let ((fmw (string-append #$output "/include")))
335 (mkdir-p fmw)
336 (copy-recursively "include" fmw))
337 ))
338 ))))))
339
340
341(define-public hyprland
342 (package
343 (name "hyprland")
344 (version "0.42.0")
345 (source
346 (origin
347 (method git-fetch)
348 (uri (git-reference
349 (url "https://github.com/hyprwm/Hyprland")
350 (commit (string-append "v" version))))
351 (patches (list
352 (local-file "patches/hyprland-fix-cmake.patch")))
353 (modules '((guix build utils)))
354 (snippet
355 '(begin
356 (for-each delete-file-recursively
357 '("hyprpm"
358 "subprojects"))))
359 (file-name (git-file-name name version))
360 (sha256
361 (base32 "1hp2xafvlymikxsi6pr8iik35g46683bg376n9hkjxgh9y6njzqv"))))
362 (build-system cmake-build-system)
363 (arguments
364 (list #:tests? #f
365 #:build-type "release"
366 #:cmake cmake-minimal-3.27.0
367 #:phases
368 #~(modify-phases %standard-phases
369 (add-after 'unpack 'fix-path
370 (lambda* (#:key inputs #:allow-other-keys)
371 (substitute* (find-files "src" "\\.cpp$")
372 (("/usr/local(/bin/Hyprland)" _ path)
373 (string-append #$output path))
374 (("/usr") #$output)
375 (("(execAndGet\\(\")\\<(cat|fc-list|lspci)\\>"
376 _ pre cmd)
377 (string-append
378 pre (search-input-file
379 inputs (string-append "bin/" cmd))))
380 (("\\<cc\\>") (search-input-file inputs "bin/gcc"))
381 ;; NOTE: Add binutils to inputs will override ld-wrapper.
382 (("(execAndGet\\(\\(\")\\<nm\\>" _ pre)
383 (string-append pre #$binutils "/bin/nm"))
384 (("\\<(addr2line|objcopy)\\>" _ cmd)
385 (string-append #$binutils "/bin/" cmd)))
386 (substitute* "CMakeLists.txt"
387 (("libudis86") "udis86"))
388 ))
389 (add-after 'fix-path 'fix-protocols
390 (lambda* (#:key inputs outputs #:allow-other-keys)
391 (let ((protocols (string-append
392 (getcwd)
393 "/subprojects/hyprland-protocols/protocols")))
394 (mkdir-p protocols)
395 (copy-recursively
396 (search-input-directory inputs "share/hyprland-protocols/protocols")
397 protocols))))
398 (add-after 'install 'wrap-program
399 (lambda* (#:key inputs outputs #:allow-other-keys)
400 (let ((out (assoc-ref outputs "out"))
401 (mesa (assoc-ref inputs "mesa")))
402 (wrap-program (string-append out "/bin/Hyprland")
403 `("__EGL_VENDOR_LIBRARY_DIRS" prefix ,(list (string-append mesa "/share/glvnd/egl_vendor.d")))))))
404 )))
405 (native-inputs
406 (list gcc-13
407 jq
408 pkg-config
409 hyprwayland-scanner
410 hwdata-for-hyprland))
411 (inputs
412 (list gcc-13
413
414 cairo
415 pango
416 pciutils
417 libliftoff
418 udis86
419
420 aquamarine
421 hyprcursor
422 hyprland-protocols
423 hyprlang
424 hyprutils
425
426 xorg-server-xwayland-for-hyprland))
427 (home-page "https://hyprland.org")
428 (synopsis "Dynamic tiling Wayland compositor based on wlroots")
429 (description
430 "Hyprland is a dynamic tiling Wayland compositor based on @code{wlroots}
431that doesn't sacrifice on its looks. It supports multiple layouts, fancy
432effects, has a very flexible IPC model allowing for a lot of customization, and
433more.")
434 (license license:bsd-3)))
435
436
437(define-public hyprpaper
438 (package
439 (name "hyprpaper")
440 (version "0.7.0")
441 (source (origin
442 (method url-fetch)
443 (uri (string-append "https://github.com/hyprwm/hyprpaper"
444 "/archive/refs/tags/v" version ".tar.gz"))
445 (sha256
446 (base32
447 "1d23nsj5hzyxwvhkg9a7x1b8jgyqwzad91zb1894jnxr2d844h28"))))
448 (build-system cmake-build-system)
449 (arguments
450 `(#:tests? #f))
451 (native-inputs
452 (list gcc-13
453 pkg-config))
454 (inputs
455 (list hyprlang
456 wayland-protocols-1.36
457 wayland
458 cairo
459 libjpeg-turbo
460 libwebp
461 mesa
462 pango
463 libglvnd))
464 (home-page "https://github.com/hyprwm/hyprpaper")
465 (license license:bsd-3)
466 (synopsis "Hyprpaper is a blazing fast wayland wallpaper utility with IPC controls.")
467 (description "Hyprpaper is a blazing fast wayland wallpaper utility with IPC controls.")))
468
469
470(define-public hypridle
471 (package
472 (name "hypridle")
473 (version "0.1.2")
474 (source (origin
475 (method url-fetch)
476 (uri (string-append "https://github.com/hyprwm/hypridle"
477 "/archive/refs/tags/v" version ".tar.gz"))
478 (sha256
479 (base32
480 "0ybwip7yq9q569naz5bnrvcdz99648c4pln2zi30z21y333hpas0"))))
481 (build-system cmake-build-system)
482 (arguments
483 `(#:tests? #f))
484 (native-inputs
485 (list gcc-13
486 pkg-config))
487 (inputs
488 (list hyprlang
489 wayland-protocols-1.36
490 wayland
491 sdbus-c++))
492 (home-page "https://github.com/hyprwm/hypridle")
493 (license license:bsd-3)
494 (synopsis "Hyprland's idle daemon ")
495 (description "Hyprland's idle daemon ")))
496
497hyprland
diff --git a/modules/ryan-packages/patches/aquamarine-fix-cmake.patch b/modules/ryan-packages/patches/aquamarine-fix-cmake.patch
new file mode 100644
index 0000000..bd29649
--- /dev/null
+++ b/modules/ryan-packages/patches/aquamarine-fix-cmake.patch
@@ -0,0 +1,25 @@
1From 7b6f11ed0708d8775f42107e19d9099835e2498e Mon Sep 17 00:00:00 2001
2From: Freya Murphy <freya@freyacat.org>
3Date: Mon, 5 Aug 2024 17:52:48 -0400
4Subject: [PATCH] fix cmake
5
6---
7 CMakeLists.txt | 2 +-
8 1 file changed, 1 insertion(+), 1 deletion(-)
9
10diff --git a/CMakeLists.txt b/CMakeLists.txt
11index bb7a4d6..7f7e7ff 100644
12--- a/CMakeLists.txt
13+++ b/CMakeLists.txt
14@@ -19,7 +19,7 @@ set(INCLUDE ${CMAKE_INSTALL_FULL_INCLUDEDIR})
15 set(LIBDIR ${CMAKE_INSTALL_FULL_LIBDIR})
16
17 find_package(PkgConfig REQUIRED)
18-find_package(OpenGL REQUIRED COMPONENTS "GLES2")
19+find_package(OpenGL REQUIRED)
20 find_package(hyprwayland-scanner 0.4.0 REQUIRED)
21 pkg_check_modules(
22 deps
23--
242.45.1
25
diff --git a/modules/ryan-packages/patches/hyprland-fix-cmake.patch b/modules/ryan-packages/patches/hyprland-fix-cmake.patch
new file mode 100644
index 0000000..d294905
--- /dev/null
+++ b/modules/ryan-packages/patches/hyprland-fix-cmake.patch
@@ -0,0 +1,41 @@
1From 33fac66982422104cc1c2664f9a841fc96295c13 Mon Sep 17 00:00:00 2001
2From: Freya Murphy <freya@freyacat.org>
3Date: Mon, 5 Aug 2024 20:35:50 -0400
4Subject: [PATCH] fix cmake
5
6---
7 CMakeLists.txt | 4 +---
8 1 file changed, 1 insertion(+), 3 deletions(-)
9
10diff --git a/CMakeLists.txt b/CMakeLists.txt
11index fa58b63d..51ea6cfa 100644
12--- a/CMakeLists.txt
13+++ b/CMakeLists.txt
14@@ -26,7 +26,6 @@ execute_process(COMMAND ./scripts/generateVersion.sh
15 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
16
17 # udis
18-add_subdirectory("subprojects/udis86")
19
20 if(CMAKE_BUILD_TYPE)
21 string(TOLOWER ${CMAKE_BUILD_TYPE} BUILDTYPE_LOWER)
22@@ -85,7 +84,7 @@ if(LEGACY_RENDERER)
23 else()
24 set(GLES_VERSION "GLES3")
25 endif()
26-find_package(OpenGL REQUIRED COMPONENTS ${GLES_VERSION})
27+find_package(OpenGL REQUIRED)
28
29 pkg_check_modules(
30 deps
31@@ -314,7 +313,6 @@ protocolwayland()
32
33 # tools
34 add_subdirectory(hyprctl)
35-add_subdirectory(hyprpm)
36
37 # binary and symlink
38 install(TARGETS Hyprland)
39--
402.45.1
41