(define-module (ryan-packages freedesktop) #:use-module (guix download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix gexp) #:use-module (guix build-system meson) #:use-module (guix build-system cmake) #:use-module (guix build-system qt) #:use-module (guix build utils) #:use-module (guix packages) #:use-module (guix git-download) #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages gl) #:use-module (gnu packages linux) #:use-module (gnu packages image) #:use-module (gnu packages qt) #:use-module (gnu packages bash) #:use-module (gnu packages cmake) #:use-module (gnu packages gcc) #:use-module (gnu packages pkg-config) #:use-module (gnu packages freedesktop) #:use-module (gnu packages xorg) #:use-module (gnu packages glib) #:use-module (gnu packages man) #:use-module (rosenthal packages wm) #:use-module (gnu packages wm)) (define-public xdg-desktop-portal-wlr-new (package (inherit xdg-desktop-portal-wlr) (version "0.7.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/emersion/xdg-desktop-portal-wlr") (commit (string-append "v" version)))) (sha256 (base32 "1b3hpp3ybjgnnmnwsyb5bsnvz9q5nr3zz0j1alh02g24f68lf00k")) (patches (search-patches "xdg-desktop-portal-wlr-harcoded-length.patch")))) (native-inputs (modify-inputs (package-native-inputs xdg-desktop-portal-wlr) (append wlroots))))) (define-public xdg-desktop-portal-hyprland-ryan (package (name "xdg-desktop-portal-hyprland") (version "1.3.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/hyprwm/xdg-desktop-portal-hyprland") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "0fdbzxanmmzrvb9wfzg1pdsnlg7dl6v5k8bl44w10n48s7bbbzn0")))) (build-system qt-build-system) (arguments (list #:tests? #f #:configure-flags #~(list "-Dsystemd=disabled") #:qtbase qtbase #:phases ;; After building the portal, we need to build the share selector using qt #~(modify-phases %standard-phases (add-after `unpack `fix-path (lambda* (#:key inputs #:allow-other-keys) (substitute* (find-files "." "\\.cp?*$") (("/bin/sh") "sh") (("\\<(sh|grim|hyprctl|slurp)\\>" _ cmd) (search-input-file inputs (string-append "/bin/" cmd))) (("\\<(hyprctl-share-picker)\\>" _ cmd) (string-append #$output "/bin/" cmd)))))))) (native-inputs (list gcc-13 pkg-config wayland hyprlang)) (inputs (list bash-minimal grim hyprland hyprland-protocols mesa pipewire sdbus-c++ slurp wayland-protocols qtwayland)) (home-page "") (synopsis "test") (description "test") (license license:bsd-3))) (define-public xdg-desktop-portal-hyprland-old (package (name "xdg-desktop-portal-hyprland") (version "1.2.4") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/hyprwm/xdg-desktop-portal-hyprland") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1m82rrir2fg7h2cpch6wm3h1rkpnbh9pawlw1wdknw75mi6139r0")))) (build-system meson-build-system) (arguments (list #:modules '((guix build utils) (guix build meson-build-system) ((guix build qt-build-system) #:prefix qt:)) #:imported-modules (append %meson-build-system-modules %qt-build-system-modules) #:tests? #f #:configure-flags #~(list "-Dsystemd=disabled") #:phases ;; After building the portal, we need to build the share selector using qt #~(modify-phases %standard-phases (add-after 'install 'chdir (lambda _ (chdir "../source/hyprland-share-picker/"))) (add-after 'chdir 'check-setup (assoc-ref qt:%standard-phases 'check-setup)) (add-after 'check-setup 'qt-build (lambda* (#:key inputs outputs #:allow-other-keys) ((assoc-ref qt:%standard-phases 'build) #:inputs inputs #:outputs outputs #:configure-flags '() #:qtbase #$(this-package-native-input "qtbase-5")))) (add-after 'qt-build 'qt-install (lambda* (#:key inputs outputs #:allow-other-keys) (let ((share-picker (string-append (assoc-ref outputs "out") "/bin"))) (install-file "build/hyprland-share-picker" share-picker) #t))) (add-after 'qt-install 'qt-wrap (assoc-ref qt:%standard-phases 'qt-wrap)) (add-after 'qt-wrap 'dep-wrap (lambda* (#:key inputs #:allow-other-keys) (let ((hyprland-share-picker (string-append #$output "/bin/hyprland-share-picker"))) (wrap-program hyprland-share-picker `("PATH" suffix ,(map (lambda (program) (dirname (search-input-file inputs (string-append "/bin/" program)))) '("slurp")))))))))) (native-inputs (list gcc-13 cmake pkg-config qtbase-5)) (inputs (list elogind hyprland hyprland-protocols slurp pipewire wayland-protocols wayland libinih mesa sdbus-c++ qtwayland-5 `(,util-linux "lib"))) (home-page "") (synopsis "test") (description "test") (license license:bsd-3))) (define-public wl-mirror (package (name "wl-mirror") (version "0.16.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/Ferdi265/wl-mirror") (commit (string-append "v" version)) (recursive? #t))) (file-name (git-file-name name version)) (sha256 (base32 "06i4jrip4q9j1gp81j0jr79cwfj9zdcfcr1n0jpyqlxsysppidlc")))) (inputs (list wayland egl-wayland mesa)) (native-inputs (list pkg-config scdoc wayland-protocols)) (build-system cmake-build-system) (arguments (list #:tests? #f #:phases #~(modify-phases %standard-phases (add-before 'configure 'touch (lambda _ (invoke "touch" "proto/wayland-protocols/.git") (invoke "touch" "proto/wlr-protocols/.git")))))) (home-page "bleh") (synopsis "mirror displays") (description "mirror displays") (license license:expat))) xdg-desktop-portal-hyprland-ryan