all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#73328] Adding Hyprland
@ 2024-09-18  3:31 The Man
  0 siblings, 0 replies; only message in thread
From: The Man @ 2024-09-18  3:31 UTC (permalink / raw)
  To: 73328


[-- Attachment #1.1: Type: text/plain, Size: 1151 bytes --]

While the conditions are not quite ideal, guix is almost in a form to
accept Hyprland
the following remains:
mesa-updates commits:
318a1b8596b4862e7449f9e809fc29b203256db6 (gnu: wayland-protocols: Update to
1.37.)
fdc34f63b54de7d356cc5adcbed7a0c7a532c789 (gnu: libinput: Update to 1.26.2.)
in the master guix branch:
https://issues.guix.gnu.org/73311 (libliftoff)
others:
pipewire updated (only issue with a single header, not a real blocker but
would be ideal)

Otherwise, see attached with the hypr* desktop and utilities building,
running, and working
on my desktop.

The only caveat existing is that adding the following:
("GBM_BACKENDS_PATH" . ,(file-append mesa "/lib:$GBM_BACKENDS_PATH"))
to a home-environment-variables-service-type in your home configuration is
apparently a
requirement for running or hyprland will complain about egl/gbm.
otherwise I've tested the functionality of the desktop and nothing appears
to be broken.
linked, a screenshot of hyprland running in guix:
https://files.catbox.moe/2troyt.webp

attached are the package and service files.
feel free to put this off until later, this is only to show that it can be
done.

[-- Attachment #1.2: Type: text/html, Size: 1522 bytes --]

[-- Attachment #2: hyprland.scm --]
[-- Type: application/octet-stream, Size: 22244 bytes --]

(define-module (hyprland packages hyprland)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix build-system cmake)
  #:use-module (guix build-system copy)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system meson)
  #:use-module (guix build-system trivial)
  #:use-module (guix download)
  #:use-module (guix build-system)
  #:use-module (guix build utils)
  #:use-module (guix gexp)
  #:use-module (guix git-download)
  #:use-module (guix packages)
  #:use-module (guix utils)
  #:use-module (gnu packages)
  #: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 cmake)
  #:use-module (gnu packages check)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages cpp)
  #:use-module (gnu packages debug)
  #:use-module (gnu packages file)
  #:use-module (gnu packages freedesktop)
  #:use-module (gnu packages fontutils)
  #: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 guile)
  #:use-module (gnu packages image)
  #:use-module (gnu packages kde-plasma)
  #:use-module (gnu packages libffi)
  #:use-module (gnu packages llvm)
  #:use-module (gnu packages onc-rpc)
  #:use-module (gnu packages opencl)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages man)
  #:use-module (gnu packages ninja)
  #: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 web)
  #:use-module (gnu packages wm)
  #:use-module (gnu packages version-control)
  #:use-module (gnu packages xdisorg)
  #:use-module (gnu packages xorg)
  #:use-module (gnu packages xml))

;; TODO: REMOVE *-for-hyprland packages as they become upstream
(define wayland-protocols-for-hyprland
  (hidden-package (package
    (inherit wayland-protocols)
    (name "wayland-protocols")
    (version "1.37")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://gitlab.freedesktop.org/wayland/wayland-protocols.git")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
              (base32
                "17j9v2i3v16qyc8pp6zq9hjs6nrzgialc5sasnphg9va2vasyb5g")))))))

(define libinput-for-hyprland
  (hidden-package (package
    (inherit libinput)
    (name "libinput-for-aquamaine")
    (version "1.26.2")
    (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
                "1zwwq7a0a6yznc6jxhp6gb50yw5vpfkvgbrabrpc5pwldpckfbrg"))))
    (arguments
      (substitute-keyword-arguments (package-arguments libinput)
        ((#:phases phases ''())
          #~(modify-phases %standard-phases
              (delete 'check)))))))) ;;broken tests. probably fine

(define libliftoff-for-hyprland
  (hidden-package (package
    (name "libliftoff")
    (version "0.5.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://gitlab.freedesktop.org/emersion/libliftoff")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
              (base32
                "163g8ndsbma7acy2k9mrnvlpb7yi4431hgkx1gygkafgwpq1ii1x"))))
    (build-system meson-build-system)
    (native-inputs (list pkg-config))
    (inputs (list libdrm))
    (home-page "https://gitlab.freedesktop.org/emersion/libliftoff")
    (synopsis "Lightweight KMS plane library")
    (description
    "Libliftoff eases the use of KMS planes from userspace without standing in your
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))))

;; TODO: remove once pipewire is updated upstream
;; this is here to fix a SINGLE HEADER FILE
(define pipehypr
  (hidden-package (package
    (inherit pipewire)
    (name "pipehypr")
    (arguments
      (substitute-keyword-arguments (package-arguments pipewire)
        ((#:phases phases ''())
          #~(modify-phases %standard-phases
            (add-after 'unpack 'fix-spa
              (lambda _
                (substitute* "spa/include/spa/pod/dynamic.h"
                  (("SPA_VERSION_POD_BUILDER_CALLBACKS")
                    ".version = SPA_VERSION_POD_BUILDER_CALLBACKS")))))))))))

(define-public hyprutils
  (package
    (name "hyprutils")
    (version "0.2.1")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url (string-append "https://github.com/hyprwm/" name))
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
              (base32
                "0nxx5yb5k9726x95n8gi27xyxyzwb0ma0nj3czpb51sda1k0hz0g"))))
    (build-system cmake-build-system)
    (native-inputs (list gcc-14 pkg-config))
    (inputs
      (list pixman))
    (home-page "https://hyprland.org/")
    (synopsis "Small C++ library for utilities used across the Hypr* ecosystem")
    (description
    "Small C++ library for utilities used across the Hypr* ecosystem.")
    (license license:bsd-3)))

(define-public hyprland-protocols
  (package
    (name "hyprland-protocols")
    (version "0.3.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url (string-append "https://github.com/hyprwm/" name))
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
              (base32
                "01j5hc8qnjzqiiwryfawx1wzrhkn0m794knphyc0vsxwkcmjaj8x"))))
    (build-system meson-build-system)
    (home-page "https://hyprland.org")
    (synopsis "Wayland protocol extensions for Hyprland")
    (description
    "This package provides Wayland protocol extensions for Hyprland and it
exists in an effort to bridge the gap between Hyprland and KDE/Gnome's
functionality.  Since @code{wlr-protocols} is closed for new submissions, and
@code{wayland-protocols} is very slow with changes, this package will hold
protocols used by Hyprland to bridge the aforementioned gap.")
    (license license:bsd-3)))

(define-public aquamarine
  (package
    (name "aquamarine")
    (version "0.4.1")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url (string-append "https://github.com/hyprwm/" name))
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
              (base32
                "19yrwaiyh4za8d3xixjkqdif1l4r71q7rzqa05by5zc3za3vzlzw"))))
    (build-system cmake-build-system)
    (arguments
      `(#:tests? #f ;; no test
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'fixcmake
            (lambda* (#:key inputs native-inputs #:allow-other-keys)
              (substitute* "CMakeLists.txt"
                (("\"GLES2\"") "GLES2 EGL")
                (("OpenGL::OpenGL") "OpenGL::GL")))))
          #:cmake ,cmake-3.30))
    (native-inputs (list gcc-14 pkg-config))
    (inputs
      (list hyprwayland-scanner
        hyprutils
        pciutils
        mesa
        wayland
        wayland-protocols-for-hyprland
        libinput-for-hyprland
        libseat
        libdisplay-info
        libdrm
        libffi
        pixman
        eudev
        xorg-server-xwayland
        hwdata))
    (home-page "https://hyprland.org/")
    (synopsis "Very light linux rendering backend 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.  It is agnostic of the rendering API (Vulkan/OpenGL)
and designed to be lightweight, performant, and minimal.")
    (license license:bsd-3)))

(define-public hyprwayland-scanner
  (package
    (name "hyprwayland-scanner")
    (version "0.4.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url (string-append "https://github.com/hyprwm/" name))
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
              (base32
                "1xc2xcxpq61lg964ihk0wbfzqqvibw20iz09g0p33ym51gwlpxr4"))))
    (build-system cmake-build-system)
    (arguments
      `(#:tests? #f))      ;No tests.
    (native-inputs (list gcc-14 pkg-config))
    (inputs
      (list pugixml))
    (home-page "https://github.com/hyprwm/hyprwayland-scanner")
    (synopsis "Hyprland implementation of wayland-scanner, in and for C++")
    (description
    "This package provides a Hyprland implementation of wayland-scanner, in and
for C++.")
    (license license:bsd-3)))

(define-public hyprlang
  (package
    (name "hyprlang")
    (version "0.5.2")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url (string-append "https://github.com/hyprwm/" name))
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
              (base32
                "17i0372yv0fcwnyki36crz7afw8c5f3j985m083p7rjbh4fn3br6"))))
    (build-system cmake-build-system)
    (native-inputs (list gcc-14 pkg-config))
    (inputs
      (list hyprutils))
    (home-page "https://hyprland.org/")
    (synopsis "The hypr configuration 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.9")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url (string-append "https://github.com/hyprwm/" name))
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
              (base32
                "0z3ar580n630145nq80qw0p8v0kai6knvhi6nr9z0y1jrb07b0ql"))))
    (build-system cmake-build-system)
    (arguments
      `(#:tests? #f)) ;; broken test
    (native-inputs (list gcc-14 pkg-config))
    (inputs
      (list hyprlang
        libzip
        cairo
        librsvg
        tomlplusplus))
    (home-page "https://hyprland.org/")
    (synopsis "The hypr configuration 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 xdg-desktop-portal-hyprland
  (package
    (name "xdg-desktop-portal-hyprland")
    (version "1.3.3")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url (string-append "https://github.com/hyprwm/" name))
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
              (base32
                "14n4a8b91ili0kp2kjqlw3h57bsxkrjwg5bhlw2h3q93zaxv2b3k"))))
    (build-system cmake-build-system)
    (arguments
      `(#:configure-flags
        '("-DSYSTEMD_SERVICES=false")
        #:phases
          (modify-phases %standard-phases
            (add-after 'install 'wrap-stuff
              (lambda* (#:key inputs outputs #:allow-other-keys)
                (wrap-program (string-append
                  (assoc-ref outputs "out") "/bin/hyprland-share-picker")
                    `("PATH" ":" prefix
                    (,(string-append (assoc-ref inputs "slurp") "/bin"))))
                (wrap-program (string-append
                  (assoc-ref outputs "out") "/libexec/xdg-desktop-portal-hyprland")
                    `("PATH" ":" prefix
                    (,(string-append (assoc-ref inputs "hyprpicker") "/bin")
                    ,(string-append (assoc-ref inputs "hyprland") "/bin")))))))
        #:tests? #f)) ;; no test
    (native-inputs (list gcc-14 pkg-config))
    (inputs
      (list bash-minimal ;; for wrap
        hyprland-protocols
        hyprwayland-scanner
        hyprlang
        hyprpicker
        hyprland
        libdrm
        mesa
        qtbase
        qtwayland
        sdbus-c++
        slurp
        pipehypr
        wayland
        wayland-protocols-for-hyprland))
    (home-page "https://hyprland.org")
    (synopsis "XDG Desktop Portal backend for Hyprland")
    (description
    "An XDG Desktop Portal backend for Hyprland.")
    (license license:bsd-3)))

(define-public hyprland
  (package
    (name "hyprland")
    (version "0.43.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                (url (string-append "https://github.com/hyprwm/" name))
                (commit (string-append "v" version))
                (recursive? #t)))
              (file-name (git-file-name name version))
              (sha256
              (base32
                "18bdh3p37fb8pz4yywfv1br8n5wqsj8pa3507x8gh3b8xgp3s0gv"))))
    (build-system cmake-build-system)
    (arguments
      `(#:configure-flags '("-DNO_SYSTEMD=true" "-DLEGACY_RENDERER=false")
        #:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'fixhardcodedusr
              (lambda* (#:key outputs #:allow-other-keys)
                (substitute* "src/render/OpenGL.cpp"
                  (("/usr")
                    (assoc-ref outputs "out")))))
            (add-after 'install 'wrap-hyprland
              (lambda* (#:key inputs outputs #:allow-other-keys)
                (wrap-program (string-append (assoc-ref outputs "out") "/bin/Hyprland")
                  `("PATH" ":" prefix
                  (,(string-append (assoc-ref inputs "coreutils") "/bin")
                  ,(string-append (assoc-ref inputs "xorg-server-xwayland") "/bin")
                  ,(string-append (assoc-ref inputs "pciutils") "/bin")
                  ,(string-append (assoc-ref inputs "pkgconf") "/bin")))))))
        #:cmake ,cmake-3.30
        #:tests? #f)) ;; no tests
    (native-inputs (list gcc-14 ninja pkg-config jq hyprwayland-scanner python))
    (inputs
      (list aquamarine
        bash-minimal ;; for wrap
        pkgconf
        cairo
        git
        hyprcursor
        hyprlang
        hyprutils
        libdrm
        libinput-for-hyprland
        libxkbcommon
        mesa
        pango
        pciutils
        tomlplusplus
        wayland
        wayland-protocols-for-hyprland
        libxcursor
        libseat
        libdisplay-info
        hwdata
        libliftoff-for-hyprland
        xorg-server-xwayland
        xcb-util
        ;; xwayland support
        libxcb
        libxdmcp
        xcb-util-errors
        xcb-util-renderutil
        xcb-util-wm
        xcb-util-cursor
        xcb-util-image
        xcb-util-keysyms
        xcb-proto))
    (home-page "https://hyprland.org")
    (synopsis "Dynamic tiling Wayland compositor based on wlroots")
    (description
    "Hyprland is a dynamic tiling Wayland compositor based on @code{wlroots}
that doesn't sacrifice on its looks.  It supports multiple layouts, fancy
effects, has a very flexible IPC model allowing for a lot of customization, and
more.")
    (license license:bsd-3)))

(define-public hyprlock
  (package
    (name "hyprlock")
    (version "0.4.1")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url (string-append "https://github.com/hyprwm/" name))
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
              (base32
                "1zzv7w7hn8k71w75a9mz548cbl4f8zcsd8i92abgnrx5x9i35q63"))))
    (build-system cmake-build-system)
    (arguments
      `(#:cmake ,cmake-3.30
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'fixcmake
            (lambda* (#:key inputs native-inputs #:allow-other-keys)
              (substitute* "CMakeLists.txt"
              (("  opengl") "") ;; listed under pkgconfig, which won't find it
              (("OpenGL REQUIRED") "OpenGL REQUIRED COMPONENTS GLES2 EGL")))))
      #:tests? #f)) ;; no test
    (native-inputs (list gcc-14 pkg-config))
    (inputs
        (list libxkbcommon
        mesa
        libwebp
        (specification->package "libjpeg-turbo")
        linux-pam
        wayland
        wayland-protocols-for-hyprland
        cairo
        libdrm
        hyprlang
        hyprutils
        pango
        file))
    (home-page "https://hyprland.org/")
    (synopsis "Hyprland's screen locking utility")
    (description
    "Hyprland's simple, yet multi-threaded and GPU-accelerated screen locking utility.")
    (license license:bsd-3)))

(define-public hypridle
  (package
    (name "hypridle")
    (version "0.1.2")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url (string-append "https://github.com/hyprwm/" name))
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
              (base32
                "10l0yxy1avryjj54gimw2blhl7348dypyhh43b73a8ncjicpjnzc"))))
    (build-system cmake-build-system)
    (arguments
      `(#:tests? #f)) ;; no test
    (native-inputs (list gcc-14 pkg-config))
    (inputs
        (list wayland
        wayland-protocols-for-hyprland
        sdbus-c++
        hyprlang))
    (home-page "https://hyprland.org/")
    (synopsis "Hyprland's idle daemon")
    (description
    "Hyprland's idle daemon.")
    (license license:bsd-3)))

(define-public hyprpaper
  (package
    (name "hyprpaper")
    (version "0.7.1")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url (string-append "https://github.com/hyprwm/" name))
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
              (base32
                "10yb2853fd0ljxijwkqm146bnirzpghfc5kw080ws24hjmfbp0hw"))))
    (build-system cmake-build-system)
    (arguments
      `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'fixcmake
            (lambda* (#:key inputs native-inputs #:allow-other-keys)
              (substitute* "CMakeLists.txt"
              (("PkgConfig REQUIRED")
                (string-append "PkgConfig REQUIRED)\n"
                "find_package(OpenGL REQUIRED COMPONENTS \"GLES2\""))
              (("  OpenGL") "OpenGL::GL")
              (("  GLESv2") "OpenGL::GLES2")))))
        #:tests? #f
        #:cmake ,cmake-3.30)) ;; no test
    (native-inputs (list gcc-14 pkg-config))
    (inputs
        (list libwebp
        mesa
        (specification->package "libjpeg-turbo")
        wayland
        wayland-protocols-for-hyprland
        cairo
        hyprlang
        hyprutils
        pango
        file
        hyprwayland-scanner))
    (home-page "https://hyprland.org/")
    (synopsis "Wallpaper utility for Hyprland")
    (description
    "Hyprpaper is a blazing fast wallpaper utility for Hyprland with the ability
to dynamically change wallpapers through sockets.  It will work on all wlroots-based
compositors, though.")
    (license license:bsd-3)))

(define-public hyprpicker
  (package
    (name "hyprpicker")
    (version "0.3.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url (string-append "https://github.com/hyprwm/" name))
                    ;;(commit (string-append "v" version))))
                    (commit "38fe668e58014c75cf28f7cb5fc136aa710e7039")))
                    ;; TODO: replace once new tag is set
              (file-name (git-file-name name version))
              (sha256
              (base32
                "1km5cxmzvgzykkrcnqzmcd1268hcywmsls1w531hjn4v5si771pk"))))
    (build-system cmake-build-system)
    (arguments
      `(#:tests? #f
        #:configure-flags (list (string-append "-DCMAKE_INSTALL_MANDIR="
          (assoc-ref %outputs "out") "/share/man"))
        #:cmake ,cmake-3.30))
    (native-inputs (list gcc-14 pkg-config))
    (inputs
      (list libxkbcommon
        mesa
        hyprutils
        (specification->package "libjpeg-turbo")
        wayland
        wayland-protocols-for-hyprland
        cairo
        pango
        hyprwayland-scanner))
    (home-page "https://hyprland.org/")
    (synopsis "Wlroots-compatible Wayland color picker that does not suck")
    (description
    "A wlroots-compatible Wayland color picker that does not suck.")
    (license license:bsd-3)))

(define-public hyprland-meta
  (package
    (name "hyprland-meta")
    (version (package-version hyprland))
    (source #f)
    (build-system trivial-build-system)
    (arguments
      (list #:builder
             #~(begin
                (mkdir #$output))))
    (propagated-inputs
      (list aquamarine
        hyprcursor
        hypridle
        hyprland
        hyprlock
        hyprpaper
        hyprpicker
        qtwayland
        xdg-desktop-portal-hyprland))
    (home-page "https://hyprland.org")
    (synopsis "The complete Hyprland experience")
    (description
    "Hyprland is a dynamic tiling Wayland compositor based on @code{wlroots}
that doesn't sacrifice on its looks.  It supports multiple layouts, fancy
effects, has a very flexible IPC model allowing for a lot of customization, and
more.")
    (license license:bsd-3)))

[-- Attachment #3: hyprland.scm --]
[-- Type: application/octet-stream, Size: 2436 bytes --]

(define-module (hyprland services hyprland)
  #:use-module (hyprland packages hyprland)
  #:use-module (gnu services)
  #:use-module (gnu services shepherd)
  #:use-module (gnu services base)
  #:use-module (gnu services configuration)
  #:use-module (gnu services dbus)
  #:use-module (gnu system pam)
  #:use-module (guix records)
  #:use-module (guix packages)
  #:use-module (guix store)
  #:use-module (guix ui)
  #:use-module (guix utils)
  #:use-module (guix gexp)
  #:use-module (guix modules)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-26)
  #:use-module (ice-9 format)
  #:use-module (ice-9 match)
  #:export ( hyprland-desktop-configuration
             hyprland-desktop-configuration?
             hyprland-desktop-service-type))

;;;
;;; Helpers.
;;;

(define (bool value)
  (if value "true\n" "false\n"))

(define (package-direct-input-selector tree)
  "Return a procedure that selects TREE from the inputs of PACKAGE.  If TREE
is a list, it recursively searches it until it locates the last item of TREE."
  (lambda (package)
    (let loop ((tree (if (pair? tree)
                         tree
                         (list tree)))
               (package package))
      (if (null? tree)
          package
          (loop (cdr tree)
                (car (assoc-ref (package-direct-inputs package)
                                (car tree))))))))


(define-record-type* <hyprland-desktop-configuration> hyprland-desktop-configuration
  make-hyprland-desktop-configuration
  hyprland-desktop-configuration?
  (hyprland-package hyprland-package (default hyprland-meta)))

(define (hyprland-pam-services config)
  (list (unix-pam-service "hyprlock")))

(define (hyprland-dbus-service config)
  (let ((hyprland-hyprland (hyprland-package config)))
    (map (lambda (name)
           ((package-direct-input-selector name) hyprland-hyprland))
         '("hyprland"))))

(define hyprland-desktop-service-type
  (service-type
   (name 'hyprland-desktop)
   (description "Run hyprland.")
   (default-value (hyprland-desktop-configuration))
   (extensions
    (list (service-extension dbus-root-service-type
                             hyprland-dbus-service)
          (service-extension pam-root-service-type
                             hyprland-pam-services)
          (service-extension profile-service-type
                             (compose list
                                      hyprland-package))))))

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-09-18  3:33 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-18  3:31 [bug#73328] Adding Hyprland The Man

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.