(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 qt) #: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-public hyprutils (package (name "hyprutils") (version "0.2.5") (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 "13fi64ch0d0p2ss0xw7b8axsrsp9p3ckylx866kp17brd0dzvvs8")))) (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.5") (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 "10wkyycxwahc0n3xczp7pi63823997qpm8x7z2sfqymda9ckl6d6")))) (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.5.3") (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 "0yvfrz3hdyxzhngzhr0bgc5279ra5fv01hbfi6pdj84pz0lpaw02")))) (build-system cmake-build-system) (native-inputs (list gcc-13 ;; TODO: remove this when GCC 13 is the default pkg-config)) (inputs (list hyprutils)) (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 "0.45.0") (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 "1wawqdc6wjk724b5drsh3nxhmss9ksk2ks94490lgf22wmf3ck3g")))) (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 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))) (define-public hypridle (package (name "hypridle") (version "0.1.5") (home-page "https://hyprland.org/") (source (origin (method git-fetch) (uri (git-reference (url "https://code.hyprland.org/hyprwm/hypridle") (commit (string-append "v" version)))) (sha256 (base32 "1622iz8bl8mi7gj2sc2jq6z7622l7l2izj1l9ajwj2mxpwpkdhbs")))) (build-system cmake-build-system) (native-inputs (list gcc-13 ;; TODO: remove this when GCC 13 is the default pkg-config)) (inputs (list wayland wayland-protocols-next hyprlang hyprutils sdbus-c++-next)) (arguments '(#:tests? #f ;; No tests #:build-type "release")) (synopsis "Idle daemon") (description "Hyprland's idle daemon, based on the @dfn{ext-idle-notify-v1} protocol.") (license license:bsd-3))) (define-public xdg-desktop-portal-hyprland (package (name "xdg-desktop-portal-hyprland") (version "1.3.8") (home-page "https://hyprland.org/") (source (origin (method git-fetch) (uri (git-reference (url "https://code.hyprland.org/hyprwm/xdg-desktop-portal-hyprland") (commit (string-append "v" version)))) (sha256 (base32 "0aixrjyky2mzclnwypybpg01ihfbmwzfv09zbjis49q1clrszq2p")))) (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 mesa hyprland-protocols hyprlang hyprutils libdrm pipewire sdbus-c++-next qtbase wayland wayland-protocols-next)) (arguments '(#:tests? #f ;; No tests #:build-type "release")) (synopsis "XDG desktop portal backend for Hyprland") (description "xdg-desktop-portal-hyprland is Hyprland’s xdg-desktop-portal implementation. It allows for screensharing, global shortcuts, etc.") (license license:bsd-3))) (define-public hyprpicker (package (name "hyprpicker") (version "0.4.1") (home-page "https://hyprland.org/") (source (origin (method git-fetch) (uri (git-reference (url "https://code.hyprland.org/hyprwm/hyprpicker") (commit (string-append "v" version)))) (sha256 (base32 "11r06c62dqj81r27qhf36f3smnjyk3vz8naa655m8khv4qqvmvc2")))) (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 libxkbcommon cairo pango libjpeg-turbo hyprutils)) (arguments '(#:tests? #f ;; No tests #:build-type "release")) (synopsis "wlroots-compatible Wayland color picker") (description "hyprpicker is an utility for picking a color from your screen on Hyprland.") (license license:bsd-3))) (define-public hyprsplit (package (name "hyprsplit") (version (package-version hyprland)) (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 hyprland-0.44.1 (package/inherit hyprland (version "0.44.1") (source (origin (method git-fetch) (uri (git-reference (url "https://code.hyprland.org/hyprwm/Hyprland") (commit (string-append "v" version)))) (sha256 (base32 "11vw1h9al4jvqprwbrmxvcpxwhvsjj398wbz4flqbnmxa8idvdq1")))))) (define-public split-monitor-workspaces ;; 0.44.1 pin (let ((hyprpm-pin "7c0cec6e8661facf252b2c974f214b60c4f87466") (hyprland hyprland-0.44.1)) (package (name "split-monitor-workspaces") (version (package-version hyprland)) (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 (hyprland-plugins plugin syn) (package (name plugin) (version (package-version hyprland)) (home-page "https://hyprland.org/") (source (origin (method git-fetch) (uri (git-reference (url "https://code.hyprland.org/hyprwm/hyprland-plugins") (commit (string-append "v" version)))) (sha256 (base32 "0nfxcr6mxjvrja0jdsrrlyixfaaqdnfszp7bh8x8cqz9qp167sc4")))) (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 (list ;#:build-type "release" #:phases #~(modify-phases %standard-phases (add-after 'unpack 'chdir-plugin (lambda _ (chdir #$plugin)))))) (synopsis syn) (description "This repo houses official plugins for Hyprland.") (license license:bsd-3))) (define-public borders-plus-plus (hyprland-plugins "borders-plus-plus" "adds one or two additional borders to windows")) (define-public csgo-vulkan-fix (hyprland-plugins "csgo-vulkan-fix" "fixes custom resolutions on CS:GO with -vulkan")) (define-public hyprbars (hyprland-plugins "hyprbars" "adds title bars to windows")) (define-public hyprexpo (hyprland-plugins "hyprexpo" "adds an expo-like workspace overview")) (define-public hyprtrail (hyprland-plugins "hyprtrail" "adds smooth trails behind moving windows")) (define-public hyprwinwrap (hyprland-plugins "hyprwinwrap" "clone of xwinwrap, allows you to put any app as a wallpaper"))