(define-module (sigils packages hyprland) #:use-module (guix packages) #:use-module (guix git-download) #:use-module (guix download) #:use-module (guix utils) #:use-module (guix gexp) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system meson) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (gnu packages admin) #:use-module (gnu packages assembly) #:use-module (gnu packages autotools) #:use-module (gnu packages build-tools) #:use-module (gnu packages cmake) #:use-module (gnu packages compression) #:use-module (gnu packages cpp) #:use-module (gnu packages file) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gcc) #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) #:use-module (gnu packages image) #:use-module (gnu packages linux) #:use-module (gnu packages pciutils) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages wm) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) #:use-module (sigils packages upstream)) (define mesa-opengl (package/inherit mesa (inputs (modify-inputs (package-inputs mesa) (append libglvnd))) (arguments (substitute-keyword-arguments (package-arguments mesa) ((#:configure-flags flags) #~(cons* "-Dopengl=true" "-Degl=enabled" "-Dglvnd=enabled" #$flags)))))) ;;; Hyprland (define hyprland-version "0.44.1") (define-public hyprutils (package (name "hyprutils") (version "0.2.3") (home-page "https://hyprland.org/") (source (origin (method git-fetch) (uri (git-reference (url "https://code.hyprland.org/hyprwm/hyprutils") (commit (string-append "v" version)))) (sha256 (base32 "01dh24rf62gb6xm32f7mfv6wx0dxprr1q9y73hvv7xanrjyia2zn")))) (build-system cmake-build-system) (native-inputs (list gcc-13 ;; TODO: remove this when GCC 13 is the default pkg-config)) (inputs (list pixman)) (arguments '(#:build-type "release")) (synopsis "Hyprland utilities library used across the ecosystem") (description "Hyprutils is a small C++ library for utilities used across the Hypr* ecosystem.") (license license:bsd-3))) (define-public hyprwayland-scanner (package (name "hyprwayland-scanner") (version "0.4.2") (home-page "https://hyprland.org/") (source (origin (method git-fetch) (uri (git-reference (url "https://code.hyprland.org/hyprwm/hyprwayland-scanner") (commit (string-append "v" version)))) (sha256 (base32 "0r7ay4zjkfyr0xd73wz99qhnqjq7nma98gm51wm9lmai4igw90qw")))) (build-system cmake-build-system) (native-inputs (list gcc-13 ;; TODO: remove this when GCC 13 is the default pkg-config)) (inputs (list pugixml)) (arguments '(#:tests? #f ;; No tests #:build-type "release")) (synopsis "A Hyprland implementation of wayland-scanner") (description "Hyprwayland-scanner automatically generates properly RAII-ready C++ bindings for Wayland protocols, for either servers or clients.") (license license:bsd-3))) (define-public aquamarine (package (name "aquamarine") (version "0.4.3") (home-page "https://hyprland.org/") (source (origin (method git-fetch) (uri (git-reference (url "https://code.hyprland.org/hyprwm/aquamarine") (commit (string-append "v" version)))) (sha256 (base32 "0x1zz1ywchs0awkjkvdgskgqnp6pz5lqwmgr8g0zc0i7inhyg1p3")))) (build-system cmake-build-system) (native-inputs (list gcc-13 ;; TODO: remove this when GCC 13 is the default pkg-config hyprwayland-scanner)) (inputs (list wayland libglvnd mesa wayland-protocols-next hyprutils libdisplay-info libinput libdrm pixman hwdata libseat)) (arguments (list #:cmake cmake-3.30 #:tests? #f ;; TODO: tests use wayland yada yada #:build-type "release")) (synopsis "Lightweight rendering library") (description "Aquamarine is a very light linux rendering backend library. It provides basic abstractions for an application to render on a Wayland session (in a window) or a native DRM session.") (license license:bsd-3))) (define-public hyprland-protocols (package (name "hyprland-protocols") (version "0.4.0") (home-page "https://hyprland.org/") (source (origin (method git-fetch) (uri (git-reference (url "https://code.hyprland.org/hyprwm/hyprland-protocols") (commit (string-append "v" version)))) (sha256 (base32 "0x86w7z3415qvixfhk9a8v5fnbnxdydzx366qz0mpmfg5h86qyha")))) (build-system meson-build-system) (native-inputs (list gcc-13 ;; TODO: remove this when GCC 13 is the default pkg-config)) (arguments '(#:build-type "release")) (synopsis "Wayland protocol extensions for Hyprland") (description "This repository exists in an effort to bridge the gap between Hyprland and KDE/Gnome's functionality. Since wayland-protocols is slow to change (on top of Hyprland not being allowed to contribute), we have to maintain a set of protocols Hyprland uses to plumb some things / add a few minor features. Most of the protocols here are small, hyprland-exclusive plumbing protocols anyways.") (license license:bsd-3))) (define-public hyprlang (package (name "hyprlang") (version "0.4.2") (home-page "https://hyprland.org/") (source (origin (method git-fetch) (uri (git-reference (url "https://code.hyprland.org/hyprwm/hyprlang") (commit (string-append "v" version)))) (sha256 (base32 "0s9lzp6s28j6liskdxf0xjawnjmcgsdsjf07n5yikbd7x61rd332")))) (build-system cmake-build-system) (native-inputs (list gcc-13 ;; TODO: remove this when GCC 13 is the default pkg-config)) (arguments '(#:build-type "release")) (synopsis "Hyprland configuration language") (description "The hypr configuration language is a configuration language for linux applications.") (license license:bsd-3))) (define-public hyprcursor (package (name "hyprcursor") (version "0.1.10") (home-page "https://hyprland.org/") (source (origin (method git-fetch) (uri (git-reference (url "https://code.hyprland.org/hyprwm/hyprcursor") (commit (string-append "v" version)))) (sha256 (base32 "1rdn03ln7pqcwp8h4nmi7nc489q8y25dd3v4paq8ykvwzhvs3a1n")))) (build-system cmake-build-system) (native-inputs (list gcc-13 ;; TODO: remove this when GCC 13 is the default pkg-config)) (inputs (list hyprlang libzip cairo librsvg tomlplusplus)) (arguments '(#:tests? #f ;; Tests need a loaded cursor theme. TODO: fix #:build-type "release")) (synopsis "The hyprland cursor format, library and utilities") (description "Hyprcursor is a new cursor theme format made as a replacement for XCursor.") (license license:bsd-3))) (define-public hyprland (package (name "hyprland") (version hyprland-version) (home-page "https://hyprland.org/") (source (origin (method git-fetch) (uri (git-reference (url "https://code.hyprland.org/hyprwm/Hyprland") (commit (string-append "v" version)))) (sha256 (base32 "11vw1h9al4jvqprwbrmxvcpxwhvsjj398wbz4flqbnmxa8idvdq1")))) (build-system meson-build-system) (arguments (list #:meson meson-1.5 #:configure-flags '(list "-Dxwayland=enabled" "-Dsystemd=disabled") #:build-type "release")) (native-inputs (list gcc-14 ;; TODO: remove this when GCC 14 is the default pkg-config cmake-minimal hyprwayland-scanner)) (propagated-inputs (list xorg-server-xwayland)) (inputs (list wayland aquamarine wayland-protocols-next hyprland-protocols hyprcursor hyprlang hyprutils libglvnd glib mesa cairo pango libxkbcommon libinput udis86 tomlplusplus xorg-server-xwayland ;; X support libxcb xcb-util-errors xcb-util-wm libxcursor)) (synopsis "Independent, dynamic tiling Wayland compositor") (description "Hyprland is a 100% independent, dynamic tiling Wayland compositor that doesn't sacrifice on its looks.") (license license:bsd-3))) (define-public hyprsplit (package (name "hyprsplit") (version hyprland-version) (home-page "https://github.com/shezdy/hyprsplit") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/shezdy/hyprsplit") (commit (string-append "v" version)))) (sha256 (base32 "0dvisiff3c69wqfb5xsh4jf8lcm1d1aj0nx8djbl1jfcccfx1q4p")))) (build-system meson-build-system) ;; Hyprland plugins need the same inputs as Hyprland, and Hyprland itself (native-inputs (package-native-inputs hyprland)) (inputs (modify-inputs (package-inputs hyprland) (append hyprland))) (arguments '(#:build-type "release")) (synopsis "awesome / dwm like workspaces for hyprland") (description "hyprland plugin for separate sets of workspaces on each monitor") (license license:bsd-3))) (define-public split-monitor-workspaces (let ((hyprpm-pin "7c0cec6e8661facf252b2c974f214b60c4f87466")) (package (name "split-monitor-workspaces") (version hyprland-version) (home-page "https://github.com/Duckonaut/split-monitor-workspaces") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/Duckonaut/split-monitor-workspaces") (commit hyprpm-pin))) (sha256 (base32 "1i6xlpcgqz8xn8hxjynipv84hkpknsszf2h9adpx4ka5hndjg16i")))) (build-system meson-build-system) ;; Hyprland plugins need the same inputs as Hyprland, and Hyprland itself (native-inputs (package-native-inputs hyprland)) (inputs (modify-inputs (package-inputs hyprland) (append hyprland))) (arguments '(#:build-type "release")) (synopsis "awesome / dwm like workspaces for hyprland") (description "hyprland plugin for separate sets of workspaces on each monitor") (license license:bsd-3)))) (define-public hyprpaper (package (name "hyprpaper") (version "0.7.1") (home-page "https://hyprland.org/") (source (origin (method git-fetch) (uri (git-reference (url "https://code.hyprland.org/hyprwm/hyprpaper") (commit (string-append "v" version)))) (sha256 (base32 "10yb2853fd0ljxijwkqm146bnirzpghfc5kw080ws24hjmfbp0hw")))) (build-system cmake-build-system) (native-inputs (list gcc-13 ;; TODO: remove this when GCC 13 is the default pkg-config hyprwayland-scanner)) (inputs (list wayland wayland-protocols-next pango cairo libglvnd libjpeg-turbo libwebp hyprlang hyprutils)) (arguments '(#:tests? #f ;; No tests #:build-type "release")) (synopsis "Wallpaper utility with IPC controls") (description "Hyprpaper is a wallpaper utility for Hyprland with the ability to dynamically change wallpapers through sockets") (license license:bsd-3))) (define-public hyprlock (package (name "hyprlock") (version "0.5.0") (home-page "https://hyprland.org/") (source (origin (method git-fetch) (uri (git-reference (url "https://code.hyprland.org/hyprwm/hyprlock") (commit (string-append "v" version)))) (sha256 (base32 "07404h6w5934yimpwb0p9dxg1w3nv702bckm4m99jbjrda6jqhmi")))) (build-system cmake-build-system) (native-inputs (list gcc-13 ;; TODO: remove this when GCC 13 is the default pkg-config hyprwayland-scanner)) (inputs (list cairo file libdrm libglvnd libjpeg-turbo libwebp libxkbcommon mesa-opengl hyprlang hyprutils linux-pam pango sdbus-c++-next wayland wayland-protocols-next)) (arguments (list #:tests? #f ;; No tests #:build-type "release" #:phases #~(modify-phases %standard-phases (add-after 'install 'wrap-program (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin/hyprlock")) (mesa (assoc-ref inputs "mesa"))) (wrap-program bin `("__EGL_VENDOR_LIBRARY_DIRS" = (,(string-append mesa "/share/glvnd/egl_vendor.d")))))))))) (synopsis "GPU-accelerated screen locking utility") (description "Hyprland's multi-threaded and GPU-accelerated screen locking utility.") (license license:bsd-3)))