diff --git a/home-config/home-configuration.scm b/home-config/home-configuration.scm
index eaf8115..de6cce3 100644
--- a/home-config/home-configuration.scm
+++ b/home-config/home-configuration.scm
@@ -75,6 +75,8 @@
"kdenlive"
"sqlite"
"mpv"
+ "playerctl"
+ "pamixer"
"git"))
(list my-neovim)))
diff --git a/home-config/hypr/hyprland.conf b/home-config/hypr/hyprland.conf
index 2c23c63..fa5e6e4 100644
--- a/home-config/hypr/hyprland.conf
+++ b/home-config/hypr/hyprland.conf
@@ -15,7 +15,7 @@ monitor=,preferred,auto,1
# exec-once = waybar & hyprpaper & firefox
# Source a file (multi-file configs)
-# source = ~/.config/hypr/myColors.conf
+source = ~/.config/hypr/monitors.conf
# Some default env vars.
env = XCURSOR_SIZE,24
@@ -123,6 +123,19 @@ bind = $mainMod, F, fullscreen, 1
bind = $mainMod SHIFT, F, fullscreen
bind = ,XF86MonBrightnessUp, exec, light -A 10
bind = ,XF86MonBrightnessDown, exec, light -U 10
+bind = ,XF86AudioRaiseVolume, exec, pamixer -i 5
+bind = ,XF86AudioLowerVolume, exec, pamixer -d 5
+bind = ,XF86AudioMute, exec, pamixer -t
+bind = ,XF86AudioPlay, exec, playerctl play-pause
+bind = ,XF86AudioNext, exec, playerctl next
+bind = ,XF86AudioPrev, exec, playerctl previous
+bind = ,XF86AudioStop, exec, playerctl stop
+
+# Move workspace between monitors
+bind = $mainMod CTRL SHIFT, left, movecurrentworkspacetomonitor, l
+bind = $mainMod CTRL SHIFT, right, movecurrentworkspacetomonitor, r
+bind = $mainMod CTRL SHIFT, up, movecurrentworkspacetomonitor, u
+bind = $mainMod CTRL SHIFT, down, movecurrentworkspacetomonitor, d
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
diff --git a/home-config/hypr/monitors.conf b/home-config/hypr/monitors.conf
new file mode 100644
index 0000000..95844c8
--- /dev/null
+++ b/home-config/hypr/monitors.conf
@@ -0,0 +1,2 @@
+monitor=eDP-1,1920x1080, 1920x0, 1
+monitor=HDMI-A-1,1920x1080, 0x0, 1
diff --git a/modules/ryan-packages/freedesktop.scm b/modules/ryan-packages/freedesktop.scm
index e5db0af..7cb9e8e 100644
--- a/modules/ryan-packages/freedesktop.scm
+++ b/modules/ryan-packages/freedesktop.scm
@@ -49,15 +49,33 @@
(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 'build 'chdir-and-build
- (lambda _ (chdir "../source/hyprland-share-picker/")
- (invoke "make")))
- (add-after 'install 'install-picker
- (lambda _ (install-file "hyprland-share-picker" (string-append #$output "/bin")))))))
+ (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-new
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ((assoc-ref qt:%standard-phases 'build)
+ #:inputs inputs
+ #:outputs outputs
+ #:configure-flags '()
+ #:qtbase (let ((module (resolve-interface '(gnu packages qt))))(module-ref module 'qtbase)))))
+ (add-after 'qt-build 'qt-install
+ (assoc-ref qt:%standard-phases 'install))
+ (add-after 'qt-install 'qt-wrap
+ (assoc-ref qt:%standard-phases 'qt-wrap)))))
(native-inputs (list cmake pkg-config))
(inputs (list elogind hyprland hyprland-protocols pipewire wayland-protocols wayland libinih mesa qtwayland `(,util-linux "lib")))
(home-page "")