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/cage/default.nix22
-rw-r--r--pkgs/applications/window-managers/cage/inject-git-commit.patch23
-rw-r--r--pkgs/applications/window-managers/cagebreak/default.nix3
-rw-r--r--pkgs/applications/window-managers/dk/default.nix4
-rw-r--r--pkgs/applications/window-managers/dwl/default.nix99
-rw-r--r--pkgs/applications/window-managers/dwm/default.nix2
-rw-r--r--pkgs/applications/window-managers/dwm/dwm-status.nix2
-rw-r--r--pkgs/applications/window-managers/e16/default.nix8
-rw-r--r--pkgs/applications/window-managers/fluxbox/default.nix53
-rw-r--r--pkgs/applications/window-managers/hackedbox/default.nix63
-rw-r--r--pkgs/applications/window-managers/hyprwm/hypr/default.nix2
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland-plugins/default.nix7
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland-plugins/hy3.nix13
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland-plugins/hycov.nix33
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland-plugins/hypr-dynamic-cursors.nix40
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprfocus.nix35
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprgrass.nix47
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprland-plugins.nix13
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprscroller.nix41
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprspace.nix40
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprsplit.nix34
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland-protocols/default.nix2
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprpaper/default.nix21
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprpicker/default.nix2
-rw-r--r--pkgs/applications/window-managers/hyprwm/xdg-desktop-portal-hyprland/default.nix91
-rw-r--r--pkgs/applications/window-managers/i3/auto-layout.nix2
-rw-r--r--pkgs/applications/window-managers/i3/balance-workspace.nix2
-rw-r--r--pkgs/applications/window-managers/i3/blocks-gaps.nix26
-rw-r--r--pkgs/applications/window-managers/i3/blocks.nix4
-rw-r--r--pkgs/applications/window-managers/i3/bumblebee-status/default.nix10
-rw-r--r--pkgs/applications/window-managers/i3/bumblebee-status/plugins.nix6
-rw-r--r--pkgs/applications/window-managers/i3/default.nix47
-rw-r--r--pkgs/applications/window-managers/i3/i3-ratiosplit.nix2
-rw-r--r--pkgs/applications/window-managers/i3/i3-resurrect.nix2
-rw-r--r--pkgs/applications/window-managers/i3/kitti3.nix2
-rw-r--r--pkgs/applications/window-managers/i3/layout-manager.nix2
-rw-r--r--pkgs/applications/window-managers/i3/lock-blur.nix2
-rw-r--r--pkgs/applications/window-managers/i3/lock-color.nix2
-rw-r--r--pkgs/applications/window-managers/i3/pystatus.nix62
-rw-r--r--pkgs/applications/window-managers/i3/rounded.nix3
-rw-r--r--pkgs/applications/window-managers/i3/status.nix4
-rw-r--r--pkgs/applications/window-managers/i3/swallow.nix2
-rw-r--r--pkgs/applications/window-managers/i3/wsr.nix2
-rw-r--r--pkgs/applications/window-managers/ion-3/default.nix2
-rw-r--r--pkgs/applications/window-managers/jay/default.nix6
-rw-r--r--pkgs/applications/window-managers/leftwm/default.nix13
-rw-r--r--pkgs/applications/window-managers/leftwm/update-time-crate.patch57
-rw-r--r--pkgs/applications/window-managers/lwm/default.nix46
-rw-r--r--pkgs/applications/window-managers/maui-shell/default.nix90
-rw-r--r--pkgs/applications/window-managers/miriway/default.nix6
-rw-r--r--pkgs/applications/window-managers/owl/default.nix16
-rw-r--r--pkgs/applications/window-managers/phosh/default.nix26
-rw-r--r--pkgs/applications/window-managers/phosh/phosh-mobile-settings.nix19
-rw-r--r--pkgs/applications/window-managers/ragnarwm/default.nix8
-rw-r--r--pkgs/applications/window-managers/sawfish/default.nix89
-rw-r--r--pkgs/applications/window-managers/sommelier/default.nix6
-rw-r--r--pkgs/applications/window-managers/spectrwm/default.nix12
-rw-r--r--pkgs/applications/window-managers/tabbed/default.nix2
-rw-r--r--pkgs/applications/window-managers/taffybar/default.nix2
-rw-r--r--pkgs/applications/window-managers/tinywl/default.nix3
-rw-r--r--pkgs/applications/window-managers/vwm/default.nix2
-rw-r--r--pkgs/applications/window-managers/wayfire/default.nix6
-rw-r--r--pkgs/applications/window-managers/wayfire/wayfire-plugins-extra.nix8
-rw-r--r--pkgs/applications/window-managers/wayfire/wayfire-shadows.nix10
-rw-r--r--pkgs/applications/window-managers/wayfire/wcm.nix6
-rw-r--r--pkgs/applications/window-managers/wayfire/wf-config.nix6
-rw-r--r--pkgs/applications/window-managers/wayfire/wf-shell.nix6
-rw-r--r--pkgs/applications/window-managers/wayfire/wrapper.nix2
-rw-r--r--pkgs/applications/window-managers/wayfire/wwp-switcher.nix6
-rw-r--r--pkgs/applications/window-managers/weston/default.nix23
-rw-r--r--pkgs/applications/window-managers/xmonad/log-applet/default.nix4
-rw-r--r--pkgs/applications/window-managers/yabar/build.nix4
-rw-r--r--pkgs/applications/window-managers/yabar/unstable.nix9
73 files changed, 668 insertions, 709 deletions
diff --git a/pkgs/applications/window-managers/cage/default.nix b/pkgs/applications/window-managers/cage/default.nix
index 73c9f7c4c5115..9d22cefc461b0 100644
--- a/pkgs/applications/window-managers/cage/default.nix
+++ b/pkgs/applications/window-managers/cage/default.nix
@@ -1,4 +1,5 @@
 { lib, stdenv, fetchFromGitHub
+, substituteAll
 , meson, ninja, pkg-config, wayland-scanner, scdoc, makeWrapper
 , wlroots, wayland, wayland-protocols, pixman, libxkbcommon, xcbutilwm
 , systemd, libGL, libX11, mesa
@@ -8,15 +9,24 @@
 
 stdenv.mkDerivation rec {
   pname = "cage";
-  version = "0.1.5";
+  version = "0.1.5-unstable-2024-07-29";
 
   src = fetchFromGitHub {
-    owner = "Hjdskes";
+    owner = "cage-kiosk";
     repo = "cage";
-    rev = "v${version}";
-    hash = "sha256-Suq14YRw/MReDRvO/TQqjpZvpzAEDnHUyVbQj0BPT4c=";
+    rev = "d3fb99d6654325ec46277cfdb589f89316bed701";
+    hash = "sha256-WP0rWO9Wbs/09wTY8IlIUybnVUnwiNdXD9JgsoVG4rM=";
   };
 
+  patches = [
+    # TODO: Remove on next stable release.
+    (substituteAll {
+      src = ./inject-git-commit.patch;
+      gitCommit = lib.substring 0 7 src.rev;
+      gitBranch = "master";
+    })
+  ];
+
   depsBuildBuild = [
     pkg-config
   ];
@@ -29,9 +39,7 @@ stdenv.mkDerivation rec {
     systemd libGL libX11
   ];
 
-  mesonFlags = [ "-Dxwayland=${lib.boolToString (xwayland != null)}" ];
-
-  postFixup = lib.optionalString (xwayland != null) ''
+  postFixup = lib.optionalString wlroots.enableXWayland ''
     wrapProgram $out/bin/cage --prefix PATH : "${xwayland}/bin"
   '';
 
diff --git a/pkgs/applications/window-managers/cage/inject-git-commit.patch b/pkgs/applications/window-managers/cage/inject-git-commit.patch
new file mode 100644
index 0000000000000..b1c73f4a0761e
--- /dev/null
+++ b/pkgs/applications/window-managers/cage/inject-git-commit.patch
@@ -0,0 +1,23 @@
+diff --git a/meson.build b/meson.build
+index 4c0cbe280f..d4479741c8 100644
+--- a/meson.build
++++ b/meson.build
+@@ -68,14 +68,12 @@
+ 
+ version = '@0@'.format(meson.project_version())
+ git = find_program('git', native: true, required: false)
+-if git.found()
+-  git_commit = run_command([git, 'rev-parse', '--short', 'HEAD'], check: false)
+-  git_branch = run_command([git, 'rev-parse', '--abbrev-ref', 'HEAD'], check: false)
+-  if git_commit.returncode() == 0 and git_branch.returncode() == 0
++if true
++  if true
+     version = '@0@-@1@ (branch \'@2@\')'.format(
+       meson.project_version(),
+-      git_commit.stdout().strip(),
+-      git_branch.stdout().strip(),
++      '@gitCommit@'.strip(),
++      '@gitBranch@'.strip(),
+     )
+   endif
+ endif
diff --git a/pkgs/applications/window-managers/cagebreak/default.nix b/pkgs/applications/window-managers/cagebreak/default.nix
index c897e3f66d8f2..13618f6afb336 100644
--- a/pkgs/applications/window-managers/cagebreak/default.nix
+++ b/pkgs/applications/window-managers/cagebreak/default.nix
@@ -19,6 +19,7 @@
 , systemd
 , wayland
 , wayland-protocols
+, wayland-scanner
 , withXwayland ? true , xwayland
 , wlroots
 }:
@@ -40,7 +41,7 @@ stdenv.mkDerivation rec {
     ninja
     pkg-config
     scdoc
-    wayland
+    wayland-scanner
   ];
 
   buildInputs = [
diff --git a/pkgs/applications/window-managers/dk/default.nix b/pkgs/applications/window-managers/dk/default.nix
index a0efe1ad768f6..27d0e15492a70 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.2";
+  version = "2.3";
 
   src = fetchFromBitbucket {
     owner = "natemaia";
     repo = "dk";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-u1fZTcfGLwKFeRADU55MFYDvtSOaOg5qtWB90xYpVuY=";
+    hash = "sha256-VkNF3F/NRQadBkbnbVmMZliIXRxFU0qqxOeQDX4UrJg=";
   };
 
   buildInputs = [
diff --git a/pkgs/applications/window-managers/dwl/default.nix b/pkgs/applications/window-managers/dwl/default.nix
deleted file mode 100644
index 68815952b17f1..0000000000000
--- a/pkgs/applications/window-managers/dwl/default.nix
+++ /dev/null
@@ -1,99 +0,0 @@
-{ lib
-, stdenv
-, fetchFromGitea
-, installShellFiles
-, libX11
-, libinput
-, libxcb
-, libxkbcommon
-, pixman
-, pkg-config
-, substituteAll
-, wayland-scanner
-, wayland
-, wayland-protocols
-, wlroots
-, writeText
-, xcbutilwm
-, xwayland
-, enableXWayland ? true
-, conf ? null
-}:
-
-stdenv.mkDerivation (finalAttrs: {
-  pname = "dwl";
-  version = "0.5";
-
-  src = fetchFromGitea {
-    domain = "codeberg.org";
-    owner = "dwl";
-    repo = "dwl";
-    rev = "v${finalAttrs.version}";
-    hash = "sha256-U/vqGE1dJKgEGTfPMw02z5KJbZLWY1vwDJWnJxT8urM=";
-  };
-
-  nativeBuildInputs = [
-    installShellFiles
-    pkg-config
-    wayland-scanner
-  ];
-
-  buildInputs = [
-    libinput
-    libxcb
-    libxkbcommon
-    pixman
-    wayland
-    wayland-protocols
-    wlroots
-  ] ++ lib.optionals enableXWayland [
-    libX11
-    xcbutilwm
-    xwayland
-  ];
-
-  outputs = [ "out" "man" ];
-
-  # Allow users to set an alternative config.def.h
-  postPatch = let
-    configFile = if lib.isDerivation conf || builtins.isPath conf
-                 then conf
-                 else writeText "config.def.h" conf;
-  in lib.optionalString (conf != null) "cp ${configFile} config.def.h";
-
-  makeFlags = [
-    "PKG_CONFIG=${stdenv.cc.targetPrefix}pkg-config"
-    "WAYLAND_SCANNER=wayland-scanner"
-    "PREFIX=$(out)"
-    "MANDIR=$(man)/share/man"
-  ];
-
-  preBuild = ''
-    makeFlagsArray+=(
-      XWAYLAND=${lib.optionalString enableXWayland "-DXWAYLAND"}
-      XLIBS=${lib.optionalString enableXWayland "xcb\\ xcb-icccm"}
-    )
-  '';
-
-  meta = {
-    homepage = "https://github.com/djpohly/dwl/";
-    description = "Dynamic window manager for Wayland";
-    longDescription = ''
-      dwl is a compact, hackable compositor for Wayland based on wlroots. It is
-      intended to fill the same space in the Wayland world that dwm does in X11,
-      primarily in terms of philosophy, and secondarily in terms of
-      functionality. Like dwm, dwl is:
-
-      - Easy to understand, hack on, and extend with patches
-      - One C source file (or a very small number) configurable via config.h
-      - Limited to 2000 SLOC to promote hackability
-      - Tied to as few external dependencies as possible
-    '';
-    changelog = "https://github.com/djpohly/dwl/releases/tag/v${finalAttrs.version}";
-    license = lib.licenses.gpl3Only;
-    maintainers = [ lib.maintainers.AndersonTorres ];
-    inherit (wayland.meta) platforms;
-    mainProgram = "dwl";
-  };
-})
-# TODO: custom patches from upstream website
diff --git a/pkgs/applications/window-managers/dwm/default.nix b/pkgs/applications/window-managers/dwm/default.nix
index 10fef61b49a1a..74d5022219a05 100644
--- a/pkgs/applications/window-managers/dwm/default.nix
+++ b/pkgs/applications/window-managers/dwm/default.nix
@@ -49,7 +49,7 @@ stdenv.mkDerivation rec {
       tags.
     '';
     license = licenses.mit;
-    maintainers = with maintainers; [ viric neonfuz ];
+    maintainers = with maintainers; [ neonfuz ];
     platforms = platforms.all;
     mainProgram = "dwm";
   };
diff --git a/pkgs/applications/window-managers/dwm/dwm-status.nix b/pkgs/applications/window-managers/dwm/dwm-status.nix
index 1d5f84abe288b..cb303ff268aea 100644
--- a/pkgs/applications/window-managers/dwm/dwm-status.nix
+++ b/pkgs/applications/window-managers/dwm/dwm-status.nix
@@ -21,7 +21,7 @@ rustPlatform.buildRustPackage rec {
   nativeBuildInputs = [ makeWrapper pkg-config ];
   buildInputs = [ dbus gdk-pixbuf libnotify xorg.libX11 ];
 
-  cargoSha256 = "sha256-eRfXUnyzOfVSEiwjLCaNbETUPXVU2Ed2VUNM9FjS5YE=";
+  cargoHash = "sha256-eRfXUnyzOfVSEiwjLCaNbETUPXVU2Ed2VUNM9FjS5YE=";
 
   postInstall = lib.optionalString (bins != [])  ''
     wrapProgram $out/bin/dwm-status --prefix "PATH" : "${lib.makeBinPath bins}"
diff --git a/pkgs/applications/window-managers/e16/default.nix b/pkgs/applications/window-managers/e16/default.nix
index d47b63dda4d04..b143a4bec27db 100644
--- a/pkgs/applications/window-managers/e16/default.nix
+++ b/pkgs/applications/window-managers/e16/default.nix
@@ -16,16 +16,17 @@
 , libsndfile
 , pango
 , perl
+, python3
 , gitUpdater
 }:
 
 stdenv.mkDerivation rec {
   pname = "e16";
-  version = "1.0.29";
+  version = "1.0.30";
 
   src = fetchurl {
     url = "mirror://sourceforge/enlightenment/e16-${version}.tar.xz";
-    hash = "sha256-LvLiw6+hduAl8dNBTtBwqvgKBRwojBUd5tNm1hZl5Hs=";
+    hash = "sha256-JKBmBgC5cN4XO03r0NR78Ly9tpI733/sUEPL0GLU5B0=";
   };
 
   nativeBuildInputs = [
@@ -47,10 +48,13 @@ stdenv.mkDerivation rec {
     libsndfile
     pango
     perl
+    python3
   ];
 
   postPatch = ''
     substituteInPlace scripts/e_gen_menu --replace "/usr/local:" "/run/current-system/sw:/usr/local:"
+    substituteInPlace scripts/e_gen_menu --replace "'/opt'" "'/opt', '/run/current-system/sw'"
+    substituteInPlace scripts/e_gen_menu --replace "'/.local'" "'/.nix-profile', '/.local'"
   '';
 
   passthru.updateScript = gitUpdater {
diff --git a/pkgs/applications/window-managers/fluxbox/default.nix b/pkgs/applications/window-managers/fluxbox/default.nix
deleted file mode 100644
index 934f8c9b3fc2e..0000000000000
--- a/pkgs/applications/window-managers/fluxbox/default.nix
+++ /dev/null
@@ -1,53 +0,0 @@
-{ lib, stdenv, fetchurl, pkg-config
-, freetype, fribidi
-, libXext, libXft, libXpm, libXrandr, libXrender, xorgproto
-, libXinerama
-, imlib2 }:
-
-with lib;
-stdenv.mkDerivation rec {
-
-  pname = "fluxbox";
-  version = "1.3.7";
-
-  src = fetchurl {
-    url = "mirror://sourceforge/fluxbox/${pname}-${version}.tar.xz";
-    sha256 = "1h1f70y40qd225dqx937vzb4k2cz219agm1zvnjxakn5jkz7b37w";
-  };
-
-  patches = [
-    # Upstream fix to build against gcc-11.
-    (fetchurl {
-      name = "gcc-11.patch";
-      url = "http://git.fluxbox.org/fluxbox.git/patch/?id=22866c4d30f5b289c429c5ca88d800200db4fc4f";
-      sha256 = "1x7126rlmzky51lk370fczssgnjs7i6wgfaikfib9pvn4vv945ai";
-    })
-  ];
-
-  nativeBuildInputs = [ pkg-config ];
-
-  buildInputs = [ freetype fribidi libXext libXft libXpm libXrandr libXrender xorgproto libXinerama imlib2 ];
-
-  enableParallelBuilding = true;
-
-  preConfigure = ''
-    substituteInPlace util/fluxbox-generate_menu.in \
-      --subst-var-by PREFIX "$out"
-  '';
-
-  meta = {
-    description = "Full-featured, light-resource X window manager";
-    longDescription = ''
-      Fluxbox is a X window manager based on Blackbox 0.61.1 window
-      manager sources.  It is very light on resources and easy to
-      handle but yet full of features to make an easy, and extremely
-      fast, desktop experience. It is written in C++ and licensed
-      under MIT license.
-    '';
-    homepage = "http://fluxbox.org/";
-    license = licenses.mit;
-    maintainers = [ maintainers.AndersonTorres ];
-    platforms = platforms.linux;
-  };
-}
-# Many thanks Jack Ryan from Nix-dev mailing list!
diff --git a/pkgs/applications/window-managers/hackedbox/default.nix b/pkgs/applications/window-managers/hackedbox/default.nix
deleted file mode 100644
index e5812c4c63fa4..0000000000000
--- a/pkgs/applications/window-managers/hackedbox/default.nix
+++ /dev/null
@@ -1,63 +0,0 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, autoreconfHook
-, freetype
-, fribidi
-, imlib2
-, libX11
-, libXext
-, libXft
-, libXinerama
-, libXpm
-, libXrandr
-, libXrender
-, pkg-config
-, xorgproto
-}:
-
-stdenv.mkDerivation (finalAttrs: {
-  pname = "hackedbox";
-  version = "0.8.5.1";
-
-  src = fetchFromGitHub {
-    owner = "museoa";
-    repo = "hackedbox";
-    rev = finalAttrs.version;
-    hash = "sha256-hxfbEj7UxQ19xhetmdi0iyK6ceLUfUvAAyyTbNivlLQ=";
-  };
-
-  nativeBuildInputs = [
-    autoreconfHook
-    pkg-config
-  ];
-
-  CXXFLAGS = "-std=c++98";
-
-  buildInputs = [
-    freetype
-    fribidi
-    imlib2
-    libX11
-    libXext
-    libXft
-    libXinerama
-    libXpm
-    libXrandr
-    libXrender
-    xorgproto
-  ];
-
-  configureFlags = [
-    "--x-includes=${libX11.dev}/include"
-    "--x-libraries=${libX11.out}/lib"
-  ];
-
-  meta = with lib; {
-    description = "Bastard hacked offspring of Blackbox";
-    homepage = "https://github.com/museoa/hackedbox/";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ AndersonTorres ];
-    inherit (libX11.meta) platforms;
-  };
-})
diff --git a/pkgs/applications/window-managers/hyprwm/hypr/default.nix b/pkgs/applications/window-managers/hyprwm/hypr/default.nix
index 3952256b8d410..b24c905478e46 100644
--- a/pkgs/applications/window-managers/hyprwm/hypr/default.nix
+++ b/pkgs/applications/window-managers/hyprwm/hypr/default.nix
@@ -56,7 +56,7 @@ stdenv.mkDerivation (finalAttrs: {
   ];
 
   # src/ewmh/ewmh.cpp:67:28: error: non-constant-expression cannot be narrowed from type 'int' to 'uint32_t' (aka 'unsigned int') in initializer list
-  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-Wno-c++11-narrowing";
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-Wno-c++11-narrowing";
 
   installPhase = ''
     runHook preInstall
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/default.nix b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/default.nix
index f994b19175209..91f57ad526d92 100644
--- a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/default.nix
+++ b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/default.nix
@@ -26,6 +26,13 @@ let
 
   plugins = lib.mergeAttrsList [
     { hy3 = import ./hy3.nix; }
+    { hycov = import ./hycov.nix; }
+    { hypr-dynamic-cursors = import ./hypr-dynamic-cursors.nix; }
+    { hyprfocus = import ./hyprfocus.nix; }
+    { hyprgrass = import ./hyprgrass.nix; }
+    { hyprscroller = import ./hyprscroller.nix; }
+    { hyprspace = import ./hyprspace.nix; }
+    { hyprsplit = import ./hyprsplit.nix; }
     (import ./hyprland-plugins.nix)
   ];
 in
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hy3.nix b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hy3.nix
index acb4aa2d322c0..574d2806b330a 100644
--- a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hy3.nix
+++ b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hy3.nix
@@ -7,13 +7,13 @@
 }:
 mkHyprlandPlugin hyprland rec {
   pluginName = "hy3";
-  version = "0.41.1";
+  version = "0.43.0";
 
   src = fetchFromGitHub {
     owner = "outfoxxed";
     repo = "hy3";
-    rev = "hl${version}";
-    hash = "sha256-bRLI+zgfT31LCMW4Pf701ZZx2oFeXoBu1BfYQjX6MPc=";
+    rev = "refs/tags/hl${version}";
+    hash = "sha256-hBvwaMlgBuR2cB1Kx6cA1z7x38HXUujNcHtBsKhaEZs=";
   };
 
   nativeBuildInputs = [ cmake ];
@@ -24,7 +24,10 @@ mkHyprlandPlugin hyprland rec {
     homepage = "https://github.com/outfoxxed/hy3";
     description = "Hyprland plugin for an i3 / sway like manual tiling layout";
     license = lib.licenses.gpl3;
-    platforms = lib.platforms.linux;
-    maintainers = with lib.maintainers; [ aacebedo ];
+    inherit (hyprland.meta) platforms;
+    maintainers = with lib.maintainers; [
+      aacebedo
+      johnrtitor
+    ];
   };
 }
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hycov.nix b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hycov.nix
new file mode 100644
index 0000000000000..38bcd12a7ffa4
--- /dev/null
+++ b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hycov.nix
@@ -0,0 +1,33 @@
+{
+  lib,
+  mkHyprlandPlugin,
+  hyprland,
+  cmake,
+  fetchFromGitHub,
+  nix-update-script,
+}:
+
+mkHyprlandPlugin hyprland rec {
+  pluginName = "hycov";
+  version = "0.41.2.1";
+
+  src = fetchFromGitHub {
+    owner = "DreamMaoMao";
+    repo = "hycov";
+    rev = version;
+    hash = "sha256-NRnxbkuiq1rQ+uauo7D+CEe73iGqxsWxTQa+1SEPnXQ=";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = {
+    description = "Clients overview for Hyprland plugin";
+    homepage = "https://github.com/DreamMaoMao/hycov";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ donovanglover ];
+    platforms = lib.platforms.linux;
+    broken = true; # Doesn't work after Hyprland v0.41.2 https://gitee.com/DreamMaoMao/hycov/issues/IANYC8#note_31512295_link
+  };
+}
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hypr-dynamic-cursors.nix b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hypr-dynamic-cursors.nix
new file mode 100644
index 0000000000000..6b16f3c5c7e59
--- /dev/null
+++ b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hypr-dynamic-cursors.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  mkHyprlandPlugin,
+  fetchFromGitHub,
+  hyprland,
+  unstableGitUpdater,
+}:
+
+mkHyprlandPlugin hyprland {
+  pluginName = "hypr-dynamic-cursors";
+  version = "0-unstable-2024-08-01";
+
+  src = fetchFromGitHub {
+    owner = "VirtCode";
+    repo = "hypr-dynamic-cursors";
+    rev = "ed2ff68862ae02e04dd06488eb7228e4412f5c33";
+    hash = "sha256-02G/SPd/X7zSIFF3V6dkh8mGGWoO0/m6/Yld7HyPmJs=";
+  };
+
+  dontUseCmakeConfigure = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/lib
+    mv out/dynamic-cursors.so $out/lib/libhypr-dynamic-cursors.so
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = unstableGitUpdater { };
+
+  meta = {
+    description = "Plugin to make your Hyprland cursor more realistic";
+    homepage = "https://github.com/VirtCode/hypr-dynamic-cursors";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ donovanglover ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprfocus.nix b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprfocus.nix
new file mode 100644
index 0000000000000..f58cc54a8eb56
--- /dev/null
+++ b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprfocus.nix
@@ -0,0 +1,35 @@
+{
+  lib,
+  mkHyprlandPlugin,
+  hyprland,
+  fetchFromGitHub,
+}:
+
+mkHyprlandPlugin hyprland {
+  pluginName = "hyprfocus";
+  version = "0-unstable-2024-05-30";
+
+  src = fetchFromGitHub {
+    owner = "pyt0xic";
+    repo = "hyprfocus";
+    rev = "aa7262d3a4564062f97b9cfdad47fd914cfb80f2";
+    hash = "sha256-R1ZgNhQkoS6ZHRRKB+j5vYgRANfYO//sHbrD7moUTx0=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/lib
+    mv hyprfocus.so $out/lib/libhyprfocus.so
+
+    runHook postInstall
+  '';
+
+  meta = {
+    homepage = "https://github.com/pyt0xic/hyprfocus";
+    description = "Focus animation plugin for Hyprland inspired by Flashfocus";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ donovanglover ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprgrass.nix b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprgrass.nix
new file mode 100644
index 0000000000000..67b39551990e5
--- /dev/null
+++ b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprgrass.nix
@@ -0,0 +1,47 @@
+{
+  lib,
+  mkHyprlandPlugin,
+  hyprland,
+  fetchFromGitHub,
+  cmake,
+  doctest,
+  meson,
+  ninja,
+  wf-touch,
+  nix-update-script,
+}:
+
+mkHyprlandPlugin hyprland rec {
+  pluginName = "hyprgrass";
+  version = "0.8.1";
+
+  src = fetchFromGitHub {
+    owner = "horriblename";
+    repo = "hyprgrass";
+    rev = "v${version}";
+    hash = "sha256-3CN9ZioI5XBtp6WF61hH2EyASHUIPJQCTXiW1rt9n5w=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    doctest
+    meson
+    ninja
+  ];
+
+  buildInputs = [ wf-touch ];
+
+  dontUseCmakeConfigure = true;
+
+  doCheck = true;
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = {
+    description = "Hyprland plugin for touch gestures";
+    homepage = "https://github.com/horriblename/hyprgrass";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ donovanglover ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprland-plugins.nix b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprland-plugins.nix
index 8ae5348e997c4..bb5a4dc9f6f60 100644
--- a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprland-plugins.nix
+++ b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprland-plugins.nix
@@ -14,13 +14,13 @@ let
             mkHyprlandPlugin,
           }:
           let
-            version = "0.41.1";
+            version = "0.43.0";
 
             hyprland-plugins-src = fetchFromGitHub {
               owner = "hyprwm";
               repo = "hyprland-plugins";
-              rev = "v${version}";
-              hash = "sha256-Bw3JRBUZg2kmDwxa/UHvD//gGcNjbftTj2MSeLvx1q8=";
+              rev = "refs/tags/v${version}";
+              hash = "sha256-dPcWAeRJoG5CyWC32X3XX+Og0v/k1/S1N0T5dQWT32k=";
             };
           in
           mkHyprlandPlugin hyprland {
@@ -33,8 +33,11 @@ let
               homepage = "https://github.com/hyprwm/hyprland-plugins";
               description = "Hyprland ${description} plugin";
               license = lib.licenses.bsd3;
-              maintainers = with lib.maintainers; [ fufexan ];
-              platforms = lib.platforms.linux;
+              maintainers = with lib.maintainers; [
+                fufexan
+                johnrtitor
+              ];
+              inherit (hyprland.meta) platforms;
             };
           }
         )
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprscroller.nix b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprscroller.nix
new file mode 100644
index 0000000000000..3d39c7d216dd9
--- /dev/null
+++ b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprscroller.nix
@@ -0,0 +1,41 @@
+{
+  lib,
+  mkHyprlandPlugin,
+  hyprland,
+  cmake,
+  fetchFromGitHub,
+  unstableGitUpdater,
+}:
+
+mkHyprlandPlugin hyprland {
+  pluginName = "hyprscroller";
+  version = "0-unstable-2024-09-06";
+
+  src = fetchFromGitHub {
+    owner = "dawsers";
+    repo = "hyprscroller";
+    rev = "07671d7d42b92a85fc7e62cd8f02b0d9c52a8dea";
+    hash = "sha256-RLI202fBXz+mDXX5Em70FU+16ChbA/YtpORYiOSX8uc=";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/lib
+    mv hyprscroller.so $out/lib/libhyprscroller.so
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = unstableGitUpdater { };
+
+  meta = {
+    homepage = "https://github.com/dawsers/hyprscroller";
+    description = "Hyprland layout plugin providing a scrolling layout like PaperWM";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ donovanglover ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprspace.nix b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprspace.nix
new file mode 100644
index 0000000000000..ff658d30ce156
--- /dev/null
+++ b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprspace.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  fetchFromGitHub,
+  hyprland,
+  mkHyprlandPlugin,
+  unstableGitUpdater,
+}:
+
+mkHyprlandPlugin hyprland {
+  pluginName = "hyprspace";
+  version = "0-unstable-2024-08-21";
+
+  src = fetchFromGitHub {
+    owner = "KZDKM";
+    repo = "hyprspace";
+    rev = "743ec37d02bb2b7261f28de16bf404cebfd96105";
+    hash = "sha256-w0j/3OeSrpx+S8if1M2ONBsZvJQ1hBQkdTQEiMCHy7o=";
+  };
+
+  dontUseCmakeConfigure = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/lib
+    mv Hyprspace.so $out/lib/libhyprspace.so
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = unstableGitUpdater { };
+
+  meta = {
+    homepage = "https://github.com/KZDKM/Hyprspace";
+    description = "Workspace overview plugin for Hyprland";
+    license = lib.licenses.gpl2Only;
+    platforms = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ donovanglover ];
+  };
+}
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprsplit.nix b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprsplit.nix
new file mode 100644
index 0000000000000..13e51037fc9ca
--- /dev/null
+++ b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprsplit.nix
@@ -0,0 +1,34 @@
+{
+  lib,
+  meson,
+  fetchFromGitHub,
+  hyprland,
+  ninja,
+  mkHyprlandPlugin,
+}:
+mkHyprlandPlugin hyprland rec {
+  pluginName = "hyprsplit";
+  version = "0.43.0";
+
+  src = fetchFromGitHub {
+    owner = "shezdy";
+    repo = "hyprsplit";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-r533kNIyfgPi/q8ddIYyDK1Pmupt/F3ncHuFo3zjDkU=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+  ];
+
+  meta = {
+    homepage = "https://github.com/shezdy/hyprsplit";
+    description = "Hyprland plugin for awesome / dwm like workspaces";
+    license = lib.licenses.bsd3;
+    inherit (hyprland.meta) platforms;
+    maintainers = with lib.maintainers; [
+      aacebedo
+    ];
+  };
+}
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland-protocols/default.nix b/pkgs/applications/window-managers/hyprwm/hyprland-protocols/default.nix
index 8815205b0e9d1..a1269307c9581 100644
--- a/pkgs/applications/window-managers/hyprwm/hyprland-protocols/default.nix
+++ b/pkgs/applications/window-managers/hyprwm/hyprland-protocols/default.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   src = fetchFromGitHub {
     owner = "hyprwm";
-    repo = finalAttrs.pname;
+    repo = "hyprland-protocols";
     rev = "v${finalAttrs.version}";
     hash = "sha256-HUklK5u86w2Yh9dOkk4FdsL8eehcOZ95jPhLixGDRQY=";
   };
diff --git a/pkgs/applications/window-managers/hyprwm/hyprpaper/default.nix b/pkgs/applications/window-managers/hyprwm/hyprpaper/default.nix
index 9da143be08bf1..771b3b1841a58 100644
--- a/pkgs/applications/window-managers/hyprwm/hyprpaper/default.nix
+++ b/pkgs/applications/window-managers/hyprwm/hyprpaper/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , fetchFromGitHub
+, fetchpatch
 , cmake
 , cairo
 , expat
@@ -23,22 +24,33 @@
 , wayland
 , wayland-protocols
 , wayland-scanner
+, hyprwayland-scanner
+, hyprutils
 }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "hyprpaper";
-  version = "0.7.0";
+  version = "0.7.1";
 
   src = fetchFromGitHub {
     owner = "hyprwm";
-    repo = finalAttrs.pname;
+    repo = "hyprpaper";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-l13c8ALA7ZKDgluYA1C1OfkDGYD6e1/GR6LJnxCLRhA=";
+    hash = "sha256-HIK7XJWQCM0BAnwW5uC7P0e7DAkVTy5jlxQ0NwoSy4M=";
   };
 
+  patches = [
+    # CMakeLists: look for wayland.xml protocol in wayland-scanner pkgdata
+    (fetchpatch {
+      url = "https://github.com/hyprwm/hyprpaper/commit/6c6e54faa84d2de94d2321eda43a8a669ebf3312.patch";
+      hash = "sha256-Ns7HlUPVgBDIocZRGR6kIW58Mt92kJPQRMSKTvp6Vik=";
+    })
+  ];
+
   nativeBuildInputs = [
     cmake
     pkg-config
+    hyprwayland-scanner
     wayland-scanner
   ];
 
@@ -62,6 +74,7 @@ stdenv.mkDerivation (finalAttrs: {
     util-linux
     wayland
     wayland-protocols
+    hyprutils
   ];
 
   prePatch = ''
@@ -75,7 +88,7 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.bsd3;
     maintainers = with maintainers; [ wozeparrot fufexan ];
     inherit (wayland.meta) platforms;
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     mainProgram = "hyprpaper";
   };
 })
diff --git a/pkgs/applications/window-managers/hyprwm/hyprpicker/default.nix b/pkgs/applications/window-managers/hyprwm/hyprpicker/default.nix
index 4089d82a3b977..0ee4884f5b6f1 100644
--- a/pkgs/applications/window-managers/hyprwm/hyprpicker/default.nix
+++ b/pkgs/applications/window-managers/hyprwm/hyprpicker/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   src = fetchFromGitHub {
     owner = "hyprwm";
-    repo = finalAttrs.pname;
+    repo = "hyprpicker";
     rev = "v${finalAttrs.version}";
     hash = "sha256-BYQF1zM6bJ44ag9FJ0aTSkhOTY9U7uRdp3SmRCs5fJM=";
   };
diff --git a/pkgs/applications/window-managers/hyprwm/xdg-desktop-portal-hyprland/default.nix b/pkgs/applications/window-managers/hyprwm/xdg-desktop-portal-hyprland/default.nix
index 609da88715661..ef479589d59b6 100644
--- a/pkgs/applications/window-managers/hyprwm/xdg-desktop-portal-hyprland/default.nix
+++ b/pkgs/applications/window-managers/hyprwm/xdg-desktop-portal-hyprland/default.nix
@@ -1,49 +1,57 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, cmake
-, pkg-config
-, wayland-scanner
-, makeWrapper
-, wrapQtAppsHook
-, hyprland-protocols
-, hyprlang
-, libdrm
-, mesa
-, pipewire
-, qtbase
-, qttools
-, qtwayland
-, sdbus-cpp
-, systemd
-, wayland
-, wayland-protocols
-, hyprland
-, hyprpicker
-, slurp
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  cmake,
+  makeWrapper,
+  pkg-config,
+  wrapQtAppsHook,
+  nix-update-script,
+  hyprland,
+  hyprland-protocols,
+  hyprlang,
+  hyprutils,
+  hyprwayland-scanner,
+  libdrm,
+  mesa,
+  pipewire,
+  qtbase,
+  qttools,
+  qtwayland,
+  sdbus-cpp,
+  slurp,
+  systemd,
+  wayland,
+  wayland-protocols,
+  wayland-scanner,
 }:
-stdenv.mkDerivation (self: {
+stdenv.mkDerivation (finalAttrs: {
   pname = "xdg-desktop-portal-hyprland";
-  version = "1.3.2";
+  version = "1.3.6";
 
   src = fetchFromGitHub {
     owner = "hyprwm";
     repo = "xdg-desktop-portal-hyprland";
-    rev = "v${self.version}";
-    hash = "sha256-KsX7sAwkEFpXiwyjt0HGTnnrUU58wW1jlzj5IA/LRz8=";
+    rev = "refs/tags/v${finalAttrs.version}";
+    hash = "sha256-1DGktDtSWIJpnDbVoj/qpvJSH5zg6JbOfuh6xqZMap0=";
   };
 
+  depsBuildBuild = [
+    pkg-config
+  ];
+
   nativeBuildInputs = [
     cmake
-    pkg-config
-    wayland-scanner
     makeWrapper
+    pkg-config
     wrapQtAppsHook
+    hyprwayland-scanner
   ];
 
   buildInputs = [
     hyprland-protocols
     hyprlang
+    hyprutils
     libdrm
     mesa
     pipewire
@@ -54,6 +62,7 @@ stdenv.mkDerivation (self: {
     systemd
     wayland
     wayland-protocols
+    wayland-scanner
   ];
 
   dontWrapQtApps = true;
@@ -61,18 +70,28 @@ stdenv.mkDerivation (self: {
   postInstall = ''
     wrapProgramShell $out/bin/hyprland-share-picker \
       "''${qtWrapperArgs[@]}" \
-      --prefix PATH ":" ${lib.makeBinPath [slurp hyprland]}
+      --prefix PATH ":" ${
+        lib.makeBinPath [
+          slurp
+          hyprland
+        ]
+      }
 
     wrapProgramShell $out/libexec/xdg-desktop-portal-hyprland \
-      --prefix PATH ":" ${lib.makeBinPath [(placeholder "out") hyprpicker]}
+      --prefix PATH ":" ${lib.makeBinPath [ (placeholder "out") ]}
   '';
 
-  meta = with lib; {
-    homepage = "https://github.com/hyprwm/xdg-desktop-portal-hyprland";
+  passthru = {
+    updateScript = nix-update-script { };
+  };
+
+  meta = {
     description = "xdg-desktop-portal backend for Hyprland";
+    homepage = "https://github.com/hyprwm/xdg-desktop-portal-hyprland";
+    changelog = "https://github.com/hyprwm/xdg-desktop-portal-hyprland/releases/tag/v${finalAttrs.version}";
     mainProgram = "hyprland-share-picker";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ fufexan ];
-    platforms = platforms.linux;
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ fufexan ];
+    platforms = lib.platforms.linux;
   };
 })
diff --git a/pkgs/applications/window-managers/i3/auto-layout.nix b/pkgs/applications/window-managers/i3/auto-layout.nix
index bfcb35a870c94..ef6c27de438ef 100644
--- a/pkgs/applications/window-managers/i3/auto-layout.nix
+++ b/pkgs/applications/window-managers/i3/auto-layout.nix
@@ -11,7 +11,7 @@ rustPlatform.buildRustPackage rec {
     sha256 = "sha256-gpVYVyh+2y4Tttvw1SuCf7mx/nxR330Ob2R4UmHZSJs=";
   };
 
-  cargoSha256 = "sha256-OxQ7S+Sqc3aRH53Bs53Y+EKOYFgboGOBsQ7KJgICcGo=";
+  cargoHash = "sha256-OxQ7S+Sqc3aRH53Bs53Y+EKOYFgboGOBsQ7KJgICcGo=";
 
   # Currently no tests are implemented, so we avoid building the package twice
   doCheck = false;
diff --git a/pkgs/applications/window-managers/i3/balance-workspace.nix b/pkgs/applications/window-managers/i3/balance-workspace.nix
index bb0ea94e77c34..de68a06d896e2 100644
--- a/pkgs/applications/window-managers/i3/balance-workspace.nix
+++ b/pkgs/applications/window-managers/i3/balance-workspace.nix
@@ -6,7 +6,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-zJdn/Q6r60FQgfehtQfeDkmN0Rz3ZaqgNhiWvjyQFy0=";
+    hash = "sha256-zJdn/Q6r60FQgfehtQfeDkmN0Rz3ZaqgNhiWvjyQFy0=";
   };
 
   propagatedBuildInputs = [ i3ipc ];
diff --git a/pkgs/applications/window-managers/i3/blocks-gaps.nix b/pkgs/applications/window-managers/i3/blocks-gaps.nix
index 1d9043686bb2d..6c32583aa0631 100644
--- a/pkgs/applications/window-managers/i3/blocks-gaps.nix
+++ b/pkgs/applications/window-managers/i3/blocks-gaps.nix
@@ -4,11 +4,9 @@
               "load_average" "memory" "volume" "wifi" ]
 }:
 
-with lib;
-
 let
   perlscripts = [ "battery" "cpu_usage" "openvpn" "temperature" ];
-  contains_any = l1: l2: 0 < length( intersectLists l1 l2 );
+  contains_any = l1: l2: 0 < lib.length( lib.intersectLists l1 l2 );
 
 in
 stdenv.mkDerivation rec {
@@ -25,24 +23,24 @@ stdenv.mkDerivation rec {
   makeFlags = [ "all" ];
   installFlags = [ "PREFIX=\${out}" "VERSION=${version}" ];
 
-  buildInputs = optional (contains_any scripts perlscripts) perl;
+  buildInputs = lib.optional (contains_any scripts perlscripts) perl;
   nativeBuildInputs = [ makeWrapper ];
 
-  postFixup = optionalString (elem "bandwidth" scripts) ''
+  postFixup = lib.optionalString (lib.elem "bandwidth" scripts) ''
     wrapProgram $out/libexec/i3blocks/bandwidth \
-      --prefix PATH : ${makeBinPath [ iproute2 ]}
-  '' + optionalString (elem "battery" scripts) ''
+      --prefix PATH : ${lib.makeBinPath [ iproute2 ]}
+  '' + lib.optionalString (lib.elem "battery" scripts) ''
     wrapProgram $out/libexec/i3blocks/battery \
-      --prefix PATH : ${makeBinPath [ acpi ]}
-  '' + optionalString (elem "cpu_usage" scripts) ''
+      --prefix PATH : ${lib.makeBinPath [ acpi ]}
+  '' + lib.optionalString (lib.elem "cpu_usage" scripts) ''
     wrapProgram $out/libexec/i3blocks/cpu_usage \
-      --prefix PATH : ${makeBinPath [ sysstat ]}
-  '' + optionalString (elem "iface" scripts) ''
+      --prefix PATH : ${lib.makeBinPath [ sysstat ]}
+  '' + lib.optionalString (lib.elem "iface" scripts) ''
     wrapProgram $out/libexec/i3blocks/iface \
-      --prefix PATH : ${makeBinPath [ iproute2 ]}
-  '' + optionalString (elem "volume" scripts) ''
+      --prefix PATH : ${lib.makeBinPath [ iproute2 ]}
+  '' + lib.optionalString (lib.elem "volume" scripts) ''
     wrapProgram $out/libexec/i3blocks/volume \
-      --prefix PATH : ${makeBinPath [ alsa-utils ]}
+      --prefix PATH : ${lib.makeBinPath [ alsa-utils ]}
   '';
 
   meta = with lib; {
diff --git a/pkgs/applications/window-managers/i3/blocks.nix b/pkgs/applications/window-managers/i3/blocks.nix
index d9ed823400d65..ad495723b6db8 100644
--- a/pkgs/applications/window-managers/i3/blocks.nix
+++ b/pkgs/applications/window-managers/i3/blocks.nix
@@ -1,7 +1,5 @@
 { fetchFromGitHub, fetchpatch, lib, stdenv, autoreconfHook, pkg-config }:
 
-with lib;
-
 stdenv.mkDerivation {
   pname = "i3blocks";
   version = "1.5";
@@ -24,7 +22,7 @@ stdenv.mkDerivation {
 
   nativeBuildInputs = [ autoreconfHook pkg-config ];
 
-  meta = {
+  meta = with lib; {
     description = "Flexible scheduler for your i3bar blocks";
     mainProgram = "i3blocks";
     homepage = "https://github.com/vivien/i3blocks";
diff --git a/pkgs/applications/window-managers/i3/bumblebee-status/default.nix b/pkgs/applications/window-managers/i3/bumblebee-status/default.nix
index 6346672181487..99b5b203ee2f3 100644
--- a/pkgs/applications/window-managers/i3/bumblebee-status/default.nix
+++ b/pkgs/applications/window-managers/i3/bumblebee-status/default.nix
@@ -2,6 +2,7 @@
 , lib
 , glibcLocales
 , python
+, fetchpatch
 , fetchFromGitHub
   # Usage: bumblebee-status.override { plugins = p: [p.arandr p.bluetooth2]; };
 , plugins ? p: [ ]
@@ -29,6 +30,15 @@ python.pkgs.buildPythonPackage {
     hash = "sha256-+RCg2XZv0AJnexi7vnQhEXB1qSoKBN1yKWm3etdys1s=";
   };
 
+  patches = [
+    # fix build with Python 3.12
+    # https://github.com/tobi-wan-kenobi/bumblebee-status/pull/1019
+    (fetchpatch {
+      url = "https://github.com/tobi-wan-kenobi/bumblebee-status/commit/2fe8f1ff1444daf155b18318005f33a76a5d64b4.patch";
+      hash = "sha256-BC1cgQDMJkhuEgq8NJ28521CHbEfqIMueHkFXXlZz2w=";
+    })
+  ];
+
   buildInputs = lib.concatMap (p: p.buildInputs or [ ]) selectedPlugins;
   propagatedBuildInputs = lib.concatMap (p: p.propagatedBuildInputs or [ ]) selectedPlugins;
 
diff --git a/pkgs/applications/window-managers/i3/bumblebee-status/plugins.nix b/pkgs/applications/window-managers/i3/bumblebee-status/plugins.nix
index 6a1dda5842072..5810070d2ff43 100644
--- a/pkgs/applications/window-managers/i3/bumblebee-status/plugins.nix
+++ b/pkgs/applications/window-managers/i3/bumblebee-status/plugins.nix
@@ -28,7 +28,7 @@ in
   brightness.propagatedBuildInputs = [ ];
   caffeine.propagatedBuildInputs = [ pkgs.xdg-utils pkgs.xdotool pkgs.xorg.xprop pkgs.libnotify ];
   cmus.propagatedBuildInputs = [ pkgs.cmus ];
-  cpu.propagatedBuildInputs = [ py.psutil pkgs.gnome.gnome-system-monitor ];
+  cpu.propagatedBuildInputs = [ py.psutil pkgs.gnome-system-monitor ];
   cpu2.propagatedBuildInputs = [ py.psutil pkgs.lm_sensors ];
   cpu3.propagatedBuildInputs = [ py.psutil pkgs.lm_sensors ];
   currency.propagatedBuildInputs = [ py.requests ];
@@ -85,8 +85,8 @@ in
   # NOTE: Yes, there is also a plugin named `layout-xkbswitch` with a dash.
   layout_xkbswitch.propagatedBuildInputs = [ pkgs.xkb-switch ];
   libvirtvms.propagatedBuildInputs = [ py.libvirt ];
-  load.propagatedBuildInputs = [ pkgs.gnome.gnome-system-monitor ];
-  memory.propagatedBuildInputs = [ pkgs.gnome.gnome-system-monitor ];
+  load.propagatedBuildInputs = [ pkgs.gnome-system-monitor ];
+  memory.propagatedBuildInputs = [ pkgs.gnome-system-monitor ];
   messagereceiver = { };
   mocp.propagatedBuildInputs = [ pkgs.moc ];
   mpd.propagatedBuildInputs = [ pkgs.mpc-cli ];
diff --git a/pkgs/applications/window-managers/i3/default.nix b/pkgs/applications/window-managers/i3/default.nix
index 16dd2e6485e77..acb05f4ac7713 100644
--- a/pkgs/applications/window-managers/i3/default.nix
+++ b/pkgs/applications/window-managers/i3/default.nix
@@ -1,8 +1,9 @@
 { fetchurl, lib, stdenv, pkg-config, makeWrapper, meson, ninja, installShellFiles, libxcb, xcbutilkeysyms
 , xcbutil, xcbutilwm, xcbutilxrm, libstartup_notification, libX11, pcre2, libev
 , yajl, xcb-util-cursor, perl, pango, perlPackages, libxkbcommon
-, xorgserver, xvfb-run
+, xorgserver, xvfb-run, xdotool, xorg, which
 , asciidoc, xmlto, docbook_xml_dtd_45, docbook_xsl, findXMLCatalogs
+, nixosTests
 }:
 
 stdenv.mkDerivation rec {
@@ -29,27 +30,42 @@ stdenv.mkDerivation rec {
     libstartup_notification libX11 pcre2 libev yajl xcb-util-cursor perl pango
     perlPackages.AnyEventI3 perlPackages.X11XCB perlPackages.IPCRun
     perlPackages.ExtUtilsPkgConfig perlPackages.InlineC
-    xorgserver xvfb-run
+  ] ++ lib.optionals doCheck [
+    xorgserver xvfb-run xdotool xorg.setxkbmap xorg.xrandr which
   ];
 
   configureFlags = [ "--disable-builddir" ];
 
   postPatch = ''
     patchShebangs .
+
+    # This testcase generates a Perl executable file with a shebang, and
+    # patchShebangs can't replace a shebang in the middle of a file.
+    if [ -f testcases/t/318-i3-dmenu-desktop.t ]; then
+      substituteInPlace testcases/t/318-i3-dmenu-desktop.t \
+        --replace-fail "#!/usr/bin/env perl" "#!${perl}/bin/perl"
+    fi
   '';
 
-  # Tests have been failing (at least for some people in some cases)
-  # and have been disabled until someone wants to fix them. Some
-  # initial digging uncovers that the tests call out to `git`, which
-  # they shouldn't, and then even once that's fixed have some
-  # perl-related errors later on. For more, see
-  # https://github.com/NixOS/nixpkgs/issues/7957
-  doCheck = false; # stdenv.hostPlatform.system == "x86_64-linux";
-
-  checkPhase = lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux")
-  ''
-    (cd testcases && xvfb-run ./complete-run.pl -p 1 --keep-xserver-output)
-    ! grep -q '^not ok' testcases/latest/complete-run.log
+  # xvfb-run is available only on Linux
+  doCheck = stdenv.hostPlatform.isLinux;
+
+  checkPhase = ''
+    test_failed=
+    # "| cat" disables fancy progress reporting which makes the log unreadable.
+    ./complete-run.pl -p 1 --keep-xserver-output | cat || test_failed="complete-run.pl returned $?"
+    if [ -z "$test_failed" ]; then
+      # Apparently some old versions of `complete-run.pl` did not return a
+      # proper exit code, so check the log for signs of errors too.
+      grep -q '^not ok' latest/complete-run.log && test_failed="test log contains errors" ||:
+    fi
+    if [ -n "$test_failed" ]; then
+      echo "***** Error: $test_failed"
+      echo "===== Test log ====="
+      cat latest/complete-run.log
+      echo "===== End of test log ====="
+      false
+    fi
   '';
 
   postInstall = ''
@@ -63,6 +79,9 @@ stdenv.mkDerivation rec {
 
   separateDebugInfo = true;
 
+  passthru.tests = { inherit (nixosTests) i3wm; };
+
+
   meta = with lib; {
     description = "Tiling window manager";
     homepage    = "https://i3wm.org";
diff --git a/pkgs/applications/window-managers/i3/i3-ratiosplit.nix b/pkgs/applications/window-managers/i3/i3-ratiosplit.nix
index 0903ceb3185af..ad585ef08885d 100644
--- a/pkgs/applications/window-managers/i3/i3-ratiosplit.nix
+++ b/pkgs/applications/window-managers/i3/i3-ratiosplit.nix
@@ -11,7 +11,7 @@ rustPlatform.buildRustPackage rec {
     sha256 = "0yfmr5zk2c2il9d31yjjbr48sqgcq6hp4a99hl5mjm2ajyhy5bz3";
   };
 
-  cargoSha256 = "134sgc9d0j57swknl9sgil6212rws2hhp92s3cg1yzz5ygx21c76";
+  cargoHash = "sha256-5rAg+vPlfx8eG1qkC6HQPIsgDI1PJ2on16dI0BJ7mow=";
 
   # Currently no tests are implemented, so we avoid building the package twice
   doCheck = false;
diff --git a/pkgs/applications/window-managers/i3/i3-resurrect.nix b/pkgs/applications/window-managers/i3/i3-resurrect.nix
index 015bbee6013f2..2040cdba806a1 100644
--- a/pkgs/applications/window-managers/i3/i3-resurrect.nix
+++ b/pkgs/applications/window-managers/i3/i3-resurrect.nix
@@ -6,7 +6,7 @@ buildPythonApplication rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-13FKRvEE4vHq5G51G1UyBnfNiWeS9Q/SYCG16E1Sn4c=";
+    hash = "sha256-13FKRvEE4vHq5G51G1UyBnfNiWeS9Q/SYCG16E1Sn4c=";
   };
 
   propagatedBuildInputs = [ click psutil xprop natsort i3ipc xdotool importlib-metadata ];
diff --git a/pkgs/applications/window-managers/i3/kitti3.nix b/pkgs/applications/window-managers/i3/kitti3.nix
index 3068baee5d996..4a88518d508bb 100644
--- a/pkgs/applications/window-managers/i3/kitti3.nix
+++ b/pkgs/applications/window-managers/i3/kitti3.nix
@@ -36,6 +36,6 @@ buildPythonApplication rec {
     description = "Kitty drop-down service for sway & i3wm";
     mainProgram = "kitti3";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ Enzime ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/applications/window-managers/i3/layout-manager.nix b/pkgs/applications/window-managers/i3/layout-manager.nix
index b2a3adb98f907..df5bb41d85ecc 100644
--- a/pkgs/applications/window-managers/i3/layout-manager.nix
+++ b/pkgs/applications/window-managers/i3/layout-manager.nix
@@ -35,6 +35,6 @@ stdenv.mkDerivation rec {
     mainProgram = "layout_manager";
     license = licenses.mit;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/applications/window-managers/i3/lock-blur.nix b/pkgs/applications/window-managers/i3/lock-blur.nix
index e3eabc547b5f9..dc8e8250135b6 100644
--- a/pkgs/applications/window-managers/i3/lock-blur.nix
+++ b/pkgs/applications/window-managers/i3/lock-blur.nix
@@ -29,6 +29,6 @@ i3lock-color.overrideAttrs (oldAttrs : rec {
     license = licenses.bsd3;
     maintainers = with maintainers; [ dan4ik605743 ];
     platforms = platforms.all;
-    broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/i3lock-blur.x86_64-darwin
+    broken = stdenv.hostPlatform.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/i3lock-blur.x86_64-darwin
   };
 })
diff --git a/pkgs/applications/window-managers/i3/lock-color.nix b/pkgs/applications/window-managers/i3/lock-color.nix
index 584e13f553697..5a4c12a4474a7 100644
--- a/pkgs/applications/window-managers/i3/lock-color.nix
+++ b/pkgs/applications/window-managers/i3/lock-color.nix
@@ -57,6 +57,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd3;
 
     platforms = platforms.all;
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/applications/window-managers/i3/pystatus.nix b/pkgs/applications/window-managers/i3/pystatus.nix
deleted file mode 100644
index 66450eec6c321..0000000000000
--- a/pkgs/applications/window-managers/i3/pystatus.nix
+++ /dev/null
@@ -1,62 +0,0 @@
-{ lib
-, fetchFromGitHub
-, libpulseaudio
-, libnotify
-, gobject-introspection
-, python3Packages
-, extraLibs ? [] }:
-
-python3Packages.buildPythonApplication rec {
-  # i3pystatus moved to rolling release:
-  # https://github.com/enkore/i3pystatus/issues/584
-  version = "unstable-2020-06-12";
-  pname = "i3pystatus";
-
-  src = fetchFromGitHub {
-    owner = "enkore";
-    repo = "i3pystatus";
-    rev = "dad5eb0c5c8a2ecd20c37ade4732586c6e53f44b";
-    sha256 = "18ygvkl92yr69kxsym57k1mc90asdxpz4b943i61qr0s4fc5n4mq";
-  };
-
-  nativeBuildInputs = [
-    gobject-introspection
-  ];
-
-  buildInputs = [ libpulseaudio libnotify ];
-
-  propagatedBuildInputs = with python3Packages; [
-    keyring colour netifaces psutil basiciw pygobject3
-  ] ++ extraLibs;
-
-  makeWrapperArgs = [
-    # LC_TIME != C results in locale.Error: unsupported locale setting
-    "--set" "LC_TIME" "C"
-    "--suffix" "LD_LIBRARY_PATH" ":" "${lib.makeLibraryPath [ libpulseaudio ]}"
-  ];
-
-  postPatch = ''
-    makeWrapperArgs+=(--set GI_TYPELIB_PATH "$GI_TYPELIB_PATH")
-  '';
-
-  postInstall = ''
-    makeWrapper ${python3Packages.python.interpreter} $out/bin/${pname}-python-interpreter \
-      --prefix PYTHONPATH : "$PYTHONPATH" \
-      ''${makeWrapperArgs[@]}
-  '';
-
-  # no tests in tarball
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://github.com/enkore/i3pystatus";
-    description = "Complete replacement for i3status";
-    longDescription = ''
-      i3pystatus is a growing collection of python scripts for status output compatible
-      to i3status / i3bar of the i3 window manager.
-    '';
-    license = licenses.mit;
-    platforms = platforms.linux;
-    maintainers = [ maintainers.igsha ];
-  };
-}
diff --git a/pkgs/applications/window-managers/i3/rounded.nix b/pkgs/applications/window-managers/i3/rounded.nix
index ee04f4246fefa..45e80f7fb1a7a 100644
--- a/pkgs/applications/window-managers/i3/rounded.nix
+++ b/pkgs/applications/window-managers/i3/rounded.nix
@@ -13,6 +13,9 @@ i3.overrideAttrs (oldAttrs: rec {
 
   buildInputs = oldAttrs.buildInputs ++ [ pcre ];
 
+  # Some tests are failing.
+  doCheck = false;
+
   meta = with lib; {
     description = "Fork of i3-gaps that adds rounding to window corners";
     homepage = "https://github.com/LinoBigatti/i3-rounded";
diff --git a/pkgs/applications/window-managers/i3/status.nix b/pkgs/applications/window-managers/i3/status.nix
index 6c376fab2d4be..9b2bdc31743f2 100644
--- a/pkgs/applications/window-managers/i3/status.nix
+++ b/pkgs/applications/window-managers/i3/status.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "i3status";
-  version = "2.14";
+  version = "2.15";
 
   src = fetchurl {
     url = "https://i3wm.org/i3status/i3status-${version}.tar.xz";
-    sha256 = "0929chhvyq9hg4scpcz8r9zn3s9jvbg6a86k3wqa77qg85rh4kaw";
+    sha256 = "sha256-bGf1LK5PE533ZK0cxzZWK+D5d1B5G8IStT80wG6vIgU=";
   };
 
   nativeBuildInputs = [ meson ninja perl pkg-config asciidoc xmlto docbook_xml_dtd_45 docbook_xsl ];
diff --git a/pkgs/applications/window-managers/i3/swallow.nix b/pkgs/applications/window-managers/i3/swallow.nix
index 31101721e4c45..7b6644d0a9983 100644
--- a/pkgs/applications/window-managers/i3/swallow.nix
+++ b/pkgs/applications/window-managers/i3/swallow.nix
@@ -39,6 +39,6 @@ buildPythonApplication rec {
     license = licenses.mit;
     platforms = platforms.linux;
     mainProgram = "swallow";
-    maintainers = [ maintainers.ivar ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/applications/window-managers/i3/wsr.nix b/pkgs/applications/window-managers/i3/wsr.nix
index e64194ac38170..f282e38b6dcab 100644
--- a/pkgs/applications/window-managers/i3/wsr.nix
+++ b/pkgs/applications/window-managers/i3/wsr.nix
@@ -11,7 +11,7 @@ rustPlatform.buildRustPackage rec {
     sha256 = "sha256-Mq4TpQDiIYePUS3EwBfOe2+QmvF6+WEDK12WahbuhSU=";
   };
 
-  cargoSha256 = "sha256-hybvzHwHM0rQwgZfQpww/w9wQDW5h9P2KSjpAScVTBo=";
+  cargoHash = "sha256-hybvzHwHM0rQwgZfQpww/w9wQDW5h9P2KSjpAScVTBo=";
 
   nativeBuildInputs = [ python3 ];
   buildInputs = [ libxcb ];
diff --git a/pkgs/applications/window-managers/ion-3/default.nix b/pkgs/applications/window-managers/ion-3/default.nix
index 6fb504144b6cf..8b0d3beb1c486 100644
--- a/pkgs/applications/window-managers/ion-3/default.nix
+++ b/pkgs/applications/window-managers/ion-3/default.nix
@@ -25,6 +25,6 @@ stdenv.mkDerivation rec {
     homepage = "https://modeemi.fi/~tuomov/ion";
     platforms = with platforms; linux;
     license = licenses.lgpl21;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/applications/window-managers/jay/default.nix b/pkgs/applications/window-managers/jay/default.nix
index 68644b7535424..9eff972a0c609 100644
--- a/pkgs/applications/window-managers/jay/default.nix
+++ b/pkgs/applications/window-managers/jay/default.nix
@@ -15,16 +15,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "jay";
-  version = "1.3.0";
+  version = "1.5.0";
 
   src = fetchFromGitHub {
     owner = "mahkoh";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-D+dG0/MSC6LzGZBMNofU8WKVYvn52kNWunXExQPoOu8=";
+    sha256 = "sha256-cuXFkG2YwS0w4xzr7jpjr0QmVA5UJfk5SpjIQKxN/LY=";
   };
 
-  cargoHash = "sha256-WEEAFr5lemyOfeIKC9Pvr9sYMz8rLO6k1BFgbxXJ0Pk=";
+  cargoHash = "sha256-w3ARwQlehJq9uNSQmbUjiWik4a2W3Ax/6/BIsdDUfKM=";
 
   SHADERC_LIB_DIR = "${lib.getLib shaderc}/lib";
 
diff --git a/pkgs/applications/window-managers/leftwm/default.nix b/pkgs/applications/window-managers/leftwm/default.nix
index ac9a17a489b75..2518d1fe42958 100644
--- a/pkgs/applications/window-managers/leftwm/default.nix
+++ b/pkgs/applications/window-managers/leftwm/default.nix
@@ -20,7 +20,16 @@ rustPlatform.buildRustPackage rec {
     hash = "sha256-wn5DurPWFwSUtc5naEL4lBSQpKWTJkugpN9mKx+Ed2Y=";
   };
 
-  cargoHash = "sha256-TylRxdpAVuGtZ3Lm8je6FZ0JUwetBi6mOGRoT2M3Jyk=";
+  cargoPatches = [
+    # This pacth can be removed with the next version bump, it just updates the `time` crate
+    ./update-time-crate.patch
+  ];
+
+  # To show the "correct" git-hash in `leftwm-check` we manually set the GIT_HASH env variable
+  # can be remove together with the above patch
+  GIT_HASH = "36609e0 patched";
+
+  cargoHash = "sha256-SNq76pTAPSUGVRp/+fwCjSMP/lKVzh6wU+WZW5n/yjg=";
 
   buildInputs = rpathLibs;
 
@@ -39,7 +48,7 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/leftwm/leftwm";
     license = lib.licenses.mit;
     platforms = lib.platforms.linux;
-    maintainers = with lib.maintainers; [ yanganto ];
+    maintainers = with lib.maintainers; [ vuimuich yanganto ];
     changelog = "https://github.com/leftwm/leftwm/blob/${version}/CHANGELOG.md";
     mainProgram = "leftwm";
   };
diff --git a/pkgs/applications/window-managers/leftwm/update-time-crate.patch b/pkgs/applications/window-managers/leftwm/update-time-crate.patch
new file mode 100644
index 0000000000000..f0c09b20d2868
--- /dev/null
+++ b/pkgs/applications/window-managers/leftwm/update-time-crate.patch
@@ -0,0 +1,57 @@
+From 9358bebb11df19f46d0813723959518498d812b2 Mon Sep 17 00:00:00 2001
+From: VuiMuich <vuimuich@quantentunnel.de>
+Date: Mon, 2 Sep 2024 11:15:27 +0200
+Subject: [PATCH] fix rust 1.80.x for nixpkgs
+
+---
+ Cargo.lock | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/Cargo.lock b/Cargo.lock
+index f8a82eecf..5728b55bf 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -777,6 +777,12 @@ dependencies = [
+  "winapi",
+ ]
+ 
++[[package]]
++name = "num-conv"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
++
+ [[package]]
+ name = "num-traits"
+ version = "0.2.17"
+@@ -1218,13 +1224,14 @@ dependencies = [
+ 
+ [[package]]
+ name = "time"
+-version = "0.3.30"
++version = "0.3.35"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5"
++checksum = "ef89ece63debf11bc32d1ed8d078ac870cbeb44da02afb02a9ff135ae7ca0582"
+ dependencies = [
+  "deranged",
+  "itoa",
+  "libc",
++ "num-conv",
+  "num_threads",
+  "powerfmt",
+  "serde",
+@@ -1240,10 +1247,11 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
+ 
+ [[package]]
+ name = "time-macros"
+-version = "0.2.15"
++version = "0.2.18"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20"
++checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
+ dependencies = [
++ "num-conv",
+  "time-core",
+ ]
+ 
diff --git a/pkgs/applications/window-managers/lwm/default.nix b/pkgs/applications/window-managers/lwm/default.nix
deleted file mode 100644
index 1a2e388bdc349..0000000000000
--- a/pkgs/applications/window-managers/lwm/default.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{ lib, stdenv, fetchurl
-, imake, libX11, libSM, libXext, libICE }:
-
-stdenv.mkDerivation rec {
-  pname = "lwm";
-  version = "1.2.4";
-
-  src = fetchurl {
-    url = "http://www.jfc.org.uk/files/lwm/${pname}-${version}.tar.gz";
-    sha256 = "1bcdr173f0gl61fyl43p3gr145angci7lvjqb8rl00y9f9amvh3y";
-  };
-
-  nativeBuildInputs = [ imake ];
-
-  buildInputs = [ libX11 libSM libXext libICE ];
-
-  dontConfigure = true;
-
-  preBuild = ''
-    sed -i 's|^LOCAL_LIBRARIES.*|& $(ICELIB)|' Imakefile
-    xmkmf
-  '';
-
-  installPhase = ''
-    install -dm755 $out/bin $out/share/man/man1
-    install -m755 lwm $out/bin/lwm
-    install -m644 lwm.man $out/share/man/man1/lwm.1
-  '';
-
-  meta = with lib; {
-    description = "Lightweight Window Manager";
-    longDescription = ''
-      lwm is a window manager for X that tries to keep out of your face. There
-      are no icons, no button bars, no icon docks, no root menus, no nothing: if
-      you want all that, then other programs can provide it. There's no
-      configurability either: if you want that, you want a different window
-      manager; one that helps your operating system in its evil conquest of your
-      disc space and its annexation of your physical memory.
-    '';
-    homepage = "http://www.jfc.org.uk/software/lwm.html";
-    license = licenses.gpl2;
-    maintainers = [ maintainers.AndersonTorres ];
-    platforms = platforms.linux;
-    mainProgram = "lwm";
-  };
-}
diff --git a/pkgs/applications/window-managers/maui-shell/default.nix b/pkgs/applications/window-managers/maui-shell/default.nix
deleted file mode 100644
index 0ac02b0957fa9..0000000000000
--- a/pkgs/applications/window-managers/maui-shell/default.nix
+++ /dev/null
@@ -1,90 +0,0 @@
-{ lib
-, pkgs
-, mkDerivation
-, fetchFromGitHub
-, qtquickcontrols2
-, cmake
-, extra-cmake-modules
-, kio
-, krunner
-, prison
-, knotifyconfig
-, kidletime
-, kpeople
-, kdesu
-, kactivities-stats
-, ktexteditor
-, kinit
-, kunitconversion
-, kitemmodels
-, phonon
-, polkit-qt
-, polkit
-, mauikit
-, mauikit-filebrowsing
-, bluedevil
-, plasma-nm
-, plasma-pa
-, bluez-qt
-, maui-core
-, cask-server
-, mauiman
-, mauikit-calendar
-, qtmultimedia
-}:
-
-mkDerivation rec {
-  pname = "maui-shell";
-  version = "0.6.6";
-
-  src = fetchFromGitHub {
-    owner = "Nitrux";
-    repo = pname;
-    rev = "refs/tags/v${version}";
-    sha256 = "sha256-8D3rlYrqLfyDZQFRSaVlxLaEblbv8w787v8Np2aW3yc=";
-  };
-
-  nativeBuildInputs = [
-    cmake
-    extra-cmake-modules
-  ];
-
-  buildInputs = [
-    bluedevil
-    bluez-qt
-    cask-server
-    kactivities-stats
-    kdesu
-    kidletime
-    kinit
-    kitemmodels
-    knotifyconfig
-    krunner
-    kunitconversion
-    kpeople
-    ktexteditor
-    mauikit
-    mauikit-calendar
-    mauikit-filebrowsing
-    mauiman
-    maui-core
-    phonon
-    plasma-nm
-    plasma-pa
-    polkit
-    polkit-qt
-    prison
-    qtmultimedia
-    qtquickcontrols2
-  ];
-
-  meta = with lib; {
-    description = "Convergent shell for desktops, tablets, and phones";
-    homepage = "https://github.com/Nitrux/maui-shell";
-    license = licenses.lgpl3;
-    maintainers = with maintainers; [ onny ];
-    platforms = platforms.linux;
-    # https://github.com/Nitrux/maui-shell/issues/56
-    broken = true;
-  };
-}
diff --git a/pkgs/applications/window-managers/miriway/default.nix b/pkgs/applications/window-managers/miriway/default.nix
index a51f3838aa3aa..c23f1e799c35b 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 = "0-unstable-2024-05-17";
+  version = "0-unstable-2024-08-31";
 
   src = fetchFromGitHub {
     owner = "Miriway";
     repo = "Miriway";
-    rev = "5be8f60326181b22e111f02918ae5778cf1a89b0";
-    hash = "sha256-dHY0bfVfRpiBY5rPnhmu3aHXx1l9jQhXBtcBbej2JFk=";
+    rev = "2d754931f038865bd91938578b862262f0ce7c00";
+    hash = "sha256-wmtAbajZ859tvLjKuwqFUq05VGLxHNJX1XyIXM6vvgU=";
   };
 
   strictDeps = true;
diff --git a/pkgs/applications/window-managers/owl/default.nix b/pkgs/applications/window-managers/owl/default.nix
index 2bef1b024b3eb..15ba9de7d7537 100644
--- a/pkgs/applications/window-managers/owl/default.nix
+++ b/pkgs/applications/window-managers/owl/default.nix
@@ -9,8 +9,6 @@
 , darwin
 }:
 
-assert wayland.withLibraries;
-
 let
   stdenv = clangStdenv;
 in
@@ -27,7 +25,7 @@ stdenv.mkDerivation {
   };
 
   # use pregenerated nib files because generating them requires Xcode
-  postPatch = lib.optionalString stdenv.isDarwin ''
+  postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
     sed -i "/ibtool/d" configure
     mkdir -p build/Owl.app/Contents/Resources/English.lproj
     cp ${./mac/MainMenu.nib} build/Owl.app/Contents/Resources/English.lproj/MainMenu.nib
@@ -39,10 +37,10 @@ stdenv.mkDerivation {
   nativeBuildInputs = [
     makeWrapper
     wayland-scanner
-  ] ++ lib.optionals stdenv.isDarwin [
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
     darwin.DarwinTools
     darwin.bootstrap_cmds
-  ] ++ lib.optionals (!stdenv.isDarwin) [
+  ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
     gnustep.make
     gnustep.wrapGNUstepAppsHook
   ];
@@ -50,9 +48,9 @@ stdenv.mkDerivation {
   buildInputs = [
     libxkbcommon
     wayland
-  ] ++ lib.optionals stdenv.isDarwin [
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
     darwin.apple_sdk.frameworks.Cocoa
-  ] ++ lib.optionals (!stdenv.isDarwin) [
+  ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
     gnustep.back
     gnustep.base
     gnustep.gui
@@ -66,14 +64,14 @@ stdenv.mkDerivation {
   configureScript = "../configure";
 
   # error: "Your gnustep-base was configured for the objc-nonfragile-abi but you are not using it now."
-  env.NIX_CFLAGS_COMPILE = lib.optionalString (!stdenv.isDarwin) "-fobjc-runtime=gnustep-2.0";
+  env.NIX_CFLAGS_COMPILE = lib.optionalString (!stdenv.hostPlatform.isDarwin) "-fobjc-runtime=gnustep-2.0";
 
   installPhase = ''
     runHook preInstall
 
     mkdir -p $out/{Applications,bin}
     mv Owl.app $out/Applications
-    makeWrapper $out/{Applications/Owl.app${lib.optionalString stdenv.isDarwin "/Contents/MacOS"},bin}/Owl
+    makeWrapper $out/{Applications/Owl.app${lib.optionalString stdenv.hostPlatform.isDarwin "/Contents/MacOS"},bin}/Owl
 
     runHook postInstall
   '';
diff --git a/pkgs/applications/window-managers/phosh/default.nix b/pkgs/applications/window-managers/phosh/default.nix
index 32ece77e4fb04..bba1f204da6ae 100644
--- a/pkgs/applications/window-managers/phosh/default.nix
+++ b/pkgs/applications/window-managers/phosh/default.nix
@@ -6,6 +6,7 @@
 , ninja
 , pkg-config
 , python3
+, wayland-scanner
 , wrapGAppsHook4
 , libadwaita
 , libhandy
@@ -16,8 +17,11 @@
 , evince
 , glib
 , gtk4
-, gnome
+, gnome-bluetooth
+, gnome-control-center
 , gnome-desktop
+, gnome-session
+, gnome-shell
 , gcr
 , pam
 , systemd
@@ -32,16 +36,17 @@
 , libsecret
 , evolution-data-server
 , nixosTests
+, gmobile
 }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "phosh";
-  version = "0.39.0";
+  version = "0.41.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-n1ZegSJAUr1Lbn0+Mx64vHhl4bwSJEdnO1xN/QdEKlw=";
+    hash = "sha256-Oc6Dltjj+2D3LWZz1eYArqEKEJYYqJPSrScEkxyNhX0=";
   };
 
   nativeBuildInputs = [
@@ -50,6 +55,7 @@ stdenv.mkDerivation (finalAttrs: {
     ninja
     pkg-config
     python3
+    wayland-scanner
     wrapGAppsHook4
   ];
 
@@ -67,9 +73,11 @@ stdenv.mkDerivation (finalAttrs: {
     gcr
     networkmanager
     polkit
-    gnome.gnome-control-center
+    gmobile
+    gnome-bluetooth
+    gnome-control-center
     gnome-desktop
-    gnome.gnome-session
+    gnome-session
     gtk4
     pam
     systemd
@@ -87,11 +95,7 @@ stdenv.mkDerivation (finalAttrs: {
   doCheck = false;
 
   mesonFlags = [
-    "-Dsystemd=true"
     "-Dcompositor=${phoc}/bin/phoc"
-    # https://github.com/NixOS/nixpkgs/issues/36468
-    # https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/1363
-    "-Dc_args=-I${glib.dev}/include/gio-unix-2.0"
     # Save some time building if tests are disabled
     "-Dtests=${lib.boolToString finalAttrs.finalPackage.doCheck}"
   ];
@@ -108,8 +112,8 @@ stdenv.mkDerivation (finalAttrs: {
   # Depends on GSettings schemas in gnome-shell
   preFixup = ''
     gappsWrapperArgs+=(
-      --prefix XDG_DATA_DIRS : "${gnome.gnome-shell}/share/gsettings-schemas/${gnome.gnome-shell.name}"
-      --set GNOME_SESSION "${gnome.gnome-session}/bin/gnome-session"
+      --prefix XDG_DATA_DIRS : "${glib.getSchemaDataDirPath gnome-shell}"
+      --set GNOME_SESSION "${gnome-session}/bin/gnome-session"
     )
   '';
 
diff --git a/pkgs/applications/window-managers/phosh/phosh-mobile-settings.nix b/pkgs/applications/window-managers/phosh/phosh-mobile-settings.nix
index 26211ca2f89c6..00a71e457e1df 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
+, fetchFromGitLab
 , nixosTests
 , directoryListingUpdater
 , meson
 , ninja
 , pkg-config
+, wayland-scanner
 , wrapGAppsHook4
 , desktop-file-utils
 , feedbackd
@@ -17,16 +18,20 @@
 , wayland-protocols
 , json-glib
 , gsound
+, gmobile
 }:
 
 stdenv.mkDerivation rec {
   pname = "phosh-mobile-settings";
-  version = "0.38.0";
+  version = "0.41.0";
 
-  src = fetchurl {
-    # This tarball includes the meson wrapped subproject 'gmobile'.
-    url = "https://sources.phosh.mobi/releases/${pname}/${pname}-${version}.tar.xz";
-    hash = "sha256-WDqgVsJx5y6IlWII9fRBsAeWn/tB8BaXRtlPvA0wmMk=";
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    group = "World";
+    owner = "Phosh";
+    repo = "phosh-mobile-settings";
+    rev = "v${version}";
+    hash = "sha256-t5qngjQcjPltUGbcZ+CF5FbZtZkV/cD3xUhuApQbKHo=";
   };
 
   nativeBuildInputs = [
@@ -34,6 +39,7 @@ stdenv.mkDerivation rec {
     ninja
     phosh
     pkg-config
+    wayland-scanner
     wrapGAppsHook4
   ];
 
@@ -47,6 +53,7 @@ stdenv.mkDerivation rec {
     wayland-protocols
     json-glib
     gsound
+    gmobile
   ];
 
   postPatch = ''
diff --git a/pkgs/applications/window-managers/ragnarwm/default.nix b/pkgs/applications/window-managers/ragnarwm/default.nix
index 2cb9f31e7334f..6ffdc8a0a39e2 100644
--- a/pkgs/applications/window-managers/ragnarwm/default.nix
+++ b/pkgs/applications/window-managers/ragnarwm/default.nix
@@ -61,13 +61,13 @@ stdenv.mkDerivation (finalAttrs: {
     providedSessions = [ "ragnar" ];
   };
 
-  meta = with lib; {
+  meta = {
     description = "Minimal, flexible & user-friendly X tiling window manager";
     homepage = "https://ragnar-website.vercel.app";
     changelog = "https://github.com/cococry/Ragnar/releases/tag/${finalAttrs.version}";
-    license = licenses.gpl3Only;
-    maintainers = with maintainers; [ sigmanificient ];
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ sigmanificient ];
     mainProgram = "ragnar";
-    platforms = platforms.linux;
+    platforms = lib.platforms.linux;
   };
 })
diff --git a/pkgs/applications/window-managers/sawfish/default.nix b/pkgs/applications/window-managers/sawfish/default.nix
deleted file mode 100644
index c5bd29d2589fe..0000000000000
--- a/pkgs/applications/window-managers/sawfish/default.nix
+++ /dev/null
@@ -1,89 +0,0 @@
-{ lib
-, stdenv
-, fetchurl
-, autoreconfHook
-, gdk-pixbuf-xlib
-, gettext
-, gtk2-x11
-, libICE
-, libSM
-, libxcrypt
-, libXinerama
-, libXrandr
-, libXtst
-, librep
-, makeWrapper
-, pango
-, pkg-config
-, rep-gtk
-, texinfo
-, which
-}:
-
-stdenv.mkDerivation (finalAttrs: {
-  pname = "sawfish";
-  version = "1.13.0";
-
-  src = fetchurl {
-    url = "https://download.tuxfamily.org/sawfish/sawfish_${finalAttrs.version}.tar.xz";
-    hash = "sha256-gWs8W/pMtQjbH8FEifzNAj3siZzxPd6xm8PmXXhyr10=";
-  };
-
-  nativeBuildInputs = [
-    autoreconfHook
-    gettext
-    librep
-    makeWrapper
-    pkg-config
-    texinfo
-    which
-  ];
-
-  buildInputs = [
-    gdk-pixbuf-xlib
-    gtk2-x11
-    libICE
-    libSM
-    libxcrypt
-    libXinerama
-    libXrandr
-    libXtst
-    librep
-    pango
-    rep-gtk
-  ];
-
-  postPatch = ''
-    sed -e 's|REP_DL_LOAD_PATH=|REP_DL_LOAD_PATH=$(REP_DL_LOAD_PATH):|g' -i Makedefs.in
-    sed -e 's|$(repexecdir)|$(libdir)/rep|g' -i src/Makefile.in
-  '';
-
-  strictDeps = true;
-
-  postInstall = ''
-    for file in $out/lib/sawfish/sawfish-menu \
-             $out/bin/sawfish-about \
-             $out/bin/sawfish-client \
-             $out/bin/sawfish-config \
-             $out/bin/sawfish; do
-      wrapProgram $file \
-        --prefix REP_DL_LOAD_PATH : "$out/lib/rep" \
-        --set REP_LOAD_PATH "$out/share/sawfish/lisp"
-    done
-  '';
-
-  meta = {
-    homepage = "http://sawfish.tuxfamily.org/";
-    description = "Extensible, Lisp-based window manager";
-    longDescription = ''
-      Sawfish is an extensible window manager using a Lisp-based scripting
-      language. Its policy is very minimal compared to most window managers. Its
-      aim is simply to manage windows in the most flexible and attractive manner
-      possible. All high-level WM functions are implemented in Lisp for future
-      extensibility or redefinition.
-    '';
-    license = lib.licenses.gpl2Plus;
-    maintainers = with lib.maintainers; [ AndersonTorres ];
-    platforms = lib.platforms.unix;
-  };
-})
diff --git a/pkgs/applications/window-managers/sommelier/default.nix b/pkgs/applications/window-managers/sommelier/default.nix
index a5b0398d44425..99c6892ba3da1 100644
--- a/pkgs/applications/window-managers/sommelier/default.nix
+++ b/pkgs/applications/window-managers/sommelier/default.nix
@@ -5,13 +5,13 @@
 
 stdenv.mkDerivation {
   pname = "sommelier";
-  version = "125.0";
+  version = "126.0";
 
   src = fetchzip rec {
     url = "https://chromium.googlesource.com/chromiumos/platform2/+archive/${passthru.rev}/vm_tools/sommelier.tar.gz";
-    passthru.rev = "4445ac169a9e043fd260a835384aaa49c457c358";
+    passthru.rev = "fd3798efe23f2edbc48f86f2fbd82ba5059fd875";
     stripRoot = false;
-    sha256 = "1PofODGZDknZpzXI1d3JcoNYz3IGfw32nm+SmUpeqb8=";
+    sha256 = "BmWZnMcK7IGaEAkVPulyb3hngsmuI0D1YtQEbqMjV5c=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/window-managers/spectrwm/default.nix b/pkgs/applications/window-managers/spectrwm/default.nix
index ef1a90fd2b92e..52b413452e827 100644
--- a/pkgs/applications/window-managers/spectrwm/default.nix
+++ b/pkgs/applications/window-managers/spectrwm/default.nix
@@ -1,18 +1,18 @@
-{ lib, stdenv, fetchFromGitHub, pkg-config, xorg }:
+{ lib, stdenv, fetchFromGitHub, libbsd, pkg-config, xorg }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "spectrwm";
-  version = "3.5.1";
+  version = "3.6.0";
 
   src = fetchFromGitHub {
     owner = "conformal";
     repo = "spectrwm";
     rev = "SPECTRWM_${lib.replaceStrings ["."] ["_"] finalAttrs.version}";
-    hash = "sha256-Nlzo35OsNqFbR6nl3nnGXDWmwc8JlP4tyDuIGtKTnIY=";
+    hash = "sha256-Dnn/iIrceiAVuMR8iMGcc7LqNhWC496eT5gNrYOInRU=";
   };
 
   nativeBuildInputs = [ pkg-config ];
-  buildInputs = with xorg; [
+  buildInputs = (with xorg; [
     libXrandr
     libXcursor
     libXft
@@ -20,10 +20,10 @@ stdenv.mkDerivation (finalAttrs: {
     xcbutil
     xcbutilkeysyms
     xcbutilwm
-  ];
+  ] ++ [ libbsd ]);
 
   prePatch = let
-    subdir = if stdenv.isDarwin then "osx" else "linux";
+    subdir = if stdenv.hostPlatform.isDarwin then "osx" else "linux";
   in "cd ${subdir}";
 
   makeFlags = [ "PREFIX=${placeholder "out"}" ];
diff --git a/pkgs/applications/window-managers/tabbed/default.nix b/pkgs/applications/window-managers/tabbed/default.nix
index 068d5c2f82edb..9108eec14c34d 100644
--- a/pkgs/applications/window-managers/tabbed/default.nix
+++ b/pkgs/applications/window-managers/tabbed/default.nix
@@ -26,7 +26,7 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://tools.suckless.org/tabbed";
     description = "Simple generic tabbed fronted to xembed aware applications";
     license = licenses.mit;
-    maintainers = with maintainers; [ vrthra ];
+    maintainers = [ ];
     platforms = platforms.linux;
   };
 })
diff --git a/pkgs/applications/window-managers/taffybar/default.nix b/pkgs/applications/window-managers/taffybar/default.nix
index 062fc2a3771da..16f6d38b222c9 100644
--- a/pkgs/applications/window-managers/taffybar/default.nix
+++ b/pkgs/applications/window-managers/taffybar/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, ghcWithPackages, taffybar, makeWrapper, packages ? (x: []) }:
+{ stdenv, ghcWithPackages, taffybar, makeWrapper, packages ? (x: []) }:
 
 let
   taffybarEnv = ghcWithPackages (self: [
diff --git a/pkgs/applications/window-managers/tinywl/default.nix b/pkgs/applications/window-managers/tinywl/default.nix
index d39373e781929..06d2d8d72f8a3 100644
--- a/pkgs/applications/window-managers/tinywl/default.nix
+++ b/pkgs/applications/window-managers/tinywl/default.nix
@@ -1,5 +1,6 @@
 { lib, stdenv, wlroots, pkg-config, wayland-scanner
 , libxkbcommon, pixman, udev, wayland, wayland-protocols
+, nixosTests
 }:
 
 stdenv.mkDerivation {
@@ -18,6 +19,8 @@ stdenv.mkDerivation {
     runHook postInstall
   '';
 
+  passthru.tests = { inherit (nixosTests) tinywl; };
+
   meta = {
     homepage = "https://gitlab.freedesktop.org/wlroots/wlroots/tree/master/tinywl";
     description = ''A "minimum viable product" Wayland compositor based on wlroots'';
diff --git a/pkgs/applications/window-managers/vwm/default.nix b/pkgs/applications/window-managers/vwm/default.nix
index 7cba387369c7a..0560bb214ba2f 100644
--- a/pkgs/applications/window-managers/vwm/default.nix
+++ b/pkgs/applications/window-managers/vwm/default.nix
@@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
     homepage = "https://vwm.sourceforge.net/";
     description = "Dynamic window manager for the console";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     platforms = platforms.linux;
     mainProgram = "vwm";
   };
diff --git a/pkgs/applications/window-managers/wayfire/default.nix b/pkgs/applications/window-managers/wayfire/default.nix
index e6ed87ffabd32..39dbac8b5289b 100644
--- a/pkgs/applications/window-managers/wayfire/default.nix
+++ b/pkgs/applications/window-managers/wayfire/default.nix
@@ -27,14 +27,14 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "wayfire";
-  version = "0.8.1";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "WayfireWM";
     repo = "wayfire";
     rev = "v${finalAttrs.version}";
     fetchSubmodules = true;
-    hash = "sha256-OPGzPy0I6i3TvmA5KSWDb4Lsf66zM5X+Akckgs3wk2o=";
+    hash = "sha256-xQZ4/UE66IISZQLl702OQXAAr8XmEsA4hJwB7aXua+E=";
   };
 
   nativeBuildInputs = [
@@ -90,7 +90,7 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://wayfire.org/";
     description = "3D Wayland compositor";
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ qyliss wucke13 rewine ];
+    maintainers = with lib.maintainers; [ wucke13 rewine ];
     platforms = lib.platforms.unix;
     mainProgram = "wayfire";
   };
diff --git a/pkgs/applications/window-managers/wayfire/wayfire-plugins-extra.nix b/pkgs/applications/window-managers/wayfire/wayfire-plugins-extra.nix
index 62496c9f86004..5b4161cc45438 100644
--- a/pkgs/applications/window-managers/wayfire/wayfire-plugins-extra.nix
+++ b/pkgs/applications/window-managers/wayfire/wayfire-plugins-extra.nix
@@ -5,6 +5,7 @@
 , ninja
 , pkg-config
 , wayfire
+, wayland-scanner
 , wf-config
 , libevdev
 , libinput
@@ -12,24 +13,24 @@
 , nlohmann_json
 , xcbutilwm
 , gtkmm3
-, gtk-layer-shell
 }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "wayfire-plugins-extra";
-  version = "0.8.1";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "WayfireWM";
     repo = "wayfire-plugins-extra";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-MF4tDzIZnnTXH2ZUxltIw1RP3pfRQFGrc/n9H47yW0g";
+    hash = "sha256-TukDomxqfrM45+C7azfO8jVaqk3E5irdphH8U5IYItg=";
   };
 
   nativeBuildInputs = [
     meson
     ninja
     pkg-config
+    wayland-scanner
   ];
 
   buildInputs = [
@@ -41,7 +42,6 @@ stdenv.mkDerivation (finalAttrs: {
     nlohmann_json
     xcbutilwm
     gtkmm3
-    gtk-layer-shell
   ];
 
   mesonFlags = [
diff --git a/pkgs/applications/window-managers/wayfire/wayfire-shadows.nix b/pkgs/applications/window-managers/wayfire/wayfire-shadows.nix
index fd91d78285dfe..e36f691382ce2 100644
--- a/pkgs/applications/window-managers/wayfire/wayfire-shadows.nix
+++ b/pkgs/applications/window-managers/wayfire/wayfire-shadows.nix
@@ -8,17 +8,19 @@
 , wayfire
 , libxkbcommon
 , libGL
+, libinput
+, xcbutilwm
 }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "wayfire-shadows";
-  version = "unstable-2024-03-28";
+  version = "0-unstable-2024-08-30";
 
   src = fetchFromGitHub {
     owner = "timgott";
     repo = "wayfire-shadows";
-    rev = "81699f6e4be65dcf3f7ad5155dfb4247b37b7997";
-    hash = "sha256-H9pqpHoeDfNBrtVLax57CUXVhU2XT+syAUZTYSJizxw=";
+    rev = "11c8ab63c1cde663a38502c6ecaeec980920c4d1";
+    hash = "sha256-/utqJevG7fn/kX81eDIN/SDvVa3rzNBe1crkHfMx8qo=";
   };
 
   nativeBuildInputs = [
@@ -31,6 +33,8 @@ stdenv.mkDerivation (finalAttrs: {
     wayfire
     libxkbcommon
     libGL
+    libinput
+    xcbutilwm
   ];
 
   env = {
diff --git a/pkgs/applications/window-managers/wayfire/wcm.nix b/pkgs/applications/window-managers/wayfire/wcm.nix
index df1b1cfea9b83..f82dac2e51622 100644
--- a/pkgs/applications/window-managers/wayfire/wcm.nix
+++ b/pkgs/applications/window-managers/wayfire/wcm.nix
@@ -18,14 +18,14 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "wcm";
-  version = "0.8.0";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "WayfireWM";
     repo = "wcm";
     rev = "v${finalAttrs.version}";
     fetchSubmodules = true;
-    hash = "sha256-UwHJ4Wi83ATnA1CQKNSt8Qga7ooLnAY7QARz2FXvUIo=";
+    hash = "sha256-oaaEtyu/9XVhFTkmD7WjScMycpKf+M7oPyQatbY23Vo=";
   };
 
   nativeBuildInputs = [
@@ -55,7 +55,7 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://github.com/WayfireWM/wcm";
     description = "Wayfire Config Manager";
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ qyliss wucke13 rewine ];
+    maintainers = with lib.maintainers; [ wucke13 rewine ];
     platforms = lib.platforms.unix;
     mainProgram = "wcm";
   };
diff --git a/pkgs/applications/window-managers/wayfire/wf-config.nix b/pkgs/applications/window-managers/wayfire/wf-config.nix
index 0151ad66f4c48..a61230dec2f92 100644
--- a/pkgs/applications/window-managers/wayfire/wf-config.nix
+++ b/pkgs/applications/window-managers/wayfire/wf-config.nix
@@ -13,13 +13,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "wf-config";
-  version = "0.8.0";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "WayfireWM";
     repo = "wf-config";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-4QszCGlJqehnavTOdR2vZ95XuHKiNUIsA893sa9qph8=";
+    hash = "sha256-5HejuluCTsRsnHuaMCTnCPkbFvT/IcLkfNGjnXnZjJ0=";
   };
 
   nativeBuildInputs = [
@@ -54,7 +54,7 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://github.com/WayfireWM/wf-config";
     description = "Library for managing configuration files, written for Wayfire";
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ qyliss wucke13 rewine ];
+    maintainers = with lib.maintainers; [ wucke13 rewine ];
     platforms = lib.platforms.unix;
   };
 })
diff --git a/pkgs/applications/window-managers/wayfire/wf-shell.nix b/pkgs/applications/window-managers/wayfire/wf-shell.nix
index 348ef56be5d89..e6d64bd902bc7 100644
--- a/pkgs/applications/window-managers/wayfire/wf-shell.nix
+++ b/pkgs/applications/window-managers/wayfire/wf-shell.nix
@@ -15,14 +15,14 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "wf-shell";
-  version = "0.8.1";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "WayfireWM";
     repo = "wf-shell";
     rev = "v${finalAttrs.version}";
     fetchSubmodules = true;
-    hash = "sha256-/ajFPIk8VJnlu2DzvSyGD3bC4r/pxALTkZeLNvs9dTw=";
+    hash = "sha256-J5KmUxM/mU5I1YfkfwZgbK7VxMTKKKGGvxYS5Rnbqnc=";
   };
 
   nativeBuildInputs = [
@@ -47,7 +47,7 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://github.com/WayfireWM/wf-shell";
     description = "GTK3-based panel for Wayfire";
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ qyliss wucke13 rewine ];
+    maintainers = with lib.maintainers; [ wucke13 rewine ];
     platforms = lib.platforms.unix;
   };
 })
diff --git a/pkgs/applications/window-managers/wayfire/wrapper.nix b/pkgs/applications/window-managers/wayfire/wrapper.nix
index 35bb3ad15837d..a3ec857227176 100644
--- a/pkgs/applications/window-managers/wayfire/wrapper.nix
+++ b/pkgs/applications/window-managers/wayfire/wrapper.nix
@@ -27,6 +27,6 @@ symlinkJoin {
     # To prevent builds on hydra
     hydraPlatforms = [];
     # prefer wrapper over the package
-    priority = (wayfire.meta.priority or 0) - 1;
+    priority = (wayfire.meta.priority or lib.meta.defaultPriority) - 1;
   };
 }
diff --git a/pkgs/applications/window-managers/wayfire/wwp-switcher.nix b/pkgs/applications/window-managers/wayfire/wwp-switcher.nix
index 34252d98dd838..4eb42af6995b7 100644
--- a/pkgs/applications/window-managers/wayfire/wwp-switcher.nix
+++ b/pkgs/applications/window-managers/wayfire/wwp-switcher.nix
@@ -16,13 +16,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "wwp-switcher";
-  version = "unstable-2023-09-09";
+  version = "0-unstable-2024-07-23";
 
   src = fetchFromGitHub {
     owner = "wb9688";
     repo = "wwp-switcher";
-    rev = "04711a0db133a899f507a86e81897296b793b4f3";
-    hash = "sha256-qMyEhSZJNxAoaELKI2h1v59QJnKJzFa76Q4/WtZqpIU";
+    rev = "d0cd97534a2a6355697efecb7bcf8f85f5dc4b5b";
+    hash = "sha256-cU8INUb+JXlSCM7cAOUBU7z7W0IM6pAGN0izGdFYntc=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/window-managers/weston/default.nix b/pkgs/applications/window-managers/weston/default.nix
index c67b760e4df39..e0a76e2195352 100644
--- a/pkgs/applications/window-managers/weston/default.nix
+++ b/pkgs/applications/window-managers/weston/default.nix
@@ -1,10 +1,9 @@
 { lib, stdenv, fetchurl
 , meson, ninja, pkg-config, python3, wayland-scanner
-, cairo, libGL, libdrm, libevdev, libinput, libxkbcommon, mesa, seatd, wayland
-, wayland-protocols, xcbutilcursor
+, cairo, libGL, libdisplay-info, libdrm, libevdev, libinput, libxkbcommon, mesa
+, seatd, wayland, wayland-protocols, xcbutilcursor
 
 , demoSupport ? true
-, hdrSupport ? true, libdisplay-info
 , jpegSupport ? true, libjpeg
 , lcmsSupport ? true, lcms2
 , pangoSupport ? true, pango
@@ -19,27 +18,19 @@
 
 stdenv.mkDerivation rec {
   pname = "weston";
-  version = "13.0.3";
+  version = "14.0.0";
 
   src = fetchurl {
     url = "https://gitlab.freedesktop.org/wayland/weston/-/releases/${version}/downloads/weston-${version}.tar.xz";
-    hash = "sha256-J/aNluO5fZjare8TogI1ZSSST6OBQY+mcWuRNu8JkJM=";
+    hash = "sha256-R/0DJbC5SOmwA6OP306zqFgfP9x0C4kys1roeTv05KU=";
   };
 
-  postPatch = ''
-    # raise neatvnc version bound to 0.8.0
-    # https://gitlab.freedesktop.org/wayland/weston/-/issues/890
-    substituteInPlace libweston/backend-vnc/meson.build \
-      --replace-fail "'neatvnc', version: ['>= 0.7.0', '< 0.8.0']" "'neatvnc', version: ['>= 0.7.0', '<= 0.8.0']"
-  '';
-
   depsBuildBuild = [ pkg-config ];
   nativeBuildInputs = [ meson ninja pkg-config python3 wayland-scanner ];
   buildInputs = [
-    cairo libGL libdrm libevdev libinput libxkbcommon mesa seatd wayland
-    wayland-protocols
-  ] ++ lib.optional hdrSupport libdisplay-info
-    ++ lib.optional jpegSupport libjpeg
+    cairo libGL libdisplay-info libdrm libevdev libinput libxkbcommon mesa seatd
+    wayland wayland-protocols
+  ] ++ lib.optional jpegSupport libjpeg
     ++ lib.optional lcmsSupport lcms2
     ++ lib.optional pangoSupport pango
     ++ lib.optional pipewireSupport pipewire
diff --git a/pkgs/applications/window-managers/xmonad/log-applet/default.nix b/pkgs/applications/window-managers/xmonad/log-applet/default.nix
index c31b3c80b8d4c..2e6d72b91071b 100644
--- a/pkgs/applications/window-managers/xmonad/log-applet/default.nix
+++ b/pkgs/applications/window-managers/xmonad/log-applet/default.nix
@@ -1,7 +1,7 @@
 { lib, stdenv, fetchFromGitHub, pkg-config, autoreconfHook, glib, dbus-glib
 , desktopSupport ? "gnomeflashback", xorg
 , gtk2
-, gtk3, gnome, mate
+, gtk3, gnome-panel, mate
 , libxfce4util, xfce4-panel
 }:
 
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [ glib dbus-glib xorg.xcbutilwm ]
-    ++ lib.optionals (desktopSupport == "gnomeflashback") [ gtk3 gnome.gnome-panel ]
+    ++ lib.optionals (desktopSupport == "gnomeflashback") [ gtk3 gnome-panel ]
     ++ lib.optionals (desktopSupport == "mate") [ gtk3 mate.mate-panel ]
     ++ lib.optionals (desktopSupport == "xfce4") [ gtk2 libxfce4util xfce4-panel ]
   ;
diff --git a/pkgs/applications/window-managers/yabar/build.nix b/pkgs/applications/window-managers/yabar/build.nix
index e68dcdcd0e812..25ab000594aa7 100644
--- a/pkgs/applications/window-managers/yabar/build.nix
+++ b/pkgs/applications/window-managers/yabar/build.nix
@@ -62,12 +62,14 @@ stdenv.mkDerivation {
     }
   '';
 
+  #passthru.tests = { inherit (nixosTests) yabar; }; # nixos currently uses yabar-unstable
+
   meta = with lib; {
     description = "Modern and lightweight status bar for X window managers";
     homepage    = "https://github.com/geommer/yabar";
     license     = licenses.mit;
     platforms   = platforms.linux;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "yabar";
   };
 }
diff --git a/pkgs/applications/window-managers/yabar/unstable.nix b/pkgs/applications/window-managers/yabar/unstable.nix
index 47c8f6c5e5685..cb43c4e0b95ee 100644
--- a/pkgs/applications/window-managers/yabar/unstable.nix
+++ b/pkgs/applications/window-managers/yabar/unstable.nix
@@ -1,4 +1,4 @@
-{ fetchpatch, playerctl, libxkbcommon, callPackage, attrs ? {} }:
+{ fetchpatch, playerctl, libxkbcommon, callPackage, nixosTests, attrs ? {} }:
 
 let
   pkg = callPackage ./build.nix ({
@@ -22,4 +22,11 @@ in pkg.overrideAttrs (o: {
       sha256 = "1q7nd66ai6nr2m6iqxn55gvbr4r5gjc00c8wyjc3riv31qcbqbhv";
     })
   ];
+
+  passthru = (o.passthru or {}) // {
+    tests = (o.passthru.tests or {}) // {
+      inherit (nixosTests) yabar;
+    };
+  };
+
 })