@@ -118,17 +118,21 @@ (define-module (gnu packages wm)
#:use-module (gnu packages build-tools)
#:use-module (gnu packages calendar)
#:use-module (gnu packages check)
+ #:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages cpp)
#:use-module (gnu packages crates-io)
#:use-module (gnu packages crates-graphics)
#:use-module (gnu packages datastructures)
#:use-module (gnu packages docbook)
#:use-module (gnu packages documentation)
+ #:use-module (gnu packages engineering)
#:use-module (gnu packages flex)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages fribidi)
#:use-module (gnu packages gawk)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
@@ -314,6 +318,81 @@ (define-public herbstluftwm
(home-page "https://herbstluftwm.org")
(license license:bsd-2)))
+(define-public hyprland
+ (package
+ (name "hyprland")
+ (version "0.44.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/hyprwm/Hyprland"
+ "/releases/download/v" version
+ "/source-v" version ".tar.gz"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Remove bundled sources and hyprpm utility.
+ (substitute* "CMakeLists.txt"
+ (("^add_subdirectory\\(hyprpm\\).*") ""))
+ (for-each delete-file-recursively
+ '("hyprpm"
+ "subprojects"))))
+ (sha256
+ (base32
+ "0qzwdlj0bwj267285l3gjklhafn3bln90z985yws4j5cbp7bj0d9"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list #:cmake cmake-3.30
+ #:tests? #f ;No tests.
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/xwayland/Server.cpp"
+ (("Xwayland( \\{\\})" _ suffix)
+ (string-append
+ (search-input-file inputs "bin/Xwayland")
+ suffix)))
+ (substitute* (find-files "src" "\\.cpp$")
+ (("/usr/local(/bin/Hyprland)" _ path)
+ (string-append #$output path))
+ (("/usr") #$output)
+ (("\\<(addr2line|cat|lspci|nm)\\>" cmd)
+ (search-input-file
+ inputs (string-append "bin/" cmd)))))))))
+ (native-inputs
+ (list gcc-14
+ hyprwayland-scanner
+ (module-ref (resolve-interface
+ '(gnu packages commencement))
+ 'ld-wrapper)
+ pkg-config))
+ (inputs
+ (list aquamarine
+ binutils
+ cairo
+ hyprcursor
+ hyprland-protocols
+ hyprlang
+ hyprutils
+ libinput-minimal
+ libxcursor
+ libxkbcommon
+ mesa
+ pango
+ pciutils
+ udis86
+ wayland
+ wayland-protocols
+ xcb-util-errors
+ xcb-util-wm
+ xorg-server-xwayland))
+ (home-page "https://hyprland.org/")
+ (synopsis "Dynamic tiling Wayland compositor")
+ (description
+ "Hyprland is a dynamic tiling Wayland compositor that doesn't sacrifice on
+its looks.")
+ (license license:bsd-3)))
+
(define-public i3status
(package
(name "i3status")