(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 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 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)) ;;; To upstream before the heat death of the universe (define-public wayland-next (package (inherit wayland) (name "wayland") (version "1.23.1") (source (origin (method git-fetch) (uri (git-reference (url "https://gitlab.freedesktop.org/wayland/wayland.git") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "0jcjx1r25cyzdckm05wb3n1047ifgrwxh49vdwz4dvygfnvjvll8")))))) (define-public libinput-next (package (inherit libinput) (name "libinput") (version "1.26.0") (source (origin (method git-fetch) (uri (git-reference (url "https://gitlab.freedesktop.org/libinput/libinput.git") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "010bqvic471prhja1j5xqni9dhqc36ikqpxi8ih0fs13wph70p4s")))))) (define-public udis86 (let ((commit "5336633af70f3917760a6d441ff02d93477b0c86") (revision "1")) (package (name "udis86") (version (git-version "1.7.2" revision commit)) (home-page "http://udis86.sourceforge.net/") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/canihavesomecoffee/udis86.git") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "0y5z1169wff578jylpafsww4px4y6gickhcs885a9c660d8xs9qy")))) (build-system gnu-build-system) (native-inputs (list pkg-config autoconf automake libtool python)) (arguments (list #:configure-flags #~(list "--enable-shared" (string-append "--with-python=" #$(file-append python "/bin/python3"))))) (synopsis "Disassembler Library for x86 and x86-64") (description "Udis86 is a disassembler for the x86 and x86-64 class of instruction set architectures.") (license license:bsd-2)))) ;;; 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)) (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 (list #:tests? #f)) ;; No tests (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-next libglvnd mesa wayland-protocols-next hyprutils libdisplay-info libinput-next libdrm pixman hwdata libseat)) (arguments (list #:cmake cmake-3.30 #:tests? #f)) ;; TODO: tests use wayland yada yada (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)) (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)) (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 (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"))) (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-next aquamarine wayland-protocols-next hyprland-protocols hyprcursor hyprlang hyprutils libglvnd glib mesa cairo pango libxkbcommon libinput-next 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))) (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))) (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-next wayland-protocols-next pango cairo libglvnd libjpeg-turbo libwebp hyprlang hyprutils)) (arguments '(#:tests? #f)) (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)))