about summary refs log tree commit diff
path: root/pkgs/applications/window-managers
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/window-managers')
-rw-r--r--pkgs/applications/window-managers/dk/default.nix4
-rw-r--r--pkgs/applications/window-managers/dwm/default.nix13
-rw-r--r--pkgs/applications/window-managers/eww/default.nix44
-rw-r--r--pkgs/applications/window-managers/fvwm/2.6.nix82
-rw-r--r--pkgs/applications/window-managers/fvwm/3.nix97
-rw-r--r--pkgs/applications/window-managers/gamescope/default.nix147
-rw-r--r--pkgs/applications/window-managers/gamescope/shaders-path.patch13
-rw-r--r--pkgs/applications/window-managers/gamescope/use-pkgconfig.patch9
-rw-r--r--pkgs/applications/window-managers/hackedbox/default.nix2
-rw-r--r--pkgs/applications/window-managers/hikari/default.nix64
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland/default.nix97
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland/plugins.nix8
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland/udis86.nix15
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland/wlroots.nix19
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprshade/default.nix9
-rw-r--r--pkgs/applications/window-managers/i3/status-rust.nix6
-rw-r--r--pkgs/applications/window-managers/jay/default.nix29
-rw-r--r--pkgs/applications/window-managers/miriway/default.nix6
-rw-r--r--pkgs/applications/window-managers/phosh/default.nix4
-rw-r--r--pkgs/applications/window-managers/phosh/phosh-mobile-settings.nix14
-rw-r--r--pkgs/applications/window-managers/river/default.nix19
-rw-r--r--pkgs/applications/window-managers/sommelier/default.nix17
-rw-r--r--pkgs/applications/window-managers/tabbed/default.nix4
-rw-r--r--pkgs/applications/window-managers/wayfire/default.nix15
-rw-r--r--pkgs/applications/window-managers/wayfire/firedecor.nix8
-rw-r--r--pkgs/applications/window-managers/wayfire/focus-request.nix58
-rw-r--r--pkgs/applications/window-managers/wayfire/plugins.nix3
-rw-r--r--pkgs/applications/window-managers/wayfire/wayfire-plugins-extra.nix36
-rw-r--r--pkgs/applications/window-managers/wayfire/wayfire-shadows.nix49
-rw-r--r--pkgs/applications/window-managers/wayfire/wcm.nix8
-rw-r--r--pkgs/applications/window-managers/wayfire/wf-shell.nix2
-rw-r--r--pkgs/applications/window-managers/wayfire/windecor.nix6
-rw-r--r--pkgs/applications/window-managers/wayfire/wwp-switcher.nix57
-rw-r--r--pkgs/applications/window-managers/weston/default.nix4
34 files changed, 343 insertions, 625 deletions
diff --git a/pkgs/applications/window-managers/dk/default.nix b/pkgs/applications/window-managers/dk/default.nix
index 09cddc31a748b..631e7b85d18eb 100644
--- a/pkgs/applications/window-managers/dk/default.nix
+++ b/pkgs/applications/window-managers/dk/default.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "dk";
-  version = "2.0";
+  version = "2.2";
 
   src = fetchFromBitbucket {
     owner = "natemaia";
     repo = "dk";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-wuEsfzy4L40tL/Lb5R1jMFa8UAvAqkI3iEd//D7lxGY=";
+    hash = "sha256-u1fZTcfGLwKFeRADU55MFYDvtSOaOg5qtWB90xYpVuY=";
   };
 
   buildInputs = [
diff --git a/pkgs/applications/window-managers/dwm/default.nix b/pkgs/applications/window-managers/dwm/default.nix
index 24b011040ae4e..0905e3f15150e 100644
--- a/pkgs/applications/window-managers/dwm/default.nix
+++ b/pkgs/applications/window-managers/dwm/default.nix
@@ -1,12 +1,15 @@
-{ lib, stdenv, fetchurl, libX11, libXinerama, libXft, writeText, patches ? [ ], conf ? null}:
+{ lib, stdenv, fetchurl, libX11, libXinerama, libXft, writeText, patches ? [ ], conf ? null
+# update script dependencies
+, gitUpdater
+}:
 
 stdenv.mkDerivation rec {
   pname = "dwm";
-  version = "6.4";
+  version = "6.5";
 
   src = fetchurl {
     url = "https://dl.suckless.org/dwm/${pname}-${version}.tar.gz";
-    sha256 = "sha256-+pwNaaWESFB2z8GICf1wXlwggNr7E9XnKaNkbKdwOm4=";
+    sha256 = "sha256-Ideev6ny+5MUGDbCZmy4H0eExp1k5/GyNS+blwuglyk=";
   };
 
   buildInputs = [ libX11 libXinerama libXft ];
@@ -29,6 +32,10 @@ stdenv.mkDerivation rec {
 
   makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
 
+  passthru.updateScript = gitUpdater {
+    url = "git://git.suckless.org/dwm";
+  };
+
   meta = with lib; {
     homepage = "https://dwm.suckless.org/";
     description = "An extremely fast, small, and dynamic window manager for X";
diff --git a/pkgs/applications/window-managers/eww/default.nix b/pkgs/applications/window-managers/eww/default.nix
deleted file mode 100644
index b245941fc7d49..0000000000000
--- a/pkgs/applications/window-managers/eww/default.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ lib
-, rustPlatform
-, fetchFromGitHub
-, pkg-config
-, wrapGAppsHook
-, gtk3
-, librsvg
-, gtk-layer-shell
-, stdenv
-}:
-
-rustPlatform.buildRustPackage rec {
-  pname = "eww";
-  version = "0.5.0";
-
-  src = fetchFromGitHub {
-    owner = "elkowar";
-    repo = "eww";
-    rev = "v${version}";
-    hash = "sha256-HBBz1NDtj2TnDK5ghDLRrAOwHXDZlzclvVscYnmKGck=";
-  };
-
-  cargoHash = "sha256-IirFE714NZmppLjwbWk6fxcmRXCUFzB4oxOxBvmYu5U=";
-
-  nativeBuildInputs = [ pkg-config wrapGAppsHook ];
-
-  buildInputs = [ gtk3 librsvg gtk-layer-shell ];
-
-  cargoBuildFlags = [ "--bin" "eww" ];
-
-  cargoTestFlags = cargoBuildFlags;
-
-  # requires unstable rust features
-  RUSTC_BOOTSTRAP = 1;
-
-  meta = with lib; {
-    description = "ElKowars wacky widgets";
-    homepage = "https://github.com/elkowar/eww";
-    license = licenses.mit;
-    maintainers = with maintainers; [ figsoda lom coffeeispower ];
-    mainProgram = "eww";
-    broken = stdenv.isDarwin;
-  };
-}
diff --git a/pkgs/applications/window-managers/fvwm/2.6.nix b/pkgs/applications/window-managers/fvwm/2.6.nix
deleted file mode 100644
index e771a170c4894..0000000000000
--- a/pkgs/applications/window-managers/fvwm/2.6.nix
+++ /dev/null
@@ -1,82 +0,0 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, autoreconfHook
-, cairo
-, fontconfig
-, freetype
-, fribidi
-, libXcursor
-, libXft
-, libXinerama
-, libXpm
-, libXt
-, libpng
-, librsvg
-, libstroke
-, libxslt
-, perl
-, pkg-config
-, python3Packages
-, readline
-, enableGestures ? false
-}:
-
-stdenv.mkDerivation rec {
-  pname = "fvwm";
-  version = "2.7.0";
-
-  src = fetchFromGitHub {
-    owner = "fvwmorg";
-    repo = pname;
-    rev = version;
-    hash = "sha256-KcuX8las1n8UUE/BOHj7WOeZjva5hxgpFHtATMUk3bg=";
-  };
-
-  nativeBuildInputs = [
-    autoreconfHook
-    pkg-config
-    python3Packages.wrapPython
-  ];
-
-  buildInputs = [
-    cairo
-    fontconfig
-    freetype
-    fribidi
-    libXcursor
-    libXft
-    libXinerama
-    libXpm
-    libXt
-    libpng
-    librsvg
-    libxslt
-    perl
-    python3Packages.python
-    readline
-  ] ++ lib.optional enableGestures libstroke;
-
-  pythonPath = [
-    python3Packages.pyxdg
-  ];
-
-  configureFlags = [
-    "--enable-mandoc"
-    "--disable-htmldoc"
-  ];
-
-  postFixup = ''
-    wrapPythonPrograms
-  '';
-
-  enableParallelBuilding = true;
-
-  meta = with lib; {
-    homepage = "http://fvwm.org";
-    description = "A multiple large virtual desktop window manager";
-    license = licenses.gpl2Plus;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ edanaher ];
-  };
-}
diff --git a/pkgs/applications/window-managers/fvwm/3.nix b/pkgs/applications/window-managers/fvwm/3.nix
deleted file mode 100644
index 31d29af44d80a..0000000000000
--- a/pkgs/applications/window-managers/fvwm/3.nix
+++ /dev/null
@@ -1,97 +0,0 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, asciidoctor
-, autoreconfHook
-, cairo
-, fontconfig
-, freetype
-, fribidi
-, libSM
-, libX11
-, libXcursor
-, libXft
-, libXi
-, libXinerama
-, libXpm
-, libXrandr
-, libXt
-, libevent
-, libintl
-, libpng
-, librsvg
-, libstroke
-, libxslt
-, perl
-, pkg-config
-, python3Packages
-, readline
-, sharutils
-}:
-
-stdenv.mkDerivation (finalAttrs: {
-  pname = "fvwm3";
-  version = "1.0.9";
-
-  src = fetchFromGitHub {
-    owner = "fvwmorg";
-    repo = "fvwm3";
-    rev = finalAttrs.version;
-    hash = "sha256-SjAccEAQsrzfVCtesqULONmb9TLD5IF8uIwEX3UhrxU=";
-  };
-
-  nativeBuildInputs = [
-    autoreconfHook
-    asciidoctor
-    pkg-config
-    python3Packages.wrapPython
-  ];
-
-  buildInputs = [
-    cairo
-    fontconfig
-    freetype
-    fribidi
-    libSM
-    libX11
-    libXcursor
-    libXft
-    libXi
-    libXinerama
-    libXpm
-    libXrandr
-    libXt
-    libevent
-    libintl
-    libpng
-    librsvg
-    libstroke
-    libxslt
-    perl
-    python3Packages.python
-    readline
-    sharutils
-  ];
-
-  pythonPath = [
-    python3Packages.pyxdg
-  ];
-
-  configureFlags = [
-    "--enable-mandoc"
-  ];
-
-  postFixup = ''
-    wrapPythonPrograms
-  '';
-
-  enableParallelBuilding = true;
-
-  meta = with lib; {
-    homepage = "http://fvwm.org";
-    description = "A multiple large virtual desktop window manager - Version 3";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ AndersonTorres ];
-    inherit (libX11.meta) platforms;
-  };
-})
diff --git a/pkgs/applications/window-managers/gamescope/default.nix b/pkgs/applications/window-managers/gamescope/default.nix
deleted file mode 100644
index a0dd62ab94941..0000000000000
--- a/pkgs/applications/window-managers/gamescope/default.nix
+++ /dev/null
@@ -1,147 +0,0 @@
-{ stdenv
-, fetchFromGitHub
-, meson
-, pkg-config
-, ninja
-, xorg
-, libdrm
-, vulkan-loader
-, vulkan-headers
-, wayland
-, wayland-protocols
-, libxkbcommon
-, glm
-, gbenchmark
-, libcap
-, libavif
-, SDL2
-, pipewire
-, pixman
-, libinput
-, glslang
-, hwdata
-, openvr
-, stb
-, wlroots
-, libliftoff
-, libdisplay-info
-, lib
-, makeBinaryWrapper
-, nix-update-script
-, enableExecutable ? true
-, enableWsi ? true
-}:
-let
-  joshShaders = fetchFromGitHub {
-    owner = "Joshua-Ashton";
-    repo = "GamescopeShaders";
-    rev = "v0.1";
-    hash = "sha256-gR1AeAHV/Kn4ntiEDUSPxASLMFusV6hgSGrTbMCBUZA=";
-  };
-in
-stdenv.mkDerivation (finalAttrs: {
-  pname = "gamescope";
-  version = "3.14.2";
-
-  src = fetchFromGitHub {
-    owner = "ValveSoftware";
-    repo = "gamescope";
-    rev = "refs/tags/${finalAttrs.version}";
-    fetchSubmodules = true;
-    hash = "sha256-Ym1kl9naAm1MGlxCk32ssvfiOlstHiZPy7Ga8EZegus=";
-  };
-
-  patches = [
-    # Unvendor dependencies
-    ./use-pkgconfig.patch
-
-    # Make it look for shaders in the right place
-    ./shaders-path.patch
-  ];
-
-  # We can't substitute the patch itself because substituteAll is itself a derivation,
-  # so `placeholder "out"` ends up pointing to the wrong place
-  postPatch = ''
-    substituteInPlace src/reshade_effect_manager.cpp --replace "@out@" "$out"
-  '';
-
-  mesonFlags = [
-    (lib.mesonBool "enable_gamescope" enableExecutable)
-    (lib.mesonBool "enable_gamescope_wsi_layer" enableWsi)
-  ];
-
-  # don't install vendored vkroots etc
-  mesonInstallFlags = ["--skip-subprojects"];
-
-  strictDeps = true;
-
-  depsBuildBuild = [
-    pkg-config
-  ];
-
-  nativeBuildInputs = [
-    meson
-    pkg-config
-    ninja
-  ] ++ lib.optionals enableExecutable [
-    makeBinaryWrapper
-    glslang
-  ];
-
-  buildInputs = [
-    pipewire
-    hwdata
-    xorg.libX11
-    wayland
-    wayland-protocols
-    vulkan-loader
-    openvr
-    glm
-  ] ++ lib.optionals enableWsi [
-    vulkan-headers
-  ] ++ lib.optionals enableExecutable [
-    xorg.libXcomposite
-    xorg.libXcursor
-    xorg.libXdamage
-    xorg.libXext
-    xorg.libXi
-    xorg.libXmu
-    xorg.libXrender
-    xorg.libXres
-    xorg.libXtst
-    xorg.libXxf86vm
-    libavif
-    libdrm
-    libliftoff
-    SDL2
-    wlroots
-    libinput
-    libxkbcommon
-    gbenchmark
-    pixman
-    libcap
-    stb
-    libdisplay-info
-  ];
-
-  postInstall = lib.optionalString enableExecutable ''
-    # --debug-layers flag expects these in the path
-    wrapProgram "$out/bin/gamescope" \
-      --prefix PATH : ${with xorg; lib.makeBinPath [xprop xwininfo]}
-
-    # Install ReShade shaders
-    mkdir -p $out/share/gamescope/reshade
-    cp -r ${joshShaders}/* $out/share/gamescope/reshade/
-  '';
-
-  passthru.updateScript = nix-update-script {};
-
-  meta = with lib; {
-    description = "SteamOS session compositing window manager";
-    homepage = "https://github.com/ValveSoftware/gamescope";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ nrdxp pedrohlc Scrumplex zhaofengli k900 ];
-    platforms = platforms.linux;
-    mainProgram = "gamescope";
-  };
-})
diff --git a/pkgs/applications/window-managers/gamescope/shaders-path.patch b/pkgs/applications/window-managers/gamescope/shaders-path.patch
deleted file mode 100644
index bbdaf21a2e6fb..0000000000000
--- a/pkgs/applications/window-managers/gamescope/shaders-path.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/src/reshade_effect_manager.cpp b/src/reshade_effect_manager.cpp
-index 3597ca1..de45250 100644
---- a/src/reshade_effect_manager.cpp
-+++ b/src/reshade_effect_manager.cpp
-@@ -34,7 +34,7 @@ static std::string GetLocalUsrDir()
-
- static std::string GetUsrDir()
- {
--    return "/usr";
-+    return "@out@";
- }
-
- static LogScope reshade_log("gamescope_reshade");
diff --git a/pkgs/applications/window-managers/gamescope/use-pkgconfig.patch b/pkgs/applications/window-managers/gamescope/use-pkgconfig.patch
deleted file mode 100644
index 2b4de54ae54df..0000000000000
--- a/pkgs/applications/window-managers/gamescope/use-pkgconfig.patch
+++ /dev/null
@@ -1,9 +0,0 @@
---- a/meson.build
-+++ b/meson.build
-@@ -6,7 +6,6 @@ project(
-   default_options: [
-     'cpp_std=c++20',
-     'warning_level=2',
--    'force_fallback_for=wlroots,libliftoff,vkroots',
-   ],
- )
diff --git a/pkgs/applications/window-managers/hackedbox/default.nix b/pkgs/applications/window-managers/hackedbox/default.nix
index f38d0d6beb9b1..45f17c0c912ed 100644
--- a/pkgs/applications/window-managers/hackedbox/default.nix
+++ b/pkgs/applications/window-managers/hackedbox/default.nix
@@ -32,6 +32,8 @@ stdenv.mkDerivation (finalAttrs: {
     pkg-config
   ];
 
+  CXXFLAGS = "-std=c++98";
+
   buildInputs = [
     freetype
     fribidi
diff --git a/pkgs/applications/window-managers/hikari/default.nix b/pkgs/applications/window-managers/hikari/default.nix
deleted file mode 100644
index 508f13f985b24..0000000000000
--- a/pkgs/applications/window-managers/hikari/default.nix
+++ /dev/null
@@ -1,64 +0,0 @@
-{ lib, stdenv, fetchzip
-, pkg-config, bmake
-, cairo, glib, libevdev, libinput, libxkbcommon, linux-pam, pango, pixman
-, libucl, wayland, wayland-protocols, wlroots, mesa
-, features ? {
-    gammacontrol = true;
-    layershell   = true;
-    screencopy   = true;
-    xwayland     = true;
-  }
-}:
-
-stdenv.mkDerivation rec {
-  pname = "hikari";
-  version = "2.3.3";
-
-  src = fetchzip {
-    url = "https://hikari.acmelabs.space/releases/${pname}-${version}.tar.gz";
-    sha256 = "sha256-5Ug0U3ESC5F/gj7bahnLYkeY/weSCj0QASwdFuWwdMI=";
-  };
-
-  nativeBuildInputs = [ pkg-config bmake ];
-
-  buildInputs = [
-    cairo
-    glib
-    libevdev
-    libinput
-    libxkbcommon
-    linux-pam
-    pango
-    pixman
-    libucl
-    mesa # for libEGL
-    wayland
-    wayland-protocols
-    wlroots
-  ];
-
-  enableParallelBuilding = true;
-
-  makeFlags = with lib; [ "PREFIX=$(out)" ]
-    ++ optional stdenv.isLinux "WITH_POSIX_C_SOURCE=YES"
-    ++ mapAttrsToList (feat: enabled:
-         optionalString enabled "WITH_${toUpper feat}=YES"
-       ) features;
-
-  postPatch = ''
-    # Can't suid in nix store
-    # Run hikari as root (it will drop privileges as early as possible), or create
-    # a systemd unit to give it the necessary permissions/capabilities.
-    substituteInPlace Makefile --replace '4555' '555'
-
-    sed -i 's@<drm_fourcc.h>@<libdrm/drm_fourcc.h>@' src/*.c
-  '';
-
-  meta = with lib; {
-    description = "Stacking Wayland compositor which is actively developed on FreeBSD but also supports Linux";
-    homepage    = "https://hikari.acmelabs.space";
-    license     = licenses.bsd2;
-    platforms   = platforms.linux ++ platforms.freebsd;
-    maintainers = with maintainers; [ jpotier ];
-  };
-}
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland/default.nix b/pkgs/applications/window-managers/hyprwm/hyprland/default.nix
index 3db57a6b8dd21..88fe9c31f0456 100644
--- a/pkgs/applications/window-managers/hyprwm/hyprland/default.nix
+++ b/pkgs/applications/window-managers/hyprwm/hyprland/default.nix
@@ -4,10 +4,12 @@
 , pkg-config
 , makeWrapper
 , meson
+, cmake
 , ninja
 , binutils
 , cairo
 , git
+, hyprcursor
 , hyprland-protocols
 , hyprlang
 , jq
@@ -20,15 +22,19 @@
 , mesa
 , pango
 , pciutils
+, python3
 , systemd
 , tomlplusplus
-, udis86
 , wayland
 , wayland-protocols
 , wayland-scanner
-, wlroots
 , xcbutilwm
 , xwayland
+, hwdata
+, seatd
+, libdisplay-info
+, libliftoff
+, xorg
 , debug ? false
 , enableXWayland ? true
 , legacyRenderer ? false
@@ -42,22 +48,18 @@
 assert lib.assertMsg (!nvidiaPatches) "The option `nvidiaPatches` has been removed.";
 assert lib.assertMsg (!enableNvidiaPatches) "The option `enableNvidiaPatches` has been removed.";
 assert lib.assertMsg (!hidpiXWayland) "The option `hidpiXWayland` has been removed. Please refer https://wiki.hyprland.org/Configuring/XWayland";
+
 stdenv.mkDerivation (finalAttrs: {
   pname = "hyprland" + lib.optionalString debug "-debug";
-  version = "0.36.0";
-
+  version = "0.39.1";
   src = fetchFromGitHub {
     owner = "hyprwm";
     repo = finalAttrs.pname;
+    fetchSubmodules = true;
     rev = "v${finalAttrs.version}";
-    hash = "sha256-oZe4k6jtO/0govmERGcbeyvE9EfTvXY5bnyIs6AsL9U=";
+    hash = "sha256-7L5rqQRYH2iyyP5g3IdXJSlATfgnKhuYMf65E48MVKw=";
   };
 
-  patches = [
-    # make meson use the provided dependencies instead of the git submodules
-    "${finalAttrs.src}/nix/patches/meson-build.patch"
-  ];
-
   postPatch = ''
     # Fix hardcoded paths to /usr installation
     sed -i "s#/usr#$out#" src/render/OpenGL.cpp
@@ -65,14 +67,19 @@ stdenv.mkDerivation (finalAttrs: {
     # Generate version.h
     cp src/version.h.in src/version.h
     substituteInPlace src/version.h \
-      --replace "@HASH@" '${finalAttrs.src.rev}' \
-      --replace "@BRANCH@" "" \
-      --replace "@MESSAGE@" "" \
-      --replace "@DATE@" "2024-02-05" \
-      --replace "@TAG@" "" \
-      --replace "@DIRTY@" ""
+      --replace-fail "@HASH@" '${finalAttrs.src.rev}' \
+      --replace-fail "@BRANCH@" "" \
+      --replace-fail "@MESSAGE@" "" \
+      --replace-fail "@DATE@" "2024-04-16" \
+      --replace-fail "@TAG@" "" \
+      --replace-fail "@DIRTY@" ""
   '';
 
+  depsBuildBuild = [
+    # to find wayland-scanner when cross-compiling
+    pkg-config
+  ];
+
   nativeBuildInputs = [
     jq
     makeWrapper
@@ -80,6 +87,8 @@ stdenv.mkDerivation (finalAttrs: {
     ninja
     pkg-config
     wayland-scanner
+    cmake # for subproject udis86
+    python3
   ];
 
   outputs = [
@@ -88,35 +97,40 @@ stdenv.mkDerivation (finalAttrs: {
     "dev"
   ];
 
-  buildInputs =
-    [
-      cairo
-      git
-      hyprland-protocols
-      hyprlang
-      libGL
-      libdrm
-      libinput
-      libxkbcommon
-      mesa
-      udis86
-      wayland
-      wayland-protocols
-      pango
-      pciutils
-      tomlplusplus
-      wlroots
-    ]
-    ++ lib.optionals stdenv.hostPlatform.isMusl [ libexecinfo ]
-    ++ lib.optionals enableXWayland [ libxcb xcbutilwm xwayland ]
-    ++ lib.optionals withSystemd [ systemd ];
+  buildInputs = [
+    cairo
+    git
+    hyprcursor
+    hyprland-protocols
+    hyprlang
+    libGL
+    libdrm
+    libinput
+    libxkbcommon
+    mesa
+    wayland
+    wayland-protocols
+    pango
+    pciutils
+    tomlplusplus
+    # for subproject wlroots-hyprland
+    hwdata
+    seatd
+    libliftoff
+    libdisplay-info
+    xorg.xcbutilerrors
+    xorg.xcbutilrenderutil
+  ]
+  ++ lib.optionals stdenv.hostPlatform.isMusl [ libexecinfo ]
+  ++ lib.optionals enableXWayland [ libxcb xcbutilwm xwayland ]
+  ++ lib.optionals withSystemd [ systemd ];
 
   mesonBuildType =
     if debug
     then "debug"
     else "release";
 
-  mesonAutoFeatures = "disabled";
+  mesonAutoFeatures = "enabled";
 
   mesonFlags = [
     (lib.mesonEnable "xwayland" enableXWayland)
@@ -125,7 +139,6 @@ stdenv.mkDerivation (finalAttrs: {
   ];
 
   postInstall = ''
-    ln -s ${wlroots}/include/wlr $dev/include/hyprland/wlroots
     ${lib.optionalString wrapRuntimeDeps ''
       wrapProgram $out/bin/Hyprland \
         --suffix PATH : ${lib.makeBinPath [binutils pciutils stdenv.cc]}
@@ -135,11 +148,11 @@ stdenv.mkDerivation (finalAttrs: {
   passthru.providedSessions = [ "hyprland" ];
 
   meta = with lib; {
-    homepage = "https://github.com/vaxerski/Hyprland";
+    homepage = "https://github.com/hyprwm/Hyprland";
     description = "A dynamic tiling Wayland compositor that doesn't sacrifice on its looks";
     license = licenses.bsd3;
     maintainers = with maintainers; [ wozeparrot fufexan ];
     mainProgram = "Hyprland";
-    platforms = wlroots.meta.platforms;
+    platforms = lib.platforms.linux;
   };
 })
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland/plugins.nix b/pkgs/applications/window-managers/hyprwm/hyprland/plugins.nix
index 1aef74294bd5f..76754dd5f0d8a 100644
--- a/pkgs/applications/window-managers/hyprwm/hyprland/plugins.nix
+++ b/pkgs/applications/window-managers/hyprwm/hyprland/plugins.nix
@@ -22,15 +22,15 @@ let
 
   plugins = {
     hy3 = { fetchFromGitHub, cmake, hyprland }:
-      mkHyprlandPlugin hyprland rec {
+      mkHyprlandPlugin hyprland {
         pluginName = "hy3";
-        version = "0.36.0";
+        version = "0.39.1";
 
         src = fetchFromGitHub {
           owner = "outfoxxed";
           repo = "hy3";
-          rev = "hl${version}";
-          hash = "sha256-nRBeHh0Vr0gB3BHiqP9ZE4/yyZvRt8jJHwBF5lFu/24=";
+          rev = "hl0.39.1";
+          hash = "sha256-PqVld+oFziSt7VZTNBomPyboaMEAIkerPQFwNJL/Wjw=";
         };
 
         nativeBuildInputs = [ cmake ];
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland/udis86.nix b/pkgs/applications/window-managers/hyprwm/hyprland/udis86.nix
deleted file mode 100644
index b72083c4560a1..0000000000000
--- a/pkgs/applications/window-managers/hyprwm/hyprland/udis86.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{ udis86
-, fetchFromGitHub
-}:
-udis86.overrideAttrs (old: {
-  version = "unstable-2022-10-13";
-
-  src = fetchFromGitHub {
-    owner = "canihavesomecoffee";
-    repo = "udis86";
-    rev = "5336633af70f3917760a6d441ff02d93477b0c86";
-    hash = "sha256-HifdUQPGsKQKQprByeIznvRLONdOXeolOsU5nkwIv3g=";
-  };
-
-  patches = [ ];
-})
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland/wlroots.nix b/pkgs/applications/window-managers/hyprwm/hyprland/wlroots.nix
deleted file mode 100644
index 5c42eff6fc8c6..0000000000000
--- a/pkgs/applications/window-managers/hyprwm/hyprland/wlroots.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ fetchFromGitLab
-, wlroots
-}:
-wlroots.overrideAttrs
-  (old: {
-    version = "0.18.0-dev";
-
-    src = fetchFromGitLab {
-      domain = "gitlab.freedesktop.org";
-      owner = "wlroots";
-      repo = "wlroots";
-      rev = "0cb091f1a2d345f37d2ee445f4ffd04f7f4ec9e5";
-      hash = "sha256-Mz6hCtommq7RQfcPnxLINigO4RYSNt23HeJHC6mVmWI=";
-    };
-
-    patches = [ ]; # don't inherit old.patches
-
-    pname = "${old.pname}-hyprland";
-  })
diff --git a/pkgs/applications/window-managers/hyprwm/hyprshade/default.nix b/pkgs/applications/window-managers/hyprwm/hyprshade/default.nix
index 229f53ed3de8f..0393c6eddd3ba 100644
--- a/pkgs/applications/window-managers/hyprwm/hyprshade/default.nix
+++ b/pkgs/applications/window-managers/hyprwm/hyprshade/default.nix
@@ -4,6 +4,8 @@
 , hatchling
 , more-itertools
 , click
+, hyprland
+, makeWrapper
 }:
 
 buildPythonPackage rec {
@@ -20,10 +22,17 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     hatchling
+    makeWrapper
   ];
 
   propagatedBuildInputs = [ more-itertools click ];
 
+  postFixup = ''
+    wrapProgram $out/bin/hyprshade \
+      --set HYPRSHADE_SHADERS_DIR $out/share/hyprshade/shaders \
+      --prefix PATH : ${lib.makeBinPath [ hyprland ]}
+  '';
+
   meta = with lib; {
     homepage = "https://github.com/loqusion/hyprshade";
     description = "Hyprland shade configuration tool";
diff --git a/pkgs/applications/window-managers/i3/status-rust.nix b/pkgs/applications/window-managers/i3/status-rust.nix
index 74635d1588298..b9ced38b5fe4c 100644
--- a/pkgs/applications/window-managers/i3/status-rust.nix
+++ b/pkgs/applications/window-managers/i3/status-rust.nix
@@ -16,16 +16,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "i3status-rust";
-  version = "0.33.0";
+  version = "0.33.1";
 
   src = fetchFromGitHub {
     owner = "greshake";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-DIEWmXqs4yNIJsBBhH7khOY6RJQ9qRoSTIHN/aeBuA4=";
+    hash = "sha256-9lzzjb6tDfgqjAT9mS/cWfC6ucNXoJ8JJwtZ0FZqlDA=";
   };
 
-  cargoHash = "sha256-5946aMSndBkXCY0jjnhPc5x9wFOC1zjJNkFkMFFOuxo=";
+  cargoHash = "sha256-yeijJl94v+yKMVnU/Fjzapab/nExlvoznrx8Ydz/RvM=";
 
   nativeBuildInputs = [ pkg-config makeWrapper ];
 
diff --git a/pkgs/applications/window-managers/jay/default.nix b/pkgs/applications/window-managers/jay/default.nix
index 6718caf1ada23..97be1c5fe2931 100644
--- a/pkgs/applications/window-managers/jay/default.nix
+++ b/pkgs/applications/window-managers/jay/default.nix
@@ -7,20 +7,30 @@
 , mesa
 , pango
 , udev
+, shaderc
+, libglvnd
+, vulkan-loader
+, autoPatchelfHook
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "jay";
-  version = "unstable-2022-11-20";
+  version = "1.2.0";
 
   src = fetchFromGitHub {
     owner = "mahkoh";
     repo = pname;
-    rev = "09b4668a5363a6e93dfb8ba35b244835f4edb0f2";
-    sha256 = "sha256-0IIzXY7AFTGEe0TzJVKOtTPUZee0Wz40yKgEWLeIYJw=";
+    rev = "v${version}";
+    sha256 = "sha256-cfX9KcXbBRIaYrR7c+aIQrg+mvLJIM1sEzJ0J7wshMU=";
   };
 
-  cargoSha256 = "sha256-zSq6YBlm6gJXGlF9xZ8gWSTMewdNqrJzwP58a0x8QIU=";
+  cargoHash = "sha256-htAXhjCBOb8qTAAKdFqTaTSefJJTFlvEBYveOokyWjs=";
+
+  SHADERC_LIB_DIR = "${lib.getLib shaderc}/lib";
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+  ];
 
   buildInputs = [
     libGL
@@ -29,9 +39,18 @@ rustPlatform.buildRustPackage rec {
     pango
     udev
     libinput
+    shaderc
+  ];
+
+  runtimeDependencies = [
+    libglvnd
+    vulkan-loader
   ];
 
-  RUSTC_BOOTSTRAP = 1;
+  postInstall = ''
+    install -D etc/jay.portal $out/usr/share/xdg-desktop-portal/portals/jay.portal
+    install -D etc/jay-portals.conf $out/usr/share/xdg-desktop-portal/jay-portals.conf
+  '';
 
   meta = with lib; {
     description = "A Wayland compositor written in Rust";
diff --git a/pkgs/applications/window-managers/miriway/default.nix b/pkgs/applications/window-managers/miriway/default.nix
index 4c73135c54a46..b56127cc2948e 100644
--- a/pkgs/applications/window-managers/miriway/default.nix
+++ b/pkgs/applications/window-managers/miriway/default.nix
@@ -11,13 +11,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "miriway";
-  version = "unstable-2024-03-15";
+  version = "0-unstable-2024-04-30";
 
   src = fetchFromGitHub {
     owner = "Miriway";
     repo = "Miriway";
-    rev = "dcc44916d0b25dd06d792947c837cf4cd8c24925";
-    hash = "sha256-LnqhIVmC5F+FAIcYW+oT4t2ovRWeoV4zHpvbNhiY7Kw=";
+    rev = "726ef446c89a75510311638a4892e97ad9e0fa4e";
+    hash = "sha256-7OoCoZ4IHXYI73W93P9MzVGYFv/+MDcbbhPdJY9lD2M=";
   };
 
   strictDeps = true;
diff --git a/pkgs/applications/window-managers/phosh/default.nix b/pkgs/applications/window-managers/phosh/default.nix
index 3cdc2ee41db8a..853ceb8a083b9 100644
--- a/pkgs/applications/window-managers/phosh/default.nix
+++ b/pkgs/applications/window-managers/phosh/default.nix
@@ -36,12 +36,12 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "phosh";
-  version = "0.37.0";
+  version = "0.37.1";
 
   src = fetchurl {
     # Release tarball which includes subprojects gvc and libcall-ui
     url = with finalAttrs; "https://sources.phosh.mobi/releases/${pname}/${pname}-${version}.tar.xz";
-    hash = "sha256-kmZX2pPOYSh2hiMrRLH6744Q8rHHhE9jmG+SksepUYk=";
+    hash = "sha256-74H4GLFIIs97iVE8IWPxS9hALkBGkcKmrMe6/uxtPuM=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/window-managers/phosh/phosh-mobile-settings.nix b/pkgs/applications/window-managers/phosh/phosh-mobile-settings.nix
index 8e85597cc7d39..0635d7a5e407e 100644
--- a/pkgs/applications/window-managers/phosh/phosh-mobile-settings.nix
+++ b/pkgs/applications/window-managers/phosh/phosh-mobile-settings.nix
@@ -1,11 +1,12 @@
 { lib
 , stdenv
 , fetchurl
+, nixosTests
 , directoryListingUpdater
 , meson
 , ninja
 , pkg-config
-, wrapGAppsHook
+, wrapGAppsHook4
 , desktop-file-utils
 , feedbackd
 , gtk4
@@ -20,12 +21,12 @@
 
 stdenv.mkDerivation rec {
   pname = "phosh-mobile-settings";
-  version = "0.37.0";
+  version = "0.38.0";
 
   src = fetchurl {
     # This tarball includes the meson wrapped subproject 'gmobile'.
     url = "https://sources.phosh.mobi/releases/${pname}/${pname}-${version}.tar.xz";
-    hash = "sha256-HW3wM/lb8pvr+eDoeqa0iHXiKhBQ8ybBIy0wwHPsrOg=";
+    hash = "sha256-WDqgVsJx5y6IlWII9fRBsAeWn/tB8BaXRtlPvA0wmMk=";
   };
 
   nativeBuildInputs = [
@@ -33,7 +34,7 @@ stdenv.mkDerivation rec {
     ninja
     phosh
     pkg-config
-    wrapGAppsHook
+    wrapGAppsHook4
   ];
 
   buildInputs = [
@@ -59,7 +60,10 @@ stdenv.mkDerivation rec {
     ln -s '${phosh}/lib/phosh' "$out/lib/phosh"
   '';
 
-  passthru.updateScript = directoryListingUpdater { };
+  passthru = {
+    tests.phosh = nixosTests.phosh;
+    updateScript = directoryListingUpdater { };
+  };
 
   meta = with lib; {
     description = "A settings app for mobile specific things";
diff --git a/pkgs/applications/window-managers/river/default.nix b/pkgs/applications/window-managers/river/default.nix
index 4c59222d31bb5..3d3008692922b 100644
--- a/pkgs/applications/window-managers/river/default.nix
+++ b/pkgs/applications/window-managers/river/default.nix
@@ -1,6 +1,6 @@
 { lib
 , stdenv
-, fetchFromGitHub
+, fetchFromGitea
 , libGL
 , libX11
 , libevdev
@@ -12,7 +12,7 @@
 , udev
 , wayland
 , wayland-protocols
-, wlroots_0_16
+, wlroots_0_17
 , xwayland
 , zig_0_11
 , withManpages ? true
@@ -21,16 +21,17 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "river";
-  version = "0.2.6";
+  version = "0.3.0";
 
   outputs = [ "out" ] ++ lib.optionals withManpages [ "man" ];
 
-  src = fetchFromGitHub {
-    owner = "riverwm";
+  src = fetchFromGitea {
+    domain = "codeberg.org";
+    owner = "river";
     repo = "river";
     rev = "refs/tags/v${finalAttrs.version}";
     fetchSubmodules = true;
-    hash = "sha256-JPb8l5ANxYCqinWNoQK5PAyn4CaiSj0e9mAhZwd9HOw=";
+    hash = "sha256-6LZuWx0sC6bW0K7D0PR8hJlVW6i6NIzOOORdMu3Gk5U=";
   };
 
   nativeBuildInputs = [
@@ -49,7 +50,7 @@ stdenv.mkDerivation (finalAttrs: {
     pixman
     udev
     wayland-protocols
-    wlroots_0_16
+    wlroots_0_17
   ] ++ lib.optional xwaylandSupport libX11;
 
   dontConfigure = true;
@@ -64,7 +65,7 @@ stdenv.mkDerivation (finalAttrs: {
   passthru.providedSessions = [ "river" ];
 
   meta = {
-    homepage = "https://github.com/ifreund/river";
+    homepage = "https://codeberg.org/river/river";
     description = "A dynamic tiling wayland compositor";
     longDescription = ''
       River is a dynamic tiling Wayland compositor with flexible runtime
@@ -79,7 +80,7 @@ stdenv.mkDerivation (finalAttrs: {
       - Scriptable configuration and control through a custom Wayland protocol
         and separate riverctl binary implementing it.
     '';
-    changelog = "https://github.com/ifreund/river/releases/tag/v${finalAttrs.version}";
+    changelog = "https://codeberg.org/river/river/releases/tag/v${finalAttrs.version}";
     license = lib.licenses.gpl3Plus;
     maintainers = with lib.maintainers; [
       adamcstephens
diff --git a/pkgs/applications/window-managers/sommelier/default.nix b/pkgs/applications/window-managers/sommelier/default.nix
index 12c2e5da1b984..6c3a04915fe6a 100644
--- a/pkgs/applications/window-managers/sommelier/default.nix
+++ b/pkgs/applications/window-managers/sommelier/default.nix
@@ -1,21 +1,28 @@
-{ lib, stdenv, fetchzip, meson, ninja, pkg-config, wayland-scanner
+{ lib, stdenv, fetchzip
+, meson, ninja, pkg-config, python3, python3Packages, wayland-scanner
 , libxkbcommon, mesa, pixman, xorg, wayland, gtest
 }:
 
 stdenv.mkDerivation {
   pname = "sommelier";
-  version = "104.0";
+  version = "124.0";
 
   src = fetchzip rec {
     url = "https://chromium.googlesource.com/chromiumos/platform2/+archive/${passthru.rev}/vm_tools/sommelier.tar.gz";
-    passthru.rev = "af5434fd9903936a534e1316cbd22361e67949ec";
+    passthru.rev = "0ced021a6b362f35592cca5a3915d0ed784615f2";
     stripRoot = false;
-    sha256 = "LungQqHQorHIKpye2SDBLuMHPt45C1cPYcs9o5Hc3cw=";
+    sha256 = "zSiGhF4FhLUavC7YEOGGq4NE2hxK4YNXF3CpLptoZbM=";
   };
 
-  nativeBuildInputs = [ meson ninja pkg-config wayland-scanner ];
+  nativeBuildInputs = [
+    meson ninja pkg-config python3 python3Packages.jinja2 wayland-scanner
+  ];
   buildInputs = [ libxkbcommon mesa pixman wayland xorg.libxcb ];
 
+  preConfigure = ''
+    patchShebangs gen-shim.py
+  '';
+
   doCheck = true;
   nativeCheckInputs = [ gtest ];
 
diff --git a/pkgs/applications/window-managers/tabbed/default.nix b/pkgs/applications/window-managers/tabbed/default.nix
index ef0fd7efdc395..068d5c2f82edb 100644
--- a/pkgs/applications/window-managers/tabbed/default.nix
+++ b/pkgs/applications/window-managers/tabbed/default.nix
@@ -2,12 +2,12 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "tabbed";
-  version = "0.7";
+  version = "0.8";
 
   src = fetchgit {
     url = "https://git.suckless.org/tabbed";
     rev = finalAttrs.version;
-    hash = "sha256-Y1MgPwqMUoa2Rr4HmqjtPaQegUmQJWYkcbyFcJHAOBI=";
+    hash = "sha256-KpMWBnnoF4AGRKrG30NQsVt0CFfJXVdlXLLag0Dq0sU=";
   };
 
   inherit patches;
diff --git a/pkgs/applications/window-managers/wayfire/default.nix b/pkgs/applications/window-managers/wayfire/default.nix
index c633b19abc709..e6ed87ffabd32 100644
--- a/pkgs/applications/window-managers/wayfire/default.nix
+++ b/pkgs/applications/window-managers/wayfire/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , fetchFromGitHub
+, nixosTests
 , cmake
 , meson
 , ninja
@@ -26,14 +27,14 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "wayfire";
-  version = "0.8.0";
+  version = "0.8.1";
 
   src = fetchFromGitHub {
     owner = "WayfireWM";
     repo = "wayfire";
     rev = "v${finalAttrs.version}";
     fetchSubmodules = true;
-    hash = "sha256-YI8N1rY71b2ulv7tAdah7sibG4qq3kY0/hyS0cls5to=";
+    hash = "sha256-OPGzPy0I6i3TvmA5KSWDb4Lsf66zM5X+Akckgs3wk2o=";
   };
 
   nativeBuildInputs = [
@@ -44,7 +45,6 @@ stdenv.mkDerivation (finalAttrs: {
   ];
 
   buildInputs = [
-    wf-config
     libGL
     libdrm
     libexecinfo
@@ -54,14 +54,15 @@ stdenv.mkDerivation (finalAttrs: {
     libxkbcommon
     wayland-protocols
     xorg.xcbutilwm
-    wayland
-    cairo
-    pango
     nlohmann_json
   ];
 
   propagatedBuildInputs = [
+    wf-config
     wlroots
+    wayland
+    cairo
+    pango
   ];
 
   nativeCheckInputs = [
@@ -83,6 +84,8 @@ stdenv.mkDerivation (finalAttrs: {
 
   passthru.providedSessions = [ "wayfire" ];
 
+  passthru.tests.mate = nixosTests.mate-wayland;
+
   meta = {
     homepage = "https://wayfire.org/";
     description = "3D Wayland compositor";
diff --git a/pkgs/applications/window-managers/wayfire/firedecor.nix b/pkgs/applications/window-managers/wayfire/firedecor.nix
index ce42f6fc68866..6fbe4b5575bba 100644
--- a/pkgs/applications/window-managers/wayfire/firedecor.nix
+++ b/pkgs/applications/window-managers/wayfire/firedecor.nix
@@ -5,17 +5,13 @@
 , ninja
 , pkg-config
 , boost
-, cairo
 , glib
 , libGL
 , libinput
 , librsvg
 , libxkbcommon
-, pango
 , udev
 , wayfire
-, wayland
-, wf-config
 , xcbutilwm
 , mate
 }:
@@ -39,17 +35,13 @@ stdenv.mkDerivation (finalAttrs: {
 
   buildInputs = [
     boost
-    cairo
     glib
     libGL
     libinput
     librsvg
     libxkbcommon
-    pango
     udev
     wayfire
-    wayland
-    wf-config
     xcbutilwm
   ];
 
diff --git a/pkgs/applications/window-managers/wayfire/focus-request.nix b/pkgs/applications/window-managers/wayfire/focus-request.nix
new file mode 100644
index 0000000000000..41d5314172504
--- /dev/null
+++ b/pkgs/applications/window-managers/wayfire/focus-request.nix
@@ -0,0 +1,58 @@
+{ stdenv
+, lib
+, fetchFromGitLab
+, meson
+, ninja
+, pkg-config
+, wayfire
+, wf-config
+, wayland
+, pango
+, libinput
+, libxkbcommon
+, librsvg
+, libGL
+, xcbutilwm
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "focus-request";
+  version = "0.8.0.2";
+
+  src = fetchFromGitLab {
+    owner = "wayfireplugins";
+    repo = "focus-request";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-kUYvLC28IPrvnMT/wKFRlOVkc2ohF3k0T/Qrm/zVkpE=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+  ];
+
+  buildInputs = [
+    wayfire
+    wf-config
+    wayland
+    pango
+    libinput
+    libxkbcommon
+    librsvg
+    libGL
+    xcbutilwm
+  ];
+
+  env = {
+    PKG_CONFIG_WAYFIRE_METADATADIR = "${placeholder "out"}/share/wayfire/metadata";
+  };
+
+  meta = {
+    homepage = "https://gitlab.com/wayfireplugins/focus-request";
+    description = "The wayfire plugin provides a mechanism to grant focus to views that make a focus self-request";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ rewine ];
+    inherit (wayfire.meta) platforms;
+  };
+})
diff --git a/pkgs/applications/window-managers/wayfire/plugins.nix b/pkgs/applications/window-managers/wayfire/plugins.nix
index b8af85aafd0da..e6663b477f711 100644
--- a/pkgs/applications/window-managers/wayfire/plugins.nix
+++ b/pkgs/applications/window-managers/wayfire/plugins.nix
@@ -5,9 +5,12 @@ lib.makeScope pkgs.newScope (self:
     inherit (self) callPackage;
   in {
     firedecor = callPackage ./firedecor.nix { };
+    focus-request = callPackage ./focus-request.nix { };
     wayfire-plugins-extra = callPackage ./wayfire-plugins-extra.nix { };
+    wayfire-shadows = callPackage ./wayfire-shadows.nix { };
     wcm = callPackage ./wcm.nix { };
     wf-shell = callPackage ./wf-shell.nix { };
     windecor = callPackage ./windecor.nix { };
+    wwp-switcher = callPackage ./wwp-switcher.nix { };
   }
 )
diff --git a/pkgs/applications/window-managers/wayfire/wayfire-plugins-extra.nix b/pkgs/applications/window-managers/wayfire/wayfire-plugins-extra.nix
index 9652664443691..62496c9f86004 100644
--- a/pkgs/applications/window-managers/wayfire/wayfire-plugins-extra.nix
+++ b/pkgs/applications/window-managers/wayfire/wayfire-plugins-extra.nix
@@ -1,45 +1,31 @@
 { stdenv
 , lib
 , fetchFromGitHub
-, fetchpatch
 , meson
 , ninja
 , pkg-config
 , wayfire
 , wf-config
-, gtkmm3
-, gtk-layer-shell
 , libevdev
 , libinput
 , libxkbcommon
+, nlohmann_json
 , xcbutilwm
+, gtkmm3
+, gtk-layer-shell
 }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "wayfire-plugins-extra";
-  version = "0.8.0";
+  version = "0.8.1";
 
   src = fetchFromGitHub {
     owner = "WayfireWM";
     repo = "wayfire-plugins-extra";
     rev = "v${finalAttrs.version}";
-    fetchSubmodules = true;
-    hash = "sha256-OVyP1AgZ1d9DXFkbHnROwtSQIquEX5ccVIkcmCdDZtA=";
+    hash = "sha256-MF4tDzIZnnTXH2ZUxltIw1RP3pfRQFGrc/n9H47yW0g";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "check-dependency-libevdev.patch";
-      url = "https://github.com/WayfireWM/wayfire-plugins-extra/commit/f3bbf1fcbafd28016e36be7a5043bd82574ac9e4.patch";
-      hash = "sha256-8X1lpf8H8NuA845cIslahKDQKW/IA/KiMExU4Snk72o=";
-    })
-  ];
-
-  postPatch = ''
-    substituteInPlace metadata/meson.build \
-      --replace "wayfire.get_variable(pkgconfig: 'metadatadir')" "join_paths(get_option('prefix'), 'share/wayfire/metadata')"
-  '';
-
   nativeBuildInputs = [
     meson
     ninja
@@ -52,12 +38,22 @@ stdenv.mkDerivation (finalAttrs: {
     libevdev
     libinput
     libxkbcommon
+    nlohmann_json
     xcbutilwm
     gtkmm3
     gtk-layer-shell
   ];
 
-  mesonFlags = [ "--sysconfdir /etc" ];
+  mesonFlags = [
+    # plugins in submodule, packaged individually
+    (lib.mesonBool "enable_windecor" false)
+    (lib.mesonBool "enable_wayfire_shadows" false)
+    (lib.mesonBool "enable_focus_request" false)
+  ];
+
+  env = {
+    PKG_CONFIG_WAYFIRE_METADATADIR = "${placeholder "out"}/share/wayfire/metadata";
+  };
 
   meta = {
     homepage = "https://github.com/WayfireWM/wayfire-plugins-extra";
diff --git a/pkgs/applications/window-managers/wayfire/wayfire-shadows.nix b/pkgs/applications/window-managers/wayfire/wayfire-shadows.nix
new file mode 100644
index 0000000000000..fd91d78285dfe
--- /dev/null
+++ b/pkgs/applications/window-managers/wayfire/wayfire-shadows.nix
@@ -0,0 +1,49 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, unstableGitUpdater
+, meson
+, ninja
+, pkg-config
+, wayfire
+, libxkbcommon
+, libGL
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "wayfire-shadows";
+  version = "unstable-2024-03-28";
+
+  src = fetchFromGitHub {
+    owner = "timgott";
+    repo = "wayfire-shadows";
+    rev = "81699f6e4be65dcf3f7ad5155dfb4247b37b7997";
+    hash = "sha256-H9pqpHoeDfNBrtVLax57CUXVhU2XT+syAUZTYSJizxw=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+  ];
+
+  buildInputs = [
+    wayfire
+    libxkbcommon
+    libGL
+  ];
+
+  env = {
+    PKG_CONFIG_WAYFIRE_METADATADIR = "${placeholder "out"}/share/wayfire/metadata";
+  };
+
+  passthru.updateScript = unstableGitUpdater { };
+
+  meta = {
+    homepage = "https://github.com/timgott/wayfire-shadows";
+    description = "Wayfire plugin that adds window shadows";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ rewine ];
+    inherit (wayfire.meta) platforms;
+  };
+})
diff --git a/pkgs/applications/window-managers/wayfire/wcm.nix b/pkgs/applications/window-managers/wayfire/wcm.nix
index 1acd161e6211b..df1b1cfea9b83 100644
--- a/pkgs/applications/window-managers/wayfire/wcm.nix
+++ b/pkgs/applications/window-managers/wayfire/wcm.nix
@@ -4,11 +4,9 @@
 , meson
 , ninja
 , pkg-config
-, wayland
-, wrapGAppsHook
+, wrapGAppsHook3
 , wayfire
 , wf-shell
-, wf-config
 , wayland-scanner
 , wayland-protocols
 , gtk3
@@ -35,14 +33,12 @@ stdenv.mkDerivation (finalAttrs: {
     ninja
     pkg-config
     wayland-scanner
-    wrapGAppsHook
+    wrapGAppsHook3
   ];
 
   buildInputs = [
     wayfire
-    wf-config
     wf-shell
-    wayland
     wayland-protocols
     gtk3
     gtkmm3
diff --git a/pkgs/applications/window-managers/wayfire/wf-shell.nix b/pkgs/applications/window-managers/wayfire/wf-shell.nix
index b71e667b31ada..348ef56be5d89 100644
--- a/pkgs/applications/window-managers/wayfire/wf-shell.nix
+++ b/pkgs/applications/window-managers/wayfire/wf-shell.nix
@@ -6,7 +6,6 @@
 , pkg-config
 , wayland-scanner
 , wayfire
-, wf-config
 , alsa-lib
 , gtkmm3
 , gtk-layer-shell
@@ -35,7 +34,6 @@ stdenv.mkDerivation (finalAttrs: {
 
   buildInputs = [
     wayfire
-    wf-config
     alsa-lib
     gtkmm3
     gtk-layer-shell
diff --git a/pkgs/applications/window-managers/wayfire/windecor.nix b/pkgs/applications/window-managers/wayfire/windecor.nix
index d3643aa180954..29c95ff1a91de 100644
--- a/pkgs/applications/window-managers/wayfire/windecor.nix
+++ b/pkgs/applications/window-managers/wayfire/windecor.nix
@@ -5,9 +5,6 @@
 , ninja
 , pkg-config
 , wayfire
-, wf-config
-, wayland
-, pango
 , eudev
 , libinput
 , libxkbcommon
@@ -40,9 +37,6 @@ stdenv.mkDerivation (finalAttrs: {
 
   buildInputs = [
     wayfire
-    wf-config
-    wayland
-    pango
     eudev
     libinput
     libxkbcommon
diff --git a/pkgs/applications/window-managers/wayfire/wwp-switcher.nix b/pkgs/applications/window-managers/wayfire/wwp-switcher.nix
new file mode 100644
index 0000000000000..9ca4718e17096
--- /dev/null
+++ b/pkgs/applications/window-managers/wayfire/wwp-switcher.nix
@@ -0,0 +1,57 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, unstableGitUpdater
+, meson
+, ninja
+, pkg-config
+, wayfire
+, libxkbcommon
+, libGL
+, libinput
+, gtk3
+, glibmm
+, xcbutilwm
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "wwp-switcher";
+  version = "unstable-2023-09-09";
+
+  src = fetchFromGitHub {
+    owner = "wb9688";
+    repo = "wwp-switcher";
+    rev = "04711a0db133a899f507a86e81897296b793b4f3";
+    hash = "sha256-qMyEhSZJNxAoaELKI2h1v59QJnKJzFa76Q4/WtZqpIU";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+  ];
+
+  buildInputs = [
+    wayfire
+    libxkbcommon
+    libGL
+    libinput
+    gtk3
+    glibmm
+    xcbutilwm
+  ];
+
+  env = {
+    PKG_CONFIG_WAYFIRE_METADATADIR = "${placeholder "out"}/share/wayfire/metadata";
+  };
+
+  passthru.updateScript = unstableGitUpdater { };
+
+  meta = {
+    homepage = "https://github.com/wb9688/wwp-switcher";
+    description = "A plugin to switch active window";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ rewine ];
+    inherit (wayfire.meta) platforms;
+  };
+})
diff --git a/pkgs/applications/window-managers/weston/default.nix b/pkgs/applications/window-managers/weston/default.nix
index b4472425324ee..a4e36c18368e6 100644
--- a/pkgs/applications/window-managers/weston/default.nix
+++ b/pkgs/applications/window-managers/weston/default.nix
@@ -19,11 +19,11 @@
 
 stdenv.mkDerivation rec {
   pname = "weston";
-  version = "13.0.0";
+  version = "13.0.1";
 
   src = fetchurl {
     url = "https://gitlab.freedesktop.org/wayland/weston/-/releases/${version}/downloads/weston-${version}.tar.xz";
-    hash = "sha256-Uv8dSqI5Si5BbIWjOLYnzpf6cdQ+t2L9Sq8UXTb8eVo=";
+    hash = "sha256-6hVmq09f/Ofp/U96H8pbMMquTVACO/RZITmUCU4Cspo=";
   };
 
   postPatch = ''