modules/ryan-packages/hyprland.bak
a4b3154417d4604e18b1ad0ade3d248f5505bebd
· 17.4 KB · 495 lines
raw
| 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 |
| 156 | set architectures. It consists of a C library called @code{libudis86} and a |
| 157 | command 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 |
| 179 | language 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 |
| 223 | exists in an effort to bridge the gap between Hyprland and KDE/Gnome's |
| 224 | functionality. Since @code{wlr-protocols} is closed for new submissions, and |
| 225 | @code{wayland-protocols} is very slow with changes, this package will hold |
| 226 | protocols 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 |
| 250 | for 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-ryan |
| 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} |
| 431 | that doesn't sacrifice on its looks. It supports multiple layouts, fancy |
| 432 | effects, has a very flexible IPC model allowing for a lot of customization, and |
| 433 | more.") |
| 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 "))) |