From 90e2f7ce521aa37702b08829c2c3354852df752e Mon Sep 17 00:00:00 2001 From: Daniel Ziltener Date: Mon, 18 Mar 2024 23:45:26 +0100 Subject: [PATCH] . --- zilti/packages/hyprland.scm | 404 ++++++++++++++++++++++++++++-------- 1 file changed, 317 insertions(+), 87 deletions(-) diff --git a/zilti/packages/hyprland.scm b/zilti/packages/hyprland.scm index e27e802..efc685d 100644 --- a/zilti/packages/hyprland.scm +++ b/zilti/packages/hyprland.scm @@ -2,6 +2,7 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix gexp) + #:use-module (guix utils) #:use-module (guix build-system meson) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) @@ -11,14 +12,19 @@ #:use-module (gnu packages admin) #:use-module (gnu packages autotools) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages build-tools) #:use-module (gnu packages check) #:use-module (gnu packages cmake) #:use-module (gnu packages compression) + #:use-module (gnu packages docbook) + #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gcc) + #:use-module (gnu packages ghostscript) #:use-module (gnu packages gl) #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) #:use-module (gnu packages hardware) #:use-module (gnu packages image) @@ -26,6 +32,7 @@ #:use-module (gnu packages ninja) #:use-module (gnu packages pciutils) #:use-module (gnu packages pcre) + #:use-module (gnu packages pdf) #:use-module (gnu packages python) #:use-module (gnu packages pkg-config) #:use-module (gnu packages version-control) @@ -37,6 +44,82 @@ #:use-module (gnu packages wm) #:use-module (gnu packages xorg)) +(define-public cairo ;; SENT to Guix + (package + (name "cairo") + (version "1.18.0") + (source + (origin + (method url-fetch) + (uri + (string-append "https://cairographics.org/releases/cairo-" + version ".tar.xz")) + (sha256 + (base32 + "0r0by563s75xyzz0d0j1nmjqmdrk2x9agk7r57p3v8vqp4v0ffi4")))) + (build-system meson-build-system) + (arguments + `(#:tests? #f ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html + #:configure-flags + (list + "-Dgtk_doc=true" + "-Dsymbol-lookup=disabled" + "-Dspectre=disabled" + ;; XXX: To be enabled. + ;; "--enable-gallium=yes" + ;; "--enable-gl=yes" + ;; " --enable-glesv2=yes" + ;; "--enable-glesv3=yes" + ;; "--enable-cogl=yes" + ;; "--enable-directfb=yes" + ;; "--enable-vg=yes" + ))) + (native-inputs + `(,@(if (target-hurd?) + '() + `(("gobject-introspection" ,gobject-introspection))) + ("gcc-13" ,gcc-13) + ("gtk-doc" ,gtk-doc) + ("docbook-xsl" ,docbook-xsl) + ("pkg-config" ,pkg-config) + ("python" ,python-wrapper))) + (inputs + `(("bash-minimal" ,bash-minimal) ;for glib-or-gtk-wrap + ,@(if (target-hurd?) + '() + `(("drm" ,libdrm))) + ("ghostscript" ,ghostscript) + ("libspectre" ,libspectre) + ,@(if (target-hurd?) + '() + `(("poppler" ,poppler))))) + (propagated-inputs + `( ;; ("cogl" ,cogl) + ;; ("directfb" ,directfb) + ("fontconfig" ,fontconfig) + ("freetype" ,freetype) + ("glib" ,glib) + ;; ("gtk+" ,gtk+) + ("libpng" ,libpng) + ;; ("librsvg" ,librsvg) + ;; ("opengl" ,mesa) + ("pixman" ,pixman) + ("x11" ,libx11) + ("xcb" ,libxcb) + ("xext" ,libxext) + ("xrender" ,libxrender))) + (synopsis "Multi-platform 2D graphics library") + (description "Cairo is a 2D graphics library with support for multiple output +devices. Currently supported output targets include the X Window System (via +both Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file +output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.") + (home-page "https://cairographics.org/") + (license + ;; This project is dual-licensed. + (list + license:lgpl2.1+ + license:mpl1.1)))) + (define-public swayfx (package (inherit sway) @@ -72,7 +155,7 @@ adds extra options and effects to the original Sway, such as blur, rounded corners, shadows, inactive window dimming, etc.") (license license:expat))) -(define-public tomlplusplus +(define-public tomlplusplus ;; SENT to Guix (package (name "tomlplusplus") (version "3.4.0") @@ -94,10 +177,10 @@ corners, shadows, inactive window dimming, etc.") (description "Header-only TOML config file parser and serializer for C++17.") (license license:expat))) -(define-public hwdata +(define-public hwdata ;; SENT to Guix (package (name "hwdata") - (version "0.378") ;updated monthly + (version "0.380") ;updated monthly (source (origin (method git-fetch) (uri (git-reference @@ -106,7 +189,7 @@ corners, shadows, inactive window dimming, etc.") (file-name (git-file-name name version)) (sha256 (base32 - "080mzxv2m65kv414yl6kzndsr4j1ax6smw35k0xw10rbhxpp8b30")))) + "1j7lr67ay4nz737cv4y1hiyqdz03zl5c1vdavr7fd05h92sv91i2")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) @@ -137,7 +220,7 @@ Each database is contained in a specific package output, such as the (license (list license:gpl2+ license:expat)))) ;XFree86 1.0 -(define-public libinput-1.25 +(define-public libinput-1.25 ;; SENT to Guix ;; Updating this will rebuild over 700 packages through libinput-minimal. (package (name "libinput") @@ -184,7 +267,7 @@ Each database is contained in a specific package output, such as the other applications that need to directly deal with input devices.") (license license:x11))) -(define-public libdrm-2.4.120 +(define-public libdrm-2.4.120 ;; SENT to Guix (package (name "libdrm") (version "2.4.120") @@ -256,83 +339,176 @@ way. Users create \"virtual planes\" called layers, set KMS properties on them, and libliftoff will pick hardware planes for these layers if possible.") (license license:expat))) -(define-public wlroots-0.17.1 +(define-public wayland-protocols ;; SENT to Guix (package - (name "wlroots") - (version "0.17.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.freedesktop.org/wlroots/wlroots") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1hj4gq5vx8in65622yvjm8bwqkw2vpc556k9my997a0hn0ricj37")))) + (name "wayland-protocols") + (version "1.33") + (source (origin + (method url-fetch) + (uri (string-append "https://gitlab.freedesktop.org/wayland/" + name "/-/releases/" version "/downloads/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0flnqfc8npzn6rxsw4afpr8yifwsn5kq81327yh62vhd145wbw4l")))) (build-system meson-build-system) - (arguments - `(#:configure-flags - '("-Dauto_features=enabled") - #:phases - (modify-phases - %standard-phases - (add-before 'configure 'hardcode-paths - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "xwayland/server.c" - (("Xwayland") (string-append (assoc-ref inputs - "xorg-server-xwayland") - "/bin/Xwayland"))) - #t)) - (add-before 'configure 'fix-meson-file - (lambda* (#:key native-inputs inputs #:allow-other-keys) - (substitute* "backend/drm/meson.build" - (("/usr/share/hwdata/pnp.ids") - (string-append (assoc-ref (or native-inputs inputs) "hwdata") - "/share/hwdata/pnp.ids")))))))) - (propagated-inputs - (list ;; As required by wlroots.pc. - eudev - ffmpeg-4 - glslang - libxkbcommon - mesa - pixman - libcap - libdisplay-info - libinput-1.25 - libliftoff - libpng - libseat - libxkbcommon - mesa - vulkan-loader - wayland - wayland-protocols - xcb-util-errors - xcb-util-renderutil - xcb-util-wm - xorg-server-xwayland)) (inputs - (list libdrm-2.4.120)) - (native-inputs - (cons* - `(,hwdata "pnp") - cmake - hwdata - mesa-headers - vulkan-headers - pkg-config - wayland - (if (%current-target-system) - (list pkg-config-for-build) - '()))) - (home-page "https://gitlab.freedesktop.org/wlroots/wlroots/") - (synopsis "Pluggable, composable, unopinionated modules for building a + (list wayland)) + (native-inputs (cons* pkg-config python + (if (%current-target-system) + (list pkg-config-for-build + wayland) ; for wayland-scanner + '()))) + (synopsis "Wayland protocols") + (description "Wayland-Protocols contains Wayland protocols that add +functionality not available in the Wayland core protocol. Such protocols either +add completely new functionality, or extend the functionality of some other +protocol either in Wayland core, or some other protocol in wayland-protocols.") + (home-page "https://wayland.freedesktop.org") + (properties + '((release-monitoring-url + . "https://wayland.freedesktop.org/releases.html"))) + (license license:expat))) + +(define-public wlroots-0.17.2 + (package + (name "wlroots") + (version "0.17.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.freedesktop.org/wlroots/wlroots") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0y6rrl17as5wb27v66xfgdp0pfwvikqacdlhfc8ib74m9k56mzrr")))) + (build-system meson-build-system) + (arguments + `(#:configure-flags + '("-Dauto_features=enabled") + #:phases + (modify-phases + %standard-phases + (add-before 'configure 'hardcode-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "xwayland/server.c" + (("Xwayland") (string-append (assoc-ref inputs + "xorg-server-xwayland") + "/bin/Xwayland"))) + #t)) + (add-before 'configure 'fix-meson-file + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (substitute* "backend/drm/meson.build" + (("/usr/share/hwdata/pnp.ids") + (string-append (assoc-ref (or native-inputs inputs) "hwdata") + "/share/hwdata/pnp.ids")))))))) + (propagated-inputs + (list ;; As required by wlroots.pc. + eudev + ffmpeg-4 + glslang + libxkbcommon + mesa + pixman + libcap + libdisplay-info + libinput-1.25 + libliftoff + libpng + libseat + libxkbcommon + mesa + vulkan-loader + wayland + wayland-protocols + xcb-util-errors + xcb-util-renderutil + xcb-util-wm + xorg-server-xwayland)) + (inputs + (list libdrm-2.4.120)) + (native-inputs + (cons* + `(,hwdata "pnp") + cmake + hwdata + mesa-headers + vulkan-headers + pkg-config + wayland + (if (%current-target-system) + (list pkg-config-for-build) + '()))) + (home-page "https://gitlab.freedesktop.org/wlroots/wlroots/") + (synopsis "Pluggable, composable, unopinionated modules for building a Wayland compositor") - (description "wlroots is a set of pluggable, composable, unopinionated + (description "wlroots is a set of pluggable, composable, unopinionated modules for building a Wayland compositor.") - (license license:expat))) ; MIT license + (license license:expat))) + +(define-public wlroots-hyprland + (package + (name "wlroots") + (version "50eae512d9cecbf0b3b1898bb1f0b40fa05fe19b") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.freedesktop.org/wlroots/wlroots") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0bwpppb86nfjg2lw62y449f9iz2v8djqb8n6g1cn45vqnwj8hxf1")))) + (build-system meson-build-system) + (arguments + `(#:configure-flags + '("-Dauto_features=enabled"))) + (propagated-inputs + (list ;; As required by wlroots.pc. + eudev + ffmpeg-4 + glslang + libxkbcommon + mesa + pixman + libcap + libdisplay-info + libinput-1.25 + libliftoff + libpng + libseat + libxkbcommon + mesa + vulkan-loader + wayland + wayland-protocols + xcb-util-errors + xcb-util-renderutil + xcb-util-wm + xorg-server-xwayland)) + (inputs + (list libdrm-2.4.120)) + (native-inputs + (cons* + `(,hwdata "pnp") + cmake + hwdata + mesa-headers + vulkan-headers + pkg-config + wayland + (if (%current-target-system) + (list pkg-config-for-build) + '()))) + (home-page "https://gitlab.freedesktop.org/wlroots/wlroots/") + (synopsis "Pluggable, composable, unopinionated modules for building a +Wayland compositor") + (description "wlroots is a set of pluggable, composable, unopinionated +modules for building a Wayland compositor.") + (license license:expat))) ; MIT license (define-public hyprland-protocols (package @@ -404,10 +580,62 @@ Wayland compositor based on wlroots") (description "Hyprland.") (description "EDID and DisplayID library") (license license:expat))) +(define-public hyprlang + (package + (name "hyprlang") + (version "0.5.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hyprwm/hyprlang") + (commit (string-append "v" version)))) + (sha256 + (base32 + "0f8mahg6d6wylybvh6hgayls57miwwv4w69fbaskd8d7dkg2h7kd")))) + (build-system cmake-build-system) + (native-inputs + (list gcc-13)) + (home-page "https://www.hyprland.org") + (synopsis "The official implementation library for the hypr config language.") + (description "The hypr configuration language is an extremely efficient, yet easy to work with, configuration language for linux applications.") + (license license:bsd-3))) + +(define-public hyprcursor + (package + (name "hyprcursor") + (version "0.1.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hyprwm/hyprcursor") + (commit (string-append "v" version)))) + (sha256 + (base32 + "0bp0y825g9aakh1k2n32n6g7mx40rbn1cay46kqibyvdmvskm4lv")))) + (build-system cmake-build-system) + (native-inputs + (list gcc-13 + pkg-config)) + (inputs + (list hyprlang + cairo + librsvg + libzip)) + (arguments + '(#:phases + (modify-phases %standard-phases + (delete 'check)))) + (home-page "https://www.hyprland.org") + (synopsis "The hyprland cursor format, library and utilities.") + (description "The hyprland cursor format, library and utilities.") + (license license:bsd-3))) + (define-public hyprland (package (name "hyprland") - (version "0.34.0") + (version "0.37.1") (source (origin (method git-fetch) @@ -417,7 +645,7 @@ Wayland compositor based on wlroots") (description "Hyprland.") (file-name (git-file-name name version)) (sha256 (base32 - "0jsqfg8yk2b1z52fmqw1jjn6b8qkfh5x0xk1j0zx7ng4il2f6ajr")) + "1qkiyfcb3y61kwc1gqdsav87299ji7xr5j6zbh8wgam720mgivav")) (modules '((guix build utils))) (snippet #~(begin @@ -434,11 +662,11 @@ Wayland compositor based on wlroots") (description "Hyprland.") (arguments '(#:phases (modify-phases %standard-phases - (add-before 'configure - 'pre-configure - (lambda* (#:key outputs #:allow-other-keys) - (system "patch -p1 -i nix/patches/meson-build.patch") - (system "cat src/meson.build")))))) + (add-before 'configure + 'pre-configure + (lambda* (#:key outputs #:allow-other-keys) + (system "patch -p1 -i nix/patches/meson-build.patch") + (system "cat src/meson.build")))))) (native-inputs (list gcc-13 cmake @@ -454,6 +682,8 @@ Wayland compositor based on wlroots") (description "Hyprland.") glu glfw hyprland-protocols + hyprcursor + hyprlang libdisplay-info libglvnd libinput-1.25 @@ -467,10 +697,10 @@ Wayland compositor based on wlroots") (description "Hyprland.") pciutils udis86 wayland - wlroots-0.17.1 + wlroots-hyprland xcb-util)) (home-page "https://www.hyprland.org") (synopsis "Dynamic tiling Wayland compositor based on wlroots") (description "Hyprland.") -(license license:bsd-3))) + (license license:bsd-3)))