Here is my current configuration:

config.scm
(use-modules
 (gnu)
 (gnu packages admin)
 (gnu packages certs)
 (gnu packages fonts)
 (gnu packages gnome)
 (gnu packages package-management)
 (gnu packages text-editors)
 (gnu packages terminals)
 (gnu packages wm)
 (gnu packages xdisorg)
 (nongnu packages linux)
 (nongnu packages mozilla)           
 (nongnu system linux-initrd))

(use-service-modules
 desktop networking ssh xorg)

(operating-system
 (host-name "guix")
 (kernel linux)
 (initrd microcode-initrd)
 (firmware (cons*
  realtek-firmware
  %base-firmware))
 (timezone "Asia/Kolkata")
 (locale "en_IN.utf8")
 (keyboard-layout (keyboard-layout "in" "en"))

 (bootloader
  (bootloader-configuration
   (bootloader grub-efi-bootloader)
   (targets '("/boot"))))

 (file-systems (cons*
  (file-system
   (device (file-system-label "guix"))
   (mount-point "/")
   (type "btrfs"))
  (file-system
   (device (uuid "C938-C7C0" 'fat))
   (mount-point "/boot")
   (type "vfat"))
   %base-file-systems))

 (swap-devices
  (list
   (swap-space
    (target
     (uuid "4550d1a4-3566-47a2-a3bc-8d77c87acc62")))))
 
 (users (cons
  (user-account
   (name "guix")
   (comment "Guix System")
   (group "users")
   (supplementary-groups '("wheel" "netdev" "audio" "video")))
   %base-user-accounts))

 (packages (cons*
  gnome-tweaks kakoune
  nss-certs tree nix
  firefox font-google-noto
  font-google-noto-emoji
  font-google-noto-sans-cjk
  font-google-noto-serif-cjk
  font-awesome %base-packages))
 
 (services (cons*
  (service openssh-service-type)
  (service bluetooth-service-type)
  (service xfce-desktop-service-type)
  (modify-services %desktop-services
   (guix-service-type
    config =>
    (guix-configuration
     (inherit config)
     (substitute-urls (cons*
      "https://substitutes.nonguix.org"
      %default-substitute-urls))
     (authorized-keys (cons*
      (local-file "./signing-key.pub")
      %default-authorized-guix-keys))))))))

I am currently on a low-end laptop, as my device has broken down. It runs on 4GB of RAM, and GNOME is pretty heavy on this device. I am looking for a custom WM setup based on Wayland preferably (river, hyprland, sway or dwl). I do not want any fancy shortcuts for terminal or any other app. I want to be able to use a launcher and toggle between workspaces. I want snapping and multi-window gestures just like how it works on GNOME. I would appreciate shortcut icons for shutdown, wifi and sound. And last but not the least, I want to be able to control brightness and light/dark mode.

Can anyone recommend me how I can start setting up a WM in this config file? What do I need to add, apart from the WM itself?