about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/window-managers
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2022-12-06 19:57:55 +0000
committerAlyssa Ross <hi@alyssa.is>2023-02-08 13:48:30 +0000
commitbf3aadfdd39aa197e18bade671fab6726349ffa4 (patch)
tree698567af766ed441d757b57a7b21e68d4a342a2b /nixpkgs/pkgs/applications/window-managers
parentf4afc5a01d9539ce09e47494e679c51f80723d07 (diff)
parent99665eb45f58d959d2cb9e49ddb960c79d596f33 (diff)
downloadnixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.gz
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.bz2
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.lz
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.xz
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.zst
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.zip
Merge commit '99665eb45f58d959d2cb9e49ddb960c79d596f33'
Diffstat (limited to 'nixpkgs/pkgs/applications/window-managers')
-rw-r--r--nixpkgs/pkgs/applications/window-managers/afterstep/default.nix14
-rw-r--r--nixpkgs/pkgs/applications/window-managers/awesome/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/window-managers/berry/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/window-managers/bspwm/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/window-managers/btops/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/window-managers/btops/deps.nix120
-rw-r--r--nixpkgs/pkgs/applications/window-managers/cage/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/window-managers/clfswm/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/window-managers/clfswm/require-clx.patch13
-rw-r--r--nixpkgs/pkgs/applications/window-managers/cwm/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/window-managers/dwl/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/window-managers/e16/default.nix11
-rw-r--r--nixpkgs/pkgs/applications/window-managers/eww/Cargo.lock.patch13
-rw-r--r--nixpkgs/pkgs/applications/window-managers/eww/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/window-managers/fbpanel/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/window-managers/fvwm/2.6.nix82
-rw-r--r--nixpkgs/pkgs/applications/window-managers/fvwm/3.nix99
-rw-r--r--nixpkgs/pkgs/applications/window-managers/fvwm/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/window-managers/gamescope/default.nix91
-rw-r--r--nixpkgs/pkgs/applications/window-managers/gamescope/use-pkgconfig.patch11
-rw-r--r--nixpkgs/pkgs/applications/window-managers/hackedbox/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/window-managers/herbstluftwm/default.nix13
-rw-r--r--nixpkgs/pkgs/applications/window-managers/hyprland/default.nix79
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/blocks-gaps.nix16
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/i3-resurrect.nix4
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/lock-blur.nix12
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/lock.nix23
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/rounded.nix21
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix8
-rw-r--r--nixpkgs/pkgs/applications/window-managers/icewm/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/window-managers/jwm/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/window-managers/kbdd/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/window-managers/labwc/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/window-managers/leftwm/default.nix5
-rw-r--r--nixpkgs/pkgs/applications/window-managers/matchbox/default.nix11
-rw-r--r--nixpkgs/pkgs/applications/window-managers/oroborus/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/window-managers/phosh/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/window-managers/qtile/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/window-managers/shod/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sommelier/default.nix35
-rwxr-xr-xnixpkgs/pkgs/applications/window-managers/sommelier/update.py58
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/bg.nix1
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/contrib.nix9
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/default.nix3
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/idle.nix11
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/lock-effects.nix12
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/lock-fancy.nix6
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/lock.nix13
-rw-r--r--nixpkgs/pkgs/applications/window-managers/sway/wrapper.nix1
-rw-r--r--nixpkgs/pkgs/applications/window-managers/weston/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/window-managers/wmfs/default.nix13
-rw-r--r--nixpkgs/pkgs/applications/window-managers/wmii-hg/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/window-managers/wmii/default.nix72
-rw-r--r--nixpkgs/pkgs/applications/window-managers/xmonad/wrapper.nix2
-rw-r--r--nixpkgs/pkgs/applications/window-managers/xmonad/xmonadctl.nix30
-rw-r--r--nixpkgs/pkgs/applications/window-managers/yeahwm/default.nix5
56 files changed, 1026 insertions, 415 deletions
diff --git a/nixpkgs/pkgs/applications/window-managers/afterstep/default.nix b/nixpkgs/pkgs/applications/window-managers/afterstep/default.nix
index a26f824cd183..4bc757f27212 100644
--- a/nixpkgs/pkgs/applications/window-managers/afterstep/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/afterstep/default.nix
@@ -45,7 +45,19 @@ stdenv.mkDerivation rec {
 
   # A strange type of bug: dbus is not immediately found by pkg-config
   preConfigure = ''
-     export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config dbus-1 --cflags)"
+    # binutils 2.37 fix
+    # https://github.com/afterstep/afterstep/issues/2
+    fixupList=(
+      "autoconf/Makefile.defines.in"
+      "libAfterImage/aftershow/Makefile.in"
+      "libAfterImage/apps/Makefile.in"
+      "libAfterBase/Makefile.in"
+      "libAfterImage/Makefile.in"
+    )
+    for toFix in "''${fixupList[@]}"; do
+      substituteInPlace "$toFix" --replace "clq" "cq"
+    done
+    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config dbus-1 --cflags)"
   '';
 
   # Parallel build fails due to missing dependencies between private libaries:
diff --git a/nixpkgs/pkgs/applications/window-managers/awesome/default.nix b/nixpkgs/pkgs/applications/window-managers/awesome/default.nix
index 90b559e7d44c..b19f17275ad6 100644
--- a/nixpkgs/pkgs/applications/window-managers/awesome/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/awesome/default.nix
@@ -1,4 +1,5 @@
-{ lib, stdenv, fetchFromGitHub, lua, cairo, librsvg, cmake, imagemagick, pkg-config, gdk-pixbuf
+{ lib, stdenv, fetchFromGitHub, fetchpatch
+, lua, cairo, librsvg, cmake, imagemagick, pkg-config, gdk-pixbuf
 , xorg, libstartup_notification, libxdg_basedir, libpthreadstubs
 , xcb-util-cursor, makeWrapper, pango, gobject-introspection
 , which, dbus, nettools, git, doxygen
@@ -27,6 +28,21 @@ stdenv.mkDerivation rec {
     sha256 = "1i7ajmgbsax4lzpgnmkyv35x8vxqi0j84a14k6zys4blx94m9yjf";
   };
 
+  patches = [
+    # Pull upstream fix for -fno-common toolchain support:
+    #   https://github.com/awesomeWM/awesome/pull/3065
+    (fetchpatch {
+      name = "fno-common-prerequisite.patch";
+      url = "https://github.com/awesomeWM/awesome/commit/c5202a48708585cc33528065af8d1b1d28b1a6e0.patch";
+      sha256 = "0sv36xf0ibjcm63gn9k3bl039sqavb2b5i6d65il4bdclkc0n08b";
+    })
+    (fetchpatch {
+      name = "fno-common.patch";
+      url = "https://github.com/awesomeWM/awesome/commit/d256d9055095f27a33696e0aeda4ee20ed4fb1a0.patch";
+      sha256 = "1n3y4wnjra8blss7642jgpxnm9n92zhhjj541bb9i60m4b7bgfzz";
+    })
+  ];
+
   nativeBuildInputs = [
     cmake
     doxygen
diff --git a/nixpkgs/pkgs/applications/window-managers/berry/default.nix b/nixpkgs/pkgs/applications/window-managers/berry/default.nix
index f6ba52013f6f..5c2c7dcb5ce4 100644
--- a/nixpkgs/pkgs/applications/window-managers/berry/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/berry/default.nix
@@ -15,13 +15,13 @@
 
 stdenv.mkDerivation rec {
   pname = "berry";
-  version = "0.1.10";
+  version = "0.1.11";
 
   src = fetchFromGitHub {
     owner = "JLErvin";
     repo = pname;
     rev = version;
-    hash = "sha256-6asph0QXzhmHuYcfrLcQ8RTP4QzX8m6AcCp5ImA++9M=";
+    hash = "sha256-cs1NVwaANMIteCQuGqPcEWuUbfJulhjmfWnlU8Eb2OM=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/window-managers/bspwm/default.nix b/nixpkgs/pkgs/applications/window-managers/bspwm/default.nix
index e7c0eecbf82e..53807e65a3cb 100644
--- a/nixpkgs/pkgs/applications/window-managers/bspwm/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/bspwm/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "A tiling window manager based on binary space partitioning";
     homepage = "https://github.com/baskerville/bspwm";
-    maintainers = with maintainers; [ meisternu epitrochoid ];
+    maintainers = with maintainers; [ meisternu ];
     license = licenses.bsd2;
     platforms = platforms.linux;
   };
diff --git a/nixpkgs/pkgs/applications/window-managers/btops/default.nix b/nixpkgs/pkgs/applications/window-managers/btops/default.nix
deleted file mode 100644
index a837c435204a..000000000000
--- a/nixpkgs/pkgs/applications/window-managers/btops/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib, buildGoPackage, fetchFromGitHub }:
-
-buildGoPackage rec {
-  pname = "btops";
-  version = "0.1.0";
-
-  goPackagePath = "github.com/cmschuetz/btops";
-
-  src = fetchFromGitHub {
-    owner = "cmschuetz";
-    repo = "btops";
-    rev = version;
-    sha256 = "sha256-eE28PGfpmmhcyeSy3PICebAs+cHAZXPxT+S/4+9ukcY=";
-  };
-
-  goDeps = ./deps.nix;
-
-  meta = with lib; {
-    description = "bspwm desktop management that supports dymanic appending, removing, and renaming";
-    homepage = "https://github.com/cmschuetz/btops";
-    maintainers = with maintainers; [ mnacamura ];
-    license = licenses.mit;
-    platforms = platforms.linux;
-  };
-}
diff --git a/nixpkgs/pkgs/applications/window-managers/btops/deps.nix b/nixpkgs/pkgs/applications/window-managers/btops/deps.nix
deleted file mode 100644
index a893d40e2107..000000000000
--- a/nixpkgs/pkgs/applications/window-managers/btops/deps.nix
+++ /dev/null
@@ -1,120 +0,0 @@
-# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
-[
-  {
-    goPackagePath = "github.com/fsnotify/fsnotify";
-    fetch = {
-      type = "git";
-      url = "https://github.com/fsnotify/fsnotify";
-      rev = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9";
-      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
-    };
-  }
-  {
-    goPackagePath = "github.com/hashicorp/hcl";
-    fetch = {
-      type = "git";
-      url = "https://github.com/hashicorp/hcl";
-      rev = "ef8a98b0bbce4a65b5aa4c368430a80ddc533168";
-      sha256 = "1qalfsc31fra7hcw2lc3s20aj7al62fq3j5fn5kga3mg99b82nyr";
-    };
-  }
-  {
-    goPackagePath = "github.com/magiconair/properties";
-    fetch = {
-      type = "git";
-      url = "https://github.com/magiconair/properties";
-      rev = "c2353362d570a7bfa228149c62842019201cfb71";
-      sha256 = "1a10362wv8a8qwb818wygn2z48lgzch940hvpv81hv8gc747ajxn";
-    };
-  }
-  {
-    goPackagePath = "github.com/mitchellh/mapstructure";
-    fetch = {
-      type = "git";
-      url = "https://github.com/mitchellh/mapstructure";
-      rev = "bb74f1db0675b241733089d5a1faa5dd8b0ef57b";
-      sha256 = "1aqk9qr46bwgdc5j7n7als61xvssvyjf4qzfsvhacl4izpygqnw7";
-    };
-  }
-  {
-    goPackagePath = "github.com/pelletier/go-toml";
-    fetch = {
-      type = "git";
-      url = "https://github.com/pelletier/go-toml";
-      rev = "66540cf1fcd2c3aee6f6787dfa32a6ae9a870f12";
-      sha256 = "1n8na0yg90gm0rpifmzrby5r385vvd62cdam3ls7ssy02bjvfw15";
-    };
-  }
-  {
-    goPackagePath = "github.com/spf13/afero";
-    fetch = {
-      type = "git";
-      url = "https://github.com/spf13/afero";
-      rev = "63644898a8da0bc22138abf860edaf5277b6102e";
-      sha256 = "13piahaq4vw1y1sklq5scrsflqx0a8hzmdqfz1fy4871kf2gl8qw";
-    };
-  }
-  {
-    goPackagePath = "github.com/spf13/cast";
-    fetch = {
-      type = "git";
-      url = "https://github.com/spf13/cast";
-      rev = "8965335b8c7107321228e3e3702cab9832751bac";
-      sha256 = "177bk7lq40jbgv9p9r80aydpaccfk8ja3a7jjhfwiwk9r1pa4rr2";
-    };
-  }
-  {
-    goPackagePath = "github.com/spf13/jwalterweatherman";
-    fetch = {
-      type = "git";
-      url = "https://github.com/spf13/jwalterweatherman";
-      rev = "7c0cea34c8ece3fbeb2b27ab9b59511d360fb394";
-      sha256 = "132p84i20b9s5r6fs597lsa6648vd415ch7c0d018vm8smzqpd0h";
-    };
-  }
-  {
-    goPackagePath = "github.com/spf13/pflag";
-    fetch = {
-      type = "git";
-      url = "https://github.com/spf13/pflag";
-      rev = "583c0c0531f06d5278b7d917446061adc344b5cd";
-      sha256 = "0nr4mdpfhhk94hq4ymn5b2sxc47b29p1akxd8b0hx4dvdybmipb5";
-    };
-  }
-  {
-    goPackagePath = "github.com/spf13/viper";
-    fetch = {
-      type = "git";
-      url = "https://github.com/spf13/viper";
-      rev = "15738813a09db5c8e5b60a19d67d3f9bd38da3a4";
-      sha256 = "1mjfzg8zvnxckaq6l8gw99i2msrfqn9yr04dc3b7kd5bpxi6zr4v";
-    };
-  }
-  {
-    goPackagePath = "golang.org/x/sys";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/sys";
-      rev = "7c87d13f8e835d2fb3a70a2912c811ed0c1d241b";
-      sha256 = "03fhkng37rczqwfgah5hd7d373jps3hcfx79dmky2fh62yvpcyn3";
-    };
-  }
-  {
-    goPackagePath = "golang.org/x/text";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/text";
-      rev = "5c1cf69b5978e5a34c5f9ba09a83e56acc4b7877";
-      sha256 = "03br8p1sb1ffr02l8hyrgcyib7ms0z06wy3v4r1dj2l6q4ghwzfs";
-    };
-  }
-  {
-    goPackagePath = "gopkg.in/yaml.v2";
-    fetch = {
-      type = "git";
-      url = "https://gopkg.in/yaml.v2";
-      rev = "5420a8b6744d3b0345ab293f6fcba19c978f1183";
-      sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1";
-    };
-  }
-]
diff --git a/nixpkgs/pkgs/applications/window-managers/cage/default.nix b/nixpkgs/pkgs/applications/window-managers/cage/default.nix
index 963f86768832..c1ef0a7fd268 100644
--- a/nixpkgs/pkgs/applications/window-managers/cage/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/cage/default.nix
@@ -17,6 +17,10 @@ stdenv.mkDerivation rec {
     sha256 = "0vm96gxinhy48m3x9p1sfldyd03w3gk6iflb7n9kn06j1vqyswr6";
   };
 
+  depsBuildBuild = [
+    pkg-config
+  ];
+
   nativeBuildInputs = [ meson ninja pkg-config wayland-scanner scdoc makeWrapper ];
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/applications/window-managers/clfswm/default.nix b/nixpkgs/pkgs/applications/window-managers/clfswm/default.nix
deleted file mode 100644
index 9984e8788460..000000000000
--- a/nixpkgs/pkgs/applications/window-managers/clfswm/default.nix
+++ /dev/null
@@ -1,51 +0,0 @@
-{ lib, stdenv, fetchgit, autoconf, sbcl, lispPackages, xdpyinfo, texinfo4
-, makeWrapper }:
-
-stdenv.mkDerivation {
-  pname = "clfswm";
-  version = "unstable-2016-11-12";
-
-  src = fetchgit {
-    url = "https://gitlab.common-lisp.net/clfswm/clfswm.git";
-    rev = "3c7721dba6339ebb4f8c8d7ce2341740fa86f837";
-    sha256 = "0hynzh3a1zr719cxfb0k4cvh5lskzs616hwn7p942isyvhwzhynd";
-  };
-
-  buildInputs = [
-    texinfo4 makeWrapper autoconf
-    sbcl
-    lispPackages.clx
-    lispPackages.cl-ppcre
-    xdpyinfo
-  ];
-
-  patches = [ ./require-clx.patch ];
-
-  # Stripping destroys the generated SBCL image
-  dontStrip = true;
-
-  configurePhase = ''
-    substituteInPlace load.lisp --replace \
-      ";; (setf *contrib-dir* \"/usr/local/lib/clfswm/\")" \
-      "(setf *contrib-dir* \"$out/lib/clfswm/\")"
-  '';
-
-  installPhase = ''
-    mkdir -pv $out/bin
-    make DESTDIR=$out install
-
-    # Paths in the compressed image $out/bin/clfswm are not
-    # recognized by Nix. Add explicit reference here.
-    mkdir $out/nix-support
-    echo ${xdpyinfo} ${lispPackages.clx} ${lispPackages.cl-ppcre} > $out/nix-support/depends
-  '';
-
-  meta = with lib; {
-    description = "A(nother) Common Lisp FullScreen Window Manager";
-    homepage    = "https://common-lisp.net/project/clfswm/";
-    license     = licenses.gpl3;
-    maintainers = with maintainers; [ robgssp ];
-    platforms   = platforms.linux;
-    broken      = true;
-  };
-}
diff --git a/nixpkgs/pkgs/applications/window-managers/clfswm/require-clx.patch b/nixpkgs/pkgs/applications/window-managers/clfswm/require-clx.patch
deleted file mode 100644
index ae2234461d25..000000000000
--- a/nixpkgs/pkgs/applications/window-managers/clfswm/require-clx.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/load.lisp b/load.lisp
-index c8c4cf0..8c9ca2e 100644
---- a/load.lisp
-+++ b/load.lisp
-@@ -111,6 +111,8 @@ from $XDG_CONFIG_HOME/clfswm/clfswmrc")
- ;;;------------------
- (load-info "Requiring CLX")
- 
-+(require 'clx)
-+
- ;;; Loading clisp dynamic module. This part needs clisp >= 2.50
- ;;#+(AND CLISP (not CLX))
- ;;(when (fboundp 'require)
diff --git a/nixpkgs/pkgs/applications/window-managers/cwm/default.nix b/nixpkgs/pkgs/applications/window-managers/cwm/default.nix
index 24c595081573..37abe5c154ee 100644
--- a/nixpkgs/pkgs/applications/window-managers/cwm/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/cwm/default.nix
@@ -3,13 +3,13 @@
 stdenv.mkDerivation rec {
 
   pname = "cwm";
-  version = "6.7";
+  version = "7.1";
 
   src = fetchFromGitHub {
     owner = "leahneukirchen";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0f9xmki2hx10k8iisfzc7nm1l31zkf1r06pdgn06ar9w9nizrld9";
+    sha256 = "sha256-lkjsxGMXOrnu4cUiV/TO7yzd9FzM297MhaFKauqmiHo=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/nixpkgs/pkgs/applications/window-managers/dwl/default.nix b/nixpkgs/pkgs/applications/window-managers/dwl/default.nix
index bfc360e81bbd..95170b79326d 100644
--- a/nixpkgs/pkgs/applications/window-managers/dwl/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/dwl/default.nix
@@ -21,13 +21,13 @@ in
 
 stdenv.mkDerivation rec {
   pname = "dwl";
-  version = "0.2.2";
+  version = "0.3.1";
 
   src = fetchFromGitHub {
     owner = "djpohly";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-T2GqDehBNO8eublqZUmA5WADjnwElzT+bp9Dp1bqSgg=";
+    hash = "sha256-VHxBjjnzJNmtJxrm3ywJzvt2bNHGk/Cx8TICw6SaoiQ=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/nixpkgs/pkgs/applications/window-managers/e16/default.nix b/nixpkgs/pkgs/applications/window-managers/e16/default.nix
index 37a4f7c94361..053b01cb2258 100644
--- a/nixpkgs/pkgs/applications/window-managers/e16/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/e16/default.nix
@@ -16,15 +16,16 @@
 , libsndfile
 , pango
 , perl
+, gitUpdater
 }:
 
 stdenv.mkDerivation rec {
   pname = "e16";
-  version = "1.0.24";
+  version = "1.0.25";
 
   src = fetchurl {
     url = "mirror://sourceforge/enlightenment/e16-${version}.tar.xz";
-    sha256 = "1anmwfjyynwl0ylkyksa7bnsqzf58l1yccjzp3kbwq6nw1gs7dbv";
+    hash = "sha256-rUtDaBa4vvC3gO7QSkFrphWuVOmbtkH+pRujQDaUOek=";
   };
 
   nativeBuildInputs = [
@@ -52,6 +53,12 @@ stdenv.mkDerivation rec {
     substituteInPlace scripts/e_gen_menu --replace "/usr/local:" "/run/current-system/sw:/usr/local:"
   '';
 
+  passthru.updateScript = gitUpdater {
+    inherit pname version;
+    url = "https://git.enlightenment.org/e16/e16";
+    rev-prefix = "v";
+  };
+
   meta = with lib; {
     homepage = "https://www.enlightenment.org/e16";
     description = "Enlightenment DR16 window manager";
diff --git a/nixpkgs/pkgs/applications/window-managers/eww/Cargo.lock.patch b/nixpkgs/pkgs/applications/window-managers/eww/Cargo.lock.patch
new file mode 100644
index 000000000000..50241230bb42
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/eww/Cargo.lock.patch
@@ -0,0 +1,13 @@
+diff --git a/Cargo.lock b/Cargo.lock
+index 9ae7ab9..c810728 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -403,7 +403,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "eww"
+-version = "0.2.0"
++version = "0.3.0"
+ dependencies = [
+  "anyhow",
+  "bincode",
diff --git a/nixpkgs/pkgs/applications/window-managers/eww/default.nix b/nixpkgs/pkgs/applications/window-managers/eww/default.nix
index e593a95a1519..fe914f5a9823 100644
--- a/nixpkgs/pkgs/applications/window-managers/eww/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/eww/default.nix
@@ -10,16 +10,18 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "eww";
-  version = "0.2.0";
+  version = "0.3.0";
 
   src = fetchFromGitHub {
     owner = "elkowar";
     repo = pname;
     rev = "v${version}";
-    sha256 = "050zc3w1z9f2vg6sz86mdxf345gd3s3jf09gf4y8y1mqkzs86b8x";
+    sha256 = "055il2b3k8x6mrrjin6vkajpksc40phcp4j1iq0pi8v3j7zsfk1a";
   };
 
-  cargoSha256 = "sha256-LejnTVv9rhL9CVW1fgj2gFv4amHQeziu5uaH2ae8AAw=";
+  cargoSha256 = "sha256-3hGA730g8E4rwQ9V0wSLUcAEmockXi+spwp50cgf0Mw=";
+
+  cargoPatches = [ ./Cargo.lock.patch ];
 
   nativeBuildInputs = [ pkg-config ];
 
diff --git a/nixpkgs/pkgs/applications/window-managers/fbpanel/default.nix b/nixpkgs/pkgs/applications/window-managers/fbpanel/default.nix
index 1a87f29f67cd..33a313eb8eec 100644
--- a/nixpkgs/pkgs/applications/window-managers/fbpanel/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/fbpanel/default.nix
@@ -19,6 +19,10 @@ stdenv.mkDerivation rec {
       --replace "CFLAGSX =" "CFLAGSX = -I${gdk-pixbuf-xlib.dev}/include/gdk-pixbuf-2.0"
   '';
 
+  # Workaround build failure on -fno-common toolchains like upstream
+  # gcc-10. Otherwise build fails as:
+  #   ld: plugin.o:(.bss+0x0): multiple definition of `stam'; panel.o:(.bss+0x20): first defined here
+  NIX_CFLAGS_COMPILE = "-fcommon";
   NIX_LDFLAGS="-lX11";
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/window-managers/fvwm/2.6.nix b/nixpkgs/pkgs/applications/window-managers/fvwm/2.6.nix
new file mode 100644
index 000000000000..44dde60ac05d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/fvwm/2.6.nix
@@ -0,0 +1,82 @@
+{ 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.6.9";
+
+  src = fetchFromGitHub {
+    owner = "fvwmorg";
+    repo = pname;
+    rev = version;
+    hash = "sha256-sBVOrrl2WrZ2wWN/r1kDUtR+tPwXgDoSJDaxGeFkXJI=";
+  };
+
+  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/nixpkgs/pkgs/applications/window-managers/fvwm/3.nix b/nixpkgs/pkgs/applications/window-managers/fvwm/3.nix
new file mode 100644
index 000000000000..e68f93bf836c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/fvwm/3.nix
@@ -0,0 +1,99 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, asciidoctor
+, autoreconfHook
+, cairo
+, fontconfig
+, freetype
+, fribidi
+, imlib
+, 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.4";
+
+  src = fetchFromGitHub {
+    owner = "fvwmorg";
+    repo = "fvwm3";
+    rev = finalAttrs.version;
+    hash = "sha256-ByMSX4nwXkp+ly39C2+cYy3e9B0vnGcJlyIiS7V6zoI=";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    asciidoctor
+    pkg-config
+    python3Packages.wrapPython
+  ];
+
+  buildInputs = [
+    cairo
+    fontconfig
+    freetype
+    fribidi
+    imlib
+    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/nixpkgs/pkgs/applications/window-managers/fvwm/default.nix b/nixpkgs/pkgs/applications/window-managers/fvwm/default.nix
deleted file mode 100644
index 07c3573fb2a7..000000000000
--- a/nixpkgs/pkgs/applications/window-managers/fvwm/default.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-{ autoreconfHook, enableGestures ? false, lib, stdenv, fetchFromGitHub
-, pkg-config, cairo, fontconfig, freetype, libXft, libXcursor, libXinerama
-, libXpm, libXt, librsvg, libpng, fribidi, perl, libstroke, readline, libxslt }:
-
-stdenv.mkDerivation rec {
-  pname = "fvwm";
-  version = "2.6.9";
-
-  src = fetchFromGitHub {
-    owner = "fvwmorg";
-    repo = pname;
-    rev = version;
-    sha256 = "14jwckhikc9n4h93m00pzjs7xm2j0dcsyzv3q5vbcnknp6p4w5dh";
-  };
-
-  nativeBuildInputs = [ autoreconfHook pkg-config ];
-  buildInputs = [
-    cairo
-    fontconfig
-    freetype
-    libXft
-    libXcursor
-    libXinerama
-    libXpm
-    libXt
-    librsvg
-    libpng
-    fribidi
-    perl
-    readline
-    libxslt
-  ] ++ lib.optional enableGestures libstroke;
-
-  configureFlags = [ "--enable-mandoc" "--disable-htmldoc" ];
-
-  meta = {
-    homepage = "http://fvwm.org";
-    description = "A multiple large virtual desktop window manager";
-    license = lib.licenses.gpl2Plus;
-    platforms = lib.platforms.linux;
-    maintainers = with lib.maintainers; [ edanaher ];
-  };
-}
diff --git a/nixpkgs/pkgs/applications/window-managers/gamescope/default.nix b/nixpkgs/pkgs/applications/window-managers/gamescope/default.nix
new file mode 100644
index 000000000000..2d271893b842
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/gamescope/default.nix
@@ -0,0 +1,91 @@
+{ stdenv
+, fetchFromGitHub
+, meson
+, pkg-config
+, ninja
+, xorg
+, libdrm
+, vulkan-loader
+, wayland
+, wayland-protocols
+, libxkbcommon
+, libcap
+, SDL2
+, pipewire
+, udev
+, pixman
+, libinput
+, libseat
+, xwayland
+, glslang
+, stb
+, wlroots
+, libliftoff
+, lib
+, makeBinaryWrapper
+}:
+let
+  pname = "gamescope";
+  version = "3.11.33-jupiter-3.3-2";
+in
+stdenv.mkDerivation {
+  inherit pname version;
+
+  src = fetchFromGitHub {
+    owner = "Plagman";
+    repo = "gamescope";
+    rev = "refs/tags/${version}";
+    hash = "sha256-6/gTsQGZDQPCdmXe5EI9QcT/MkdTf6odsI2/+g/W7Qc=";
+  };
+
+  patches = [ ./use-pkgconfig.patch ];
+
+  nativeBuildInputs = [
+    meson
+    pkg-config
+    ninja
+    makeBinaryWrapper
+  ];
+
+  buildInputs = [
+    xorg.libXdamage
+    xorg.libXcomposite
+    xorg.libXrender
+    xorg.libXext
+    xorg.libXxf86vm
+    xorg.libXtst
+    xorg.libXres
+    xorg.libXi
+    libdrm
+    libliftoff
+    vulkan-loader
+    glslang
+    SDL2
+    wayland
+    wayland-protocols
+    wlroots
+    xwayland
+    libseat
+    libinput
+    libxkbcommon
+    udev
+    pixman
+    pipewire
+    libcap
+    stb
+  ];
+
+  # --debug-layers flag expects these in the path
+  postInstall = ''
+    wrapProgram "$out/bin/gamescope" \
+     --prefix PATH : ${with xorg; lib.makeBinPath [xprop xwininfo]}
+  '';
+
+  meta = with lib; {
+    description = "SteamOS session compositing window manager";
+    homepage = "https://github.com/Plagman/gamescope";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ nrdxp ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/gamescope/use-pkgconfig.patch b/nixpkgs/pkgs/applications/window-managers/gamescope/use-pkgconfig.patch
new file mode 100644
index 000000000000..29345952433e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/gamescope/use-pkgconfig.patch
@@ -0,0 +1,11 @@
+diff --git a/meson.build b/meson.build
+index 1311784..77043ac 100644
+--- a/meson.build
++++ b/meson.build
+@@ -6,7 +6,6 @@ project(
+   default_options: [
+     'cpp_std=c++14',
+     'warning_level=2',
+-    'force_fallback_for=wlroots,libliftoff',
+   ],
+ )
diff --git a/nixpkgs/pkgs/applications/window-managers/hackedbox/default.nix b/nixpkgs/pkgs/applications/window-managers/hackedbox/default.nix
new file mode 100644
index 000000000000..0f608b83a70a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/hackedbox/default.nix
@@ -0,0 +1,61 @@
+{ 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
+  ];
+
+  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 = "A bastard hacked offspring of Blackbox";
+    homepage = "http://github.com/museoa/hackedbox/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ AndersonTorres ];
+    inherit (libX11.meta) platforms;
+  };
+})
diff --git a/nixpkgs/pkgs/applications/window-managers/herbstluftwm/default.nix b/nixpkgs/pkgs/applications/window-managers/herbstluftwm/default.nix
index 2ed6bc303668..b46179599cd3 100644
--- a/nixpkgs/pkgs/applications/window-managers/herbstluftwm/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/herbstluftwm/default.nix
@@ -1,14 +1,14 @@
-{ lib, stdenv, fetchurl, cmake, pkg-config, python3, libX11, libXext, libXinerama, libXrandr, libXft, libXrender, freetype, asciidoc
+{ lib, stdenv, fetchurl, cmake, pkg-config, python3, libX11, libXext, libXinerama, libXrandr, libXft, libXrender, libXdmcp, libXfixes, freetype, asciidoc
 , xdotool, xorgserver, xsetroot, xterm, runtimeShell
 , nixosTests }:
 
 stdenv.mkDerivation rec {
   pname = "herbstluftwm";
-  version = "0.9.3";
+  version = "0.9.5";
 
   src = fetchurl {
     url = "https://herbstluftwm.org/tarballs/herbstluftwm-${version}.tar.gz";
-    sha256 = "01f1bv9axjhw1l2gwhdwahljssj0h8q7a1bqwbpnwvln0ayv39qb";
+    sha256 = "sha256-stRgCQnlvs5a1jgY37MLsZ/SrJ9ShHsaenStQEBxgQU=";
   };
 
   outputs = [
@@ -37,6 +37,8 @@ stdenv.mkDerivation rec {
     libXrandr
     libXft
     libXrender
+    libXdmcp
+    libXfixes
     freetype
   ];
 
@@ -75,7 +77,10 @@ stdenv.mkDerivation rec {
 
   pytestFlagsArray = [ "../tests" ];
   disabledTests = [
-    "test_title_different_letters_are_drawn"
+    "test_title_different_letters_are_drawn" # font problems
+    "test_completable_commands" # font problems
+    "test_autostart" # $PATH problems
+    "test_wmexec_to_other" # timeouts in sandbox
   ];
 
   passthru = {
diff --git a/nixpkgs/pkgs/applications/window-managers/hyprland/default.nix b/nixpkgs/pkgs/applications/window-managers/hyprland/default.nix
new file mode 100644
index 000000000000..50b52a01d604
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/hyprland/default.nix
@@ -0,0 +1,79 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, pkg-config
+, libdrm
+, libinput
+, libxcb
+, libxkbcommon
+, mesa
+, pango
+, wayland
+, wayland-protocols
+, wayland-scanner
+, wlroots
+, xcbutilwm
+}:
+
+stdenv.mkDerivation rec {
+  pname = "hyprland";
+  version = "0.6.1beta";
+
+  # When updating Hyprland, the overridden wlroots commit must be bumped to match the commit upstream uses.
+  src = fetchFromGitHub {
+    owner = "hyprwm";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-0Msqe2ErAJvnO1zHoB2k6TkDhTYnHRGkvJrfSG12dTU=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    wayland-scanner
+  ];
+
+  buildInputs = [
+    libdrm
+    libinput
+    libxcb
+    libxkbcommon
+    mesa
+    pango
+    wayland
+    wayland-protocols
+    wlroots
+    xcbutilwm
+  ];
+
+  # build with system wlroots
+  postPatch = ''
+    sed -Ei 's/"\.\.\/wlroots\/include\/([a-zA-Z0-9./_-]+)"/<\1>/g' src/includes.hpp
+  '';
+
+  preConfigure = ''
+    make protocols
+  '';
+
+  postBuild = ''
+    pushd ../hyprctl
+    $CXX -std=c++20 -w ./main.cpp -o ./hyprctl
+    popd
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -m755 ./Hyprland $out/bin
+    install -m755 ../hyprctl/hyprctl $out/bin
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/vaxerski/Hyprland";
+    description = "A dynamic tiling Wayland compositor that doesn't sacrifice on its looks";
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ wozeparrot ];
+    mainProgram = "Hyprland";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/blocks-gaps.nix b/nixpkgs/pkgs/applications/window-managers/i3/blocks-gaps.nix
index 4acc2fb669c6..deb0c99c313a 100644
--- a/nixpkgs/pkgs/applications/window-managers/i3/blocks-gaps.nix
+++ b/nixpkgs/pkgs/applications/window-managers/i3/blocks-gaps.nix
@@ -28,17 +28,21 @@ stdenv.mkDerivation rec {
   buildInputs = optional (contains_any scripts perlscripts) perl;
   nativeBuildInputs = [ makeWrapper ];
 
-  postFixup = ''
+  postFixup = optionalString (elem "bandwidth" scripts) ''
     wrapProgram $out/libexec/i3blocks/bandwidth \
-      --prefix PATH : ${makeBinPath (optional (elem "bandwidth" scripts) iproute2)}
+      --prefix PATH : ${makeBinPath [ iproute2 ]}
+  '' + optionalString (elem "battery" scripts) ''
     wrapProgram $out/libexec/i3blocks/battery \
-      --prefix PATH : ${makeBinPath (optional (elem "battery" scripts) acpi)}
+      --prefix PATH : ${makeBinPath [ acpi ]}
+  '' + optionalString (elem "cpu_usage" scripts) ''
     wrapProgram $out/libexec/i3blocks/cpu_usage \
-      --prefix PATH : ${makeBinPath (optional (elem "cpu_usage" scripts) sysstat)}
+      --prefix PATH : ${makeBinPath [ sysstat ]}
+  '' + optionalString (elem "iface" scripts) ''
     wrapProgram $out/libexec/i3blocks/iface \
-      --prefix PATH : ${makeBinPath (optional (elem "iface" scripts) iproute2)}
+      --prefix PATH : ${makeBinPath [ iproute2 ]}
+  '' + optionalString (elem "volume" scripts) ''
     wrapProgram $out/libexec/i3blocks/volume \
-      --prefix PATH : ${makeBinPath (optional (elem "volume" scripts) alsa-utils)}
+      --prefix PATH : ${makeBinPath [ alsa-utils ]}
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/i3-resurrect.nix b/nixpkgs/pkgs/applications/window-managers/i3/i3-resurrect.nix
index a765d2e298ed..a84d97504bbb 100644
--- a/nixpkgs/pkgs/applications/window-managers/i3/i3-resurrect.nix
+++ b/nixpkgs/pkgs/applications/window-managers/i3/i3-resurrect.nix
@@ -2,11 +2,11 @@
 
 buildPythonApplication rec {
   pname = "i3-resurrect";
-  version = "1.4.3";
+  version = "1.4.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0h181frdwpqfj9agw43qgicdvzv1i7xwky0vs0ksd8h18qxqp4hr";
+    sha256 = "sha256-13FKRvEE4vHq5G51G1UyBnfNiWeS9Q/SYCG16E1Sn4c=";
   };
 
   propagatedBuildInputs = [ click psutil xprop natsort i3ipc xdotool importlib-metadata ];
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/lock-blur.nix b/nixpkgs/pkgs/applications/window-managers/i3/lock-blur.nix
index 4018a34b571a..47875ec47c32 100644
--- a/nixpkgs/pkgs/applications/window-managers/i3/lock-blur.nix
+++ b/nixpkgs/pkgs/applications/window-managers/i3/lock-blur.nix
@@ -1,4 +1,4 @@
-{ i3lock-color, lib, stdenv, fetchFromGitHub }:
+{ i3lock-color, lib, stdenv, fetchFromGitHub, fetchpatch }:
 
 i3lock-color.overrideAttrs (oldAttrs : rec {
   pname = "i3lock-blur";
@@ -11,6 +11,16 @@ i3lock-color.overrideAttrs (oldAttrs : rec {
     sha256 = "sha256-rBQHYVD9rurzTEXrgEnOziOP22D2EePC1+EV9Wi2pa0=";
   };
 
+  patches = [
+    # Pull patch pending upstream inclusion for -fno-common toolchain
+    # support: https://github.com/karulont/i3lock-blur/pull/22
+    (fetchpatch {
+      name = "fno-common.patch";
+      url = "https://github.com/karulont/i3lock-blur/commit/ec8fe0e7f7d78bf445602ed517efd5c324bb32f7.patch";
+      sha256 = "sha256-0hXUr+ZEB1tpI3xw80/hGzKyeGuna4CQmEvK6t0VBqU=";
+    })
+  ];
+
   meta = with lib; {
     description = "An improved screenlocker based upon XCB and PAM with background blurring filter";
     homepage = "https://github.com/karulont/i3lock-blur/";
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/lock.nix b/nixpkgs/pkgs/applications/window-managers/i3/lock.nix
index 03506e889d7f..2c0a481676ff 100644
--- a/nixpkgs/pkgs/applications/window-managers/i3/lock.nix
+++ b/nixpkgs/pkgs/applications/window-managers/i3/lock.nix
@@ -1,26 +1,21 @@
-{ fetchurl, lib, stdenv, which, pkg-config, libxcb, xcbutilkeysyms, xcbutilimage,
+{ stdenv, lib, fetchFromGitHub, meson, ninja, pkg-config, libxcb, xcbutilkeysyms, xcbutilimage,
   xcbutilxrm, pam, libX11, libev, cairo, libxkbcommon, libxkbfile }:
 
 stdenv.mkDerivation rec {
   pname = "i3lock";
-  version = "2.13";
+  version = "2.14.1";
 
-  src = fetchurl {
-    url = "https://i3wm.org/i3lock/${pname}-${version}.tar.bz2";
-    sha256 = "02szjsaz7rqrdkd0r2nwgwa85c4hwfrcskxw7ryk695kmjcfhzv3";
+  src = fetchFromGitHub {
+    owner = "i3";
+    repo = "i3lock";
+    rev = version;
+    sha256 = "sha256-cC908c47fkU6msLqZSxpEbKxO1/PatH81QeuCzBSZGw=";
   };
 
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ which libxcb xcbutilkeysyms xcbutilimage xcbutilxrm
+  nativeBuildInputs = [ meson ninja pkg-config ];
+  buildInputs = [ libxcb xcbutilkeysyms xcbutilimage xcbutilxrm
     pam libX11 libev cairo libxkbcommon libxkbfile ];
 
-  makeFlags = [ "all" ];
-  installFlags = [ "PREFIX=\${out}" "SYSCONFDIR=\${out}/etc" ];
-  postInstall = ''
-    mkdir -p $out/share/man/man1
-    cp *.1 $out/share/man/man1
-  '';
-
   meta = with lib; {
     description = "A simple screen locker like slock";
     longDescription = ''
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/rounded.nix b/nixpkgs/pkgs/applications/window-managers/i3/rounded.nix
new file mode 100644
index 000000000000..6ab3c29387f5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/i3/rounded.nix
@@ -0,0 +1,21 @@
+{ fetchFromGitHub, lib, i3 }:
+
+i3.overrideAttrs (oldAttrs: rec {
+  pname = "i3-rounded";
+  version = "unstable-2021-10-03";
+
+  src = fetchFromGitHub {
+    owner = "LinoBigatti";
+    repo = "i3-rounded";
+    rev = "524c9f7b50f8c540b2ae3480b242c30d8775f98e";
+    sha256 = "0y7m1s1y8f9vgkp7byi33js8n4rigiykd71s936i5d4rwlzrxiwm";
+  };
+
+  meta = with lib; {
+    description = "A fork of i3-gaps that adds rounding to window corners";
+    homepage = "https://github.com/LinoBigatti/i3-rounded";
+    maintainers = with maintainers; [ marsupialgutz ];
+    license = licenses.bsd3;
+    platforms = platforms.unix;
+  };
+})
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix b/nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix
index ed518d8eb2e8..ddc4383fbd73 100644
--- a/nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix
+++ b/nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix
@@ -15,16 +15,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "i3status-rust";
-  version = "0.21.8";
+  version = "0.22.0";
 
   src = fetchFromGitHub {
     owner = "greshake";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "sha256-l0XfitQSmSkivEg8+XcA/+bWdy/wzIpii/Npc4p8kUw=";
+    rev = "refs/tags/v${version}";
+    sha256 = "sha256-9Fp5k14QkV1CwLSL1nUUu6NYIpjfvI9vNJRYNqvyr3M=";
   };
 
-  cargoSha256 = "sha256-2rJ9ZZHK1acJu6r6EjuoolLJZMdBsbKgN1DNvGM7deA=";
+  cargoSha256 = "sha256-MzosatZ4yPHAdANqOBPVW2wpjnojLo9B9N9o4DtU0Iw=";
 
   nativeBuildInputs = [ pkg-config makeWrapper ];
 
diff --git a/nixpkgs/pkgs/applications/window-managers/icewm/default.nix b/nixpkgs/pkgs/applications/window-managers/icewm/default.nix
index 75cb96f27f4a..da97958fb346 100644
--- a/nixpkgs/pkgs/applications/window-managers/icewm/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/icewm/default.nix
@@ -40,13 +40,13 @@
 
 stdenv.mkDerivation rec {
   pname = "icewm";
-  version = "2.9.6";
+  version = "2.9.8";
 
   src = fetchFromGitHub {
     owner = "ice-wm";
     repo = pname;
     rev = version;
-    hash = "sha256-qC8gEVJ/cmsEbF8jMzv7zyvVcjlbXhgHU3ixe7RLcnA=";
+    hash = "sha256-SjLXPlwL3tMBD7RCJkL60lqcld/ZXIxgjeNrAn8A6KU=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/window-managers/jwm/default.nix b/nixpkgs/pkgs/applications/window-managers/jwm/default.nix
index 8a9b72265b99..49894bd0daa2 100644
--- a/nixpkgs/pkgs/applications/window-managers/jwm/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/jwm/default.nix
@@ -1,41 +1,79 @@
-{ lib, stdenv, fetchFromGitHub, pkg-config, autoreconfHook, gettext
-, which, xorg, libX11, libXext, libXinerama, libXpm, libXft, libXau, libXdmcp
-, libXmu, libpng, libjpeg, expat, xorgproto, librsvg, freetype, fontconfig }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, autoconf
+, automake
+, expat
+, fontconfig
+, freetype
+, gettext
+, libX11
+, libXau
+, libXdmcp
+, libXext
+, libXft
+, libXinerama
+, libXmu
+, libXpm
+, libjpeg
+, libpng
+, librsvg
+, pango
+, pkg-config
+, which
+, xorg
+, xorgproto
+, gitUpdater
+}:
 
 stdenv.mkDerivation rec {
   pname = "jwm";
-  version = "2.4.1";
+  version = "2.4.2";
 
   src = fetchFromGitHub {
     owner = "joewing";
     repo = "jwm";
     rev = "v${version}";
-    sha256 = "sha256-7CEL2ddlABM7SYjMVUs3pu0O+2cVsz04slsdUIbgZuM=";
+    sha256 = "sha256-rvuz2Pmon3XBqRMgDwZNrQlWDyLNSK30JPmmQTlN+Rs=";
   };
 
-  nativeBuildInputs = [ pkg-config gettext which autoreconfHook ];
+  nativeBuildInputs = [
+    autoconf
+    automake
+    gettext
+    pkg-config
+    which
+  ];
 
   buildInputs = [
+    expat
+    fontconfig
+    freetype
     libX11
-    libXext
-    libXinerama
-    libXpm
-    libXft
-    xorg.libXrender
     libXau
     libXdmcp
+    libXext
+    libXft
+    libXinerama
     libXmu
-    libpng
+    libXpm
     libjpeg
-    expat
-    xorgproto
+    libpng
     librsvg
-    freetype
-    fontconfig
+    pango
+    xorg.libXrender
+    xorgproto
   ];
 
+  preConfigure = "NOCONFIGURE=1 ./autogen.sh";
+
   enableParallelBuilding = true;
 
+  passthru.updateScript = gitUpdater {
+    inherit pname version;
+    rev-prefix = "v";
+  };
+
   meta = {
     homepage = "http://joewing.net/projects/jwm/";
     description = "Joe's Window Manager is a light-weight X11 window manager";
diff --git a/nixpkgs/pkgs/applications/window-managers/kbdd/default.nix b/nixpkgs/pkgs/applications/window-managers/kbdd/default.nix
index 2aade3607451..2fbc37d8e7eb 100644
--- a/nixpkgs/pkgs/applications/window-managers/kbdd/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/kbdd/default.nix
@@ -19,6 +19,6 @@ stdenv.mkDerivation {
     homepage = "https://github.com/qnikst/kbdd";
     license = lib.licenses.gpl2Plus;
     platforms = lib.platforms.linux;
-    maintainers = [ lib.maintainers.wedens ];
+    maintainers = [ ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/window-managers/labwc/default.nix b/nixpkgs/pkgs/applications/window-managers/labwc/default.nix
index f58b71ef03ad..ba145b85286f 100644
--- a/nixpkgs/pkgs/applications/window-managers/labwc/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/labwc/default.nix
@@ -21,13 +21,13 @@
 
 stdenv.mkDerivation rec {
   pname = "labwc";
-  version = "0.5.0";
+  version = "0.5.3";
 
   src = fetchFromGitHub {
     owner = "labwc";
     repo = pname;
     rev = version;
-    hash = "sha256-G0EQuXSHftl4JLXKIro+tmhbApwAhlzcjPEL7DP6LHk=";
+    hash = "sha256-YD2bGxa7uss6KRvOGM0kn8dM+277ubaYeOB7ugRZCcY=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/window-managers/leftwm/default.nix b/nixpkgs/pkgs/applications/window-managers/leftwm/default.nix
index 20f4c33ae60e..c89e140f94e5 100644
--- a/nixpkgs/pkgs/applications/window-managers/leftwm/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/leftwm/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchFromGitHub, rustPlatform, libX11, libXinerama }:
+{ stdenv, lib, fetchFromGitHub, rustPlatform, libX11, libXinerama }:
 
 let
   rpathLibs = [ libXinerama libX11 ];
@@ -28,11 +28,12 @@ rustPlatform.buildRustPackage rec {
   dontPatchELF = true;
 
   meta = with lib; {
+    broken = (stdenv.isLinux && stdenv.isAarch64);
     description = "A tiling window manager for the adventurer";
     homepage = "https://github.com/leftwm/leftwm";
     license = licenses.mit;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ mschneider ];
+    maintainers = with maintainers; [ ];
     changelog = "https://github.com/leftwm/leftwm/blob/${version}/CHANGELOG";
   };
 }
diff --git a/nixpkgs/pkgs/applications/window-managers/matchbox/default.nix b/nixpkgs/pkgs/applications/window-managers/matchbox/default.nix
index 51bb3010d330..f12ed0ea0a7f 100644
--- a/nixpkgs/pkgs/applications/window-managers/matchbox/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/matchbox/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, pkg-config, libmatchbox, libX11, libXext }:
+{ lib, stdenv, fetchurl, fetchpatch, pkg-config, libmatchbox, libX11, libXext }:
 
 stdenv.mkDerivation rec {
   pname = "matchbox";
@@ -13,6 +13,15 @@ stdenv.mkDerivation rec {
     sha256 = "1zyfq438b466ygcz78nvsmnsc5bhg4wcfnpxb43kbkwpyx53m8l1";
   };
 
+  patches = [
+    # Pull upstream fix for -fno-common tollchains:
+    (fetchpatch {
+      name = "fno-common.patch";
+      url = "https://git.yoctoproject.org/matchbox-window-manager/patch/?id=844f61069896fe3f549ab425d731c061028f697c";
+      sha256 = "1md2s7q094hn4gzg21pfyz8d426y07d5rbx2icas9nvc8jj7bwfc";
+    })
+  ];
+
   meta = {
     description = "X window manager for non-desktop embedded systems";
     homepage = "https://www.yoctoproject.org/software-item/matchbox/";
diff --git a/nixpkgs/pkgs/applications/window-managers/oroborus/default.nix b/nixpkgs/pkgs/applications/window-managers/oroborus/default.nix
index d24abb68fb7e..fc2517107670 100644
--- a/nixpkgs/pkgs/applications/window-managers/oroborus/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/oroborus/default.nix
@@ -1,27 +1,59 @@
-{ lib, stdenv, fetchurl, pkg-config
-, freetype, fribidi
-, libSM, libICE, libXt, libXaw, libXmu
-, libXext, libXft, libXpm, libXrandr
-, libXrender, xorgproto, libXinerama }:
+{ lib
+, stdenv
+, fetchurl
+, freetype
+, fribidi
+, libICE
+, libSM
+, libXaw
+, libXext
+, libXft
+, libXinerama
+, libXmu
+, libXpm
+, libXrandr
+, libXrender
+, libXt
+, pkg-config
+, xorgproto
+}:
 
-with lib;
 stdenv.mkDerivation rec {
-
   pname = "oroborus";
   version = "2.0.20";
 
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ freetype fribidi libSM libICE libXt libXaw libXmu libXext
-                  libXft libXpm libXrandr libXrender xorgproto libXinerama ];
-
   src = fetchurl {
     url = "mirror://debian/pool/main/o/oroborus/oroborus_${version}.tar.gz";
-    sha256 = "12bvk8x8rfnymbfbwmdcrd9g8m1zxbcq7rgvfdkjr0gnpi0aa82j";
+    hash = "sha256-UiClQLz2gSxnc/vlg9nqP1T0UsusVb7cqt66jDqae4k=a";
   };
 
-  meta = {
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [
+    freetype
+    fribidi
+    libICE
+    libSM
+    libXaw
+    libXext
+    libXft
+    libXinerama
+    libXmu
+    libXpm
+    libXrandr
+    libXrender
+    libXt
+    xorgproto
+  ];
+
+  # Workaround build failure on -fno-common toolchains:
+  #   ld: workspaces.o:src/keyboard.h:93: multiple definition of
+  #     `NumLockMask'; client.o:src/keyboard.h:93: first defined here
+  NIX_CFLAGS_COMPILE = "-fcommon";
+
+  meta = with lib; {
+    homepage = "https://web.archive.org/web/20191129172107/https://www.oroborus.org/";
     description = "A really minimalistic X window manager";
-    homepage = "https://www.oroborus.org/";
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.AndersonTorres ];
     platforms = platforms.linux;
diff --git a/nixpkgs/pkgs/applications/window-managers/phosh/default.nix b/nixpkgs/pkgs/applications/window-managers/phosh/default.nix
index 77a65eef6671..11a5c9b56cad 100644
--- a/nixpkgs/pkgs/applications/window-managers/phosh/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/phosh/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , fetchFromGitLab
+, fetchpatch
 , meson
 , ninja
 , pkg-config
@@ -31,7 +32,7 @@
 
 stdenv.mkDerivation rec {
   pname = "phosh";
-  version = "0.16.0";
+  version = "0.17.0";
 
   src = fetchFromGitLab {
     domain = "gitlab.gnome.org";
@@ -40,7 +41,7 @@ stdenv.mkDerivation rec {
     repo = pname;
     rev = "v${version}";
     fetchSubmodules = true; # including gvc and libcall-ui which are designated as subprojects
-    sha256 = "sha256-nxQYVWUXT1fNgOTRB3iWCLWYI/STk8vtguTbPPNTHdg=";
+    sha256 = "sha256-o/0NJZo1EPpXguN/tkUc+/9XaVTQWaLGe+2pU0B91Cg=";
   };
 
   nativeBuildInputs = [
@@ -84,6 +85,19 @@ stdenv.mkDerivation rec {
 
   mesonFlags = [ "-Dsystemd=true" "-Dcompositor=${phoc}/bin/phoc" ];
 
+  patches = [
+    # build: Adjust to polkit version changes
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/World/Phosh/phosh/-/commit/16b46e295b86cbf1beaccf8218cf65ebb4b7a6f1.patch";
+      sha256 = "sha256-Db1OEdiI1QBHGEBs1Coi7LTF9bCScdDgxmovpBdIY/g=";
+    })
+    # polkit-auth-agent: Scope cleanup function for PolkitAgentListener
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/World/Phosh/phosh/-/commit/b864653df50bfd8f34766fc6b37a3bf32cfbdfa4.patch";
+      sha256 = "sha256-YCw3tGk94NAa6PPTmA1lCJVzzi9GC74BmvtTcvuHPh0=";
+    })
+  ];
+
   postPatch = ''
     chmod +x build-aux/post_install.py
     patchShebangs build-aux/post_install.py
@@ -113,7 +127,7 @@ stdenv.mkDerivation rec {
 
   passthru = {
     providedSessions = [
-     "sm.puri.Phosh"
+      "sm.puri.Phosh"
     ];
   };
 
diff --git a/nixpkgs/pkgs/applications/window-managers/qtile/default.nix b/nixpkgs/pkgs/applications/window-managers/qtile/default.nix
index d0bec27e215a..93636ae36b01 100644
--- a/nixpkgs/pkgs/applications/window-managers/qtile/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/qtile/default.nix
@@ -52,6 +52,7 @@ let
       setuptools
       python-dateutil
       dbus-python
+      dbus-next
       mpd2
       psutil
       pyxdg
diff --git a/nixpkgs/pkgs/applications/window-managers/shod/default.nix b/nixpkgs/pkgs/applications/window-managers/shod/default.nix
new file mode 100644
index 000000000000..f9e6216a86ab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/shod/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, writeText
+, fontconfig
+, libX11
+, libXft
+, libXinerama
+, libXpm
+, libXrender
+, conf ? null
+}:
+
+stdenv.mkDerivation rec {
+  pname = "shod";
+  version = "2.4.0";
+
+  src = fetchFromGitHub {
+    owner = "phillbush";
+    repo = "shod";
+    rev = "v${version}";
+    sha256 = "sha256-jrPuI3ADppqaJ2y9GksiJZZd4LtN1P5yjWwlf9VuYDc=";
+  };
+
+  buildInputs = [
+    fontconfig
+    libX11
+    libXft
+    libXinerama
+    libXpm
+    libXrender
+  ];
+
+  postPatch =
+    let
+      configFile =
+        if lib.isDerivation conf || builtins.isPath conf
+        then conf else writeText "config.h" conf;
+    in
+    lib.optionalString (conf != null) "cp ${configFile} config.h";
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with lib; {
+    description = "A mouse-based window manager that can tile windows inside floating containers";
+    longDescription = ''
+      shod is a multi-monitor floating reparenting X11 window manager that
+      supports tiled and tabbed containers. shod sets no keybindings, reads no
+      configuration, and works only via mouse with a given key modifier (Alt by
+      default) and by responding to client messages sent by the shodc utility
+      (shod's remote controller).
+    '';
+    homepage = "https://github.com/phillbush/shod";
+    license = licenses.mit;
+    maintainers = with maintainers; [ azahi ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/sommelier/default.nix b/nixpkgs/pkgs/applications/window-managers/sommelier/default.nix
new file mode 100644
index 000000000000..0528553b1894
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/sommelier/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenv, fetchzip, meson, ninja, pkg-config, wayland-scanner
+, libxkbcommon, mesa, pixman, xorg, wayland, gtest
+}:
+
+stdenv.mkDerivation {
+  pname = "sommelier";
+  version = "104.0";
+
+  src = fetchzip rec {
+    url = "https://chromium.googlesource.com/chromiumos/platform2/+archive/${passthru.rev}/vm_tools/sommelier.tar.gz";
+    passthru.rev = "af5434fd9903936a534e1316cbd22361e67949ec";
+    stripRoot = false;
+    sha256 = "LungQqHQorHIKpye2SDBLuMHPt45C1cPYcs9o5Hc3cw=";
+  };
+
+  nativeBuildInputs = [ meson ninja pkg-config wayland-scanner ];
+  buildInputs = [ libxkbcommon mesa pixman wayland xorg.libxcb ];
+
+  doCheck = true;
+  checkInputs = [ gtest ];
+
+  postInstall = ''
+    rm $out/bin/sommelier_test # why does it install the test binary? o_O
+  '';
+
+  passthru.updateScript = ./update.py;
+
+  meta = with lib; {
+    homepage = "https://chromium.googlesource.com/chromiumos/platform2/+/refs/heads/main/vm_tools/sommelier/";
+    description = "Nested Wayland compositor with support for X11 forwarding";
+    maintainers = with maintainers; [ qyliss ];
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/sommelier/update.py b/nixpkgs/pkgs/applications/window-managers/sommelier/update.py
new file mode 100755
index 000000000000..03898c9ccdd8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/sommelier/update.py
@@ -0,0 +1,58 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -p common-updater-scripts python3
+#! nix-shell -i python
+
+import csv
+import json
+import re
+import shlex
+import subprocess
+from os.path import abspath, dirname, splitext
+from urllib.request import urlopen
+
+# CrOS version numbers look like this:
+# [<chrome-major-version>.]<tip-build>.<branch-build>.<branch-branch-build>
+#
+# As far as I can tell, branches are where internal Google
+# modifications are added to turn Chromium OS into Chrome OS, and
+# branch branches are used for fixes for specific devices.  So for
+# Chromium OS they will always be 0.  This is a best guess, and is not
+# documented.
+with urlopen('https://chromiumdash.appspot.com/cros/download_serving_builds_csv?deviceCategory=ChromeOS') as resp:
+    reader = csv.reader(map(bytes.decode, resp))
+    header = reader.__next__()
+    cr_stable_index = header.index('cr_stable')
+    cros_stable_index = header.index('cros_stable')
+    chrome_version = []
+    platform_version = []
+
+    for line in reader:
+        this_chrome_version = list(map(int, line[cr_stable_index].split('.')))
+        this_platform_version = list(map(int, line[cros_stable_index].split('.')))
+        chrome_version = max(chrome_version, this_chrome_version)
+        platform_version = max(platform_version, this_platform_version)
+
+chrome_major_version = chrome_version[0]
+chromeos_tip_build = platform_version[0]
+release_branch = f'release-R{chrome_major_version}-{chromeos_tip_build}.B'
+
+# Determine the git revision.
+with urlopen(f'https://chromium.googlesource.com/chromiumos/platform2/+/refs/heads/{release_branch}?format=JSON') as resp:
+    resp.readline() # Remove )]}' header
+    rev = json.load(resp)['commit']
+
+# Determine the patch version by counting the commits that have been
+# added to the release branch since it forked off the chromeos branch.
+with urlopen(f'https://chromium.googlesource.com/chromiumos/platform2/+log/refs/heads/main..{rev}/vm_tools/sommelier?format=JSON') as resp:
+    resp.readline() # Remove )]}' header
+    branch_commits = json.load(resp)['log']
+    version = f'{chrome_major_version}.{len(branch_commits)}'
+
+# Update the version, git revision, and hash in sommelier's default.nix.
+subprocess.run(['update-source-version', 'sommelier', f'--rev={rev}', version])
+
+# Find the path to sommelier's default.nix, so Cargo.lock can be written
+# into the same directory.
+argv = ['nix-instantiate', '--eval', '--json', '-A', 'sommelier.meta.position']
+position = json.loads(subprocess.check_output(argv).decode('utf-8'))
+filename = re.match(r'[^:]*', position)[0]
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/bg.nix b/nixpkgs/pkgs/applications/window-managers/sway/bg.nix
index e98adefa4476..7ef4a7d1f6ad 100644
--- a/nixpkgs/pkgs/applications/window-managers/sway/bg.nix
+++ b/nixpkgs/pkgs/applications/window-managers/sway/bg.nix
@@ -15,6 +15,7 @@ stdenv.mkDerivation rec {
     hash = "sha256-Lt/hn/K+CjcmU3Bs5wChiZq0VGNcraH4tSVYsmYnKjc=";
   };
 
+  strictDeps = true;
   depsBuildBuild = [ pkg-config ];
   nativeBuildInputs = [ meson ninja pkg-config scdoc wayland-scanner ];
   buildInputs = [ wayland wayland-protocols cairo gdk-pixbuf ];
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/contrib.nix b/nixpkgs/pkgs/applications/window-managers/sway/contrib.nix
index caf34e543b7b..499713f966aa 100644
--- a/nixpkgs/pkgs/applications/window-managers/sway/contrib.nix
+++ b/nixpkgs/pkgs/applications/window-managers/sway/contrib.nix
@@ -10,6 +10,7 @@
 , slurp
 , grim
 , jq
+, bash
 
 , python3Packages
 }:
@@ -27,8 +28,9 @@ grimshot = stdenv.mkDerivation rec {
 
   outputs = [ "out" "man" ];
 
+  strictDeps = true;
   nativeBuildInputs = [ makeWrapper installShellFiles ];
-
+  buildInputs = [ bash ];
   installPhase = ''
     installManPage contrib/grimshot.1
 
@@ -60,10 +62,7 @@ grimshot = stdenv.mkDerivation rec {
     homepage = "https://github.com/swaywm/sway/tree/master/contrib";
     license = licenses.mit;
     platforms = platforms.all;
-    maintainers = with maintainers; [
-      sway-unwrapped.meta.maintainers
-      evils
-    ];
+    maintainers = sway-unwrapped.meta.maintainers ++ (with maintainers; [ evils ]);
   };
 };
 
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/default.nix b/nixpkgs/pkgs/applications/window-managers/sway/default.nix
index 0503b0c76e5e..3072b3dadd16 100644
--- a/nixpkgs/pkgs/applications/window-managers/sway/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/sway/default.nix
@@ -49,6 +49,7 @@ stdenv.mkDerivation rec {
     ./sway-config-nixos-paths.patch
   ];
 
+  strictDeps = true;
   depsBuildBuild = [
     pkg-config
   ];
@@ -90,6 +91,6 @@ stdenv.mkDerivation rec {
     changelog   = "https://github.com/swaywm/sway/releases/tag/${version}";
     license     = licenses.mit;
     platforms   = platforms.linux;
-    maintainers = with maintainers; [ primeos synthetica ma27 ];
+    maintainers = with maintainers; [ primeos synthetica ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/idle.nix b/nixpkgs/pkgs/applications/window-managers/sway/idle.nix
index 0928fbcfb4ef..97e3febc7b94 100644
--- a/nixpkgs/pkgs/applications/window-managers/sway/idle.nix
+++ b/nixpkgs/pkgs/applications/window-managers/sway/idle.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, fetchFromGitHub
 , meson, ninja, pkg-config, scdoc, wayland-scanner
-, wayland, wayland-protocols
+, wayland, wayland-protocols, runtimeShell
 , systemdSupport ? stdenv.isLinux, systemd
 }:
 
@@ -15,12 +15,21 @@ stdenv.mkDerivation rec {
     sha256 = "06iq12p4438d6bv3jlqsf01wjaxrzlnj1bnicn41kad563aq41xl";
   };
 
+  strictDeps = true;
   nativeBuildInputs = [ meson ninja pkg-config scdoc wayland-scanner ];
   buildInputs = [ wayland wayland-protocols ]
                 ++ lib.optionals systemdSupport [ systemd ];
 
   mesonFlags = [ "-Dman-pages=enabled" "-Dlogind=${if systemdSupport then "enabled" else "disabled"}" ];
 
+  # Remove the `%zu` patch for the next release after 1.7.1.
+  # https://github.com/swaywm/swayidle/commit/e81d40fca7533f73319e76e42fa9694b21cc9e6e
+  postPatch = ''
+    substituteInPlace main.c \
+      --replace '%lu' '%zu' \
+      --replace '"sh"' '"${runtimeShell}"'
+  '';
+
   meta = with lib; {
     description = "Idle management daemon for Wayland";
     longDescription = ''
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/lock-effects.nix b/nixpkgs/pkgs/applications/window-managers/sway/lock-effects.nix
index 25714f1f8a94..6f1f337d23ee 100644
--- a/nixpkgs/pkgs/applications/window-managers/sway/lock-effects.nix
+++ b/nixpkgs/pkgs/applications/window-managers/sway/lock-effects.nix
@@ -7,6 +7,7 @@
 , scdoc
 , wayland
 , wayland-protocols
+, wayland-scanner
 , libxkbcommon
 , cairo
 , gdk-pixbuf
@@ -15,20 +16,21 @@
 
 stdenv.mkDerivation rec {
   pname = "swaylock-effects";
-  version = "1.6-3";
+  version = "unstable-2021-10-21";
 
   src = fetchFromGitHub {
     owner = "mortie";
     repo = "swaylock-effects";
-    rev = "v${version}";
-    sha256 = "sha256-71IX0fC4xCPP6pK63KtvDMb3KoP1rw/Iz3S7BgiLSpg=";
+    rev = "a8fc557b86e70f2f7a30ca9ff9b3124f89e7f204";
+    sha256 = "sha256-GN+cxzC11Dk1nN9wVWIyv+rCrg4yaHnCePRYS1c4JTk=";
   };
 
   postPatch = ''
     sed -iE "s/version: '1\.3',/version: '${version}',/" meson.build
   '';
 
-  nativeBuildInputs = [ meson ninja pkg-config scdoc ];
+  strictDeps = true;
+  nativeBuildInputs = [ meson ninja pkg-config scdoc wayland-scanner];
   buildInputs = [ wayland wayland-protocols libxkbcommon cairo gdk-pixbuf pam ];
 
   mesonFlags = [
@@ -45,6 +47,6 @@ stdenv.mkDerivation rec {
     inherit (src.meta) homepage;
     license = licenses.mit;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ gnxlxnxx ];
+    maintainers = with maintainers; [ gnxlxnxx ma27 ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/lock-fancy.nix b/nixpkgs/pkgs/applications/window-managers/sway/lock-fancy.nix
index 8c2a7e91649a..2eb817b9b1f8 100644
--- a/nixpkgs/pkgs/applications/window-managers/sway/lock-fancy.nix
+++ b/nixpkgs/pkgs/applications/window-managers/sway/lock-fancy.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, fetchFromGitHub, coreutils, grim, gawk, jq, swaylock
-, imagemagick, getopt, fontconfig, wmctrl, makeWrapper
+, imagemagick, getopt, fontconfig, wmctrl, makeWrapper, bash
 }:
 
 let
@@ -30,7 +30,9 @@ in stdenv.mkDerivation rec {
       --replace "/usr/share" "$out/share"
   '';
 
+  strictDeps = true;
   nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ bash ];
 
   makeFlags = [ "PREFIX=${placeholder "out"}" ];
 
@@ -44,6 +46,6 @@ in stdenv.mkDerivation rec {
     homepage = "https://github.com/Big-B/swaylock-fancy";
     license = licenses.mit;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ ma27 ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/lock.nix b/nixpkgs/pkgs/applications/window-managers/sway/lock.nix
index b70160b1dbfd..970fdfe371fe 100644
--- a/nixpkgs/pkgs/applications/window-managers/sway/lock.nix
+++ b/nixpkgs/pkgs/applications/window-managers/sway/lock.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub
+{ lib, stdenv, fetchFromGitHub, fetchpatch
 , meson, ninja, pkg-config, scdoc, wayland-scanner
 , wayland, wayland-protocols, libxkbcommon, cairo, gdk-pixbuf, pam
 }:
@@ -14,6 +14,17 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-VVGgidmSQWKxZNx9Cd6z52apxpxVfmX3Ut/G9kzfDcY=";
   };
 
+  patches = [
+    # remove once when updating to 1.7
+    # https://github.com/swaywm/swaylock/pull/235
+    (fetchpatch {
+      url = "https://github.com/swaywm/swaylock/commit/5a1e6ad79aa7d79b32d36cda39400f3e889b8f8f.diff";
+      sha256 = "sha256-ZcZVImUzvng7sluC6q2B5UL8sVunLe4PIfc+tyw48RQ=";
+    })
+  ];
+
+  strictDeps = true;
+  depsBuildBuild = [ pkg-config ];
   nativeBuildInputs = [ meson ninja pkg-config scdoc wayland-scanner ];
   buildInputs = [ wayland wayland-protocols libxkbcommon cairo gdk-pixbuf pam ];
 
diff --git a/nixpkgs/pkgs/applications/window-managers/sway/wrapper.nix b/nixpkgs/pkgs/applications/window-managers/sway/wrapper.nix
index c1f531683d70..42384fa06ae2 100644
--- a/nixpkgs/pkgs/applications/window-managers/sway/wrapper.nix
+++ b/nixpkgs/pkgs/applications/window-managers/sway/wrapper.nix
@@ -37,6 +37,7 @@ in symlinkJoin {
   paths = (optional withBaseWrapper baseWrapper)
     ++ [ sway ];
 
+  strictDeps = false;
   nativeBuildInputs = [ makeWrapper ]
     ++ (optional withGtkWrapper wrapGAppsHook);
 
diff --git a/nixpkgs/pkgs/applications/window-managers/weston/default.nix b/nixpkgs/pkgs/applications/window-managers/weston/default.nix
index 043e2b02a7fb..799c58283d93 100644
--- a/nixpkgs/pkgs/applications/window-managers/weston/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/weston/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, meson, ninja, pkg-config, wayland-scanner, python3
+{ lib, stdenv, fetchurl, fetchpatch, meson, ninja, pkg-config, wayland-scanner, python3
 , wayland, libGL, mesa, libxkbcommon, cairo, libxcb
 , libXcursor, xlibsWrapper, udev, libdrm, mtdev, libjpeg, pam, dbus, libinput, libevdev
 , colord, lcms2, pipewire ? null
@@ -7,16 +7,23 @@
 # beware of null defaults, as the parameters *are* supplied by callPackage by default
 }:
 
-with lib;
 stdenv.mkDerivation rec {
   pname = "weston";
-  version = "10.0.0";
+  version = "10.0.1";
 
   src = fetchurl {
-    url = "https://wayland.freedesktop.org/releases/${pname}-${version}.tar.xz";
-    sha256 = "1bj7wnadr7ssn6xw7k8ki0wpj6np3kjd2pcysfz3h0mr290rc8sw";
+    url = "https://gitlab.freedesktop.org/wayland/weston/-/releases/${version}/downloads/weston-${version}.tar.xz";
+    sha256 = "05a10gfbadyxkwgsncc5vc343f493csgh10vk0878nl6d98557la";
   };
 
+  patches = [
+    # Fix race condition in build system
+    (fetchpatch {
+      url = "https://gitlab.freedesktop.org/wayland/weston/-/commit/0d3e438d080433ed5d203c876e7de6c7f8a14f98.patch";
+      sha256 = "sha256-d9NG1vUIuL4jpXqCo0myz/97JuFYesH+8kJnegQXeMU=";
+    })
+  ];
+
   nativeBuildInputs = [ meson ninja pkg-config wayland-scanner python3 ];
   buildInputs = [
     wayland libGL mesa libxkbcommon cairo libxcb libXcursor xlibsWrapper udev libdrm
@@ -26,25 +33,25 @@ stdenv.mkDerivation rec {
   ];
 
   mesonFlags= [
-    "-Dbackend-drm-screencast-vaapi=${boolToString (vaapi != null)}"
-    "-Dbackend-rdp=${boolToString (freerdp != null)}"
-    "-Dxwayland=${boolToString (xwayland != null)}" # Default is true!
+    "-Dbackend-drm-screencast-vaapi=${lib.boolToString (vaapi != null)}"
+    "-Dbackend-rdp=${lib.boolToString (freerdp != null)}"
+    "-Dxwayland=${lib.boolToString (xwayland != null)}" # Default is true!
     "-Dremoting=false" # TODO
-    "-Dpipewire=${boolToString (pipewire != null)}"
-    "-Dimage-webp=${boolToString (libwebp != null)}"
+    "-Dpipewire=${lib.boolToString (pipewire != null)}"
+    "-Dimage-webp=${lib.boolToString (libwebp != null)}"
     "-Ddemo-clients=false"
     "-Dsimple-clients="
     "-Dtest-junit-xml=false"
     # TODO:
     #"--enable-clients"
     #"--disable-setuid-install" # prevent install target to chown root weston-launch, which fails
-  ] ++ optionals (xwayland != null) [
+  ] ++ lib.optionals (xwayland != null) [
     "-Dxwayland-path=${xwayland.out}/bin/Xwayland"
   ];
 
   passthru.providedSessions = [ "weston" ];
 
-  meta = {
+  meta = with lib; {
     description = "A lightweight and functional Wayland compositor";
     longDescription = ''
       Weston is the reference implementation of a Wayland compositor, as well
diff --git a/nixpkgs/pkgs/applications/window-managers/wmfs/default.nix b/nixpkgs/pkgs/applications/window-managers/wmfs/default.nix
index 83c7d787d882..eaafac71b6c1 100644
--- a/nixpkgs/pkgs/applications/window-managers/wmfs/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/wmfs/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, gnumake,
+{ lib, stdenv, fetchFromGitHub, fetchpatch,
   libX11, libXinerama, libXrandr, libXpm, libXft, imlib2 }:
 stdenv.mkDerivation {
   pname = "wmfs";
@@ -12,8 +12,15 @@ stdenv.mkDerivation {
     rev = "b7b8ff812d28c79cb22a73db2739989996fdc6c2";
   };
 
-  nativeBuildInputs = [
-    gnumake
+  patches = [
+    # Pull patch pending upstream inclusion to fix build on
+    # -fno-common toolchain like upstream gcc-10:
+    #  https://github.com/xorg62/wmfs/pull/104
+    (fetchpatch {
+      name = "fno-common.patch";
+      url = "https://github.com/xorg62/wmfs/commit/e4ec12618f4689d791892ebb49df9610a25d24d3.patch";
+      sha256 = "0qvwry9sikvr85anzha9x4gcx0r2ckwdxqw2in2l6bl9z9d9c0w2";
+    })
   ];
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/applications/window-managers/wmii-hg/default.nix b/nixpkgs/pkgs/applications/window-managers/wmii-hg/default.nix
deleted file mode 100644
index 6759e15ee833..000000000000
--- a/nixpkgs/pkgs/applications/window-managers/wmii-hg/default.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{ lib, stdenv, fetchurl, unzip, pkg-config, libixp_hg, txt2tags, dash, python2, which
-, libX11 , libXrender, libXext, libXinerama, libXrandr, libXft }:
-
-stdenv.mkDerivation rec {
-  rev = "2823";
-  version = "hg-2012-12-09";
-  pname = "wmii";
-
-  src = fetchurl {
-    url = "https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/wmii/source-archive.zip";
-    sha256 = "1wmkq14zvmfrmydl8752xz852cy7agrx3qp4fy2cc5asb2r9abaz";
-  };
-
-  # for dlopen-ing
-  patchPhase = ''
-    substituteInPlace lib/libstuff/x11/xft.c --replace "libXft.so" "$(pkg-config --variable=libdir xft)/libXft.so.2"
-    substituteInPlace cmd/wmii.sh.sh --replace "\$(which which)" "${which}/bin/which"
-  '';
-
-  configurePhase = ''
-    for file in $(grep -lr '#!.*sh'); do
-      sed -i 's|#!.*sh|#!${dash}/bin/dash|' $file
-    done
-
-    cat <<EOF >> config.mk
-    PREFIX = $out
-    LIBIXP = ${libixp_hg}/lib/libixp.a
-    BINSH = ${dash}/bin/dash
-    EOF
-  '';
-
-  nativeBuildInputs = [ pkg-config unzip ];
-  buildInputs = [ libixp_hg txt2tags dash python2 which
-                  libX11 libXrender libXext libXinerama libXrandr libXft ];
-
-  # For some reason including mercurial in buildInputs did not help
-  makeFlags = [ "WMII_HGVERSION=hg${rev}" ];
-
-  meta = {
-    homepage = "https://suckless.org/"; # https://wmii.suckless.org/ does not exist anymore
-    description = "A small window manager controlled by a 9P filesystem";
-    maintainers = with lib.maintainers; [ kovirobi ];
-    license = lib.licenses.mit;
-    platforms = with lib.platforms; linux;
-  };
-}
diff --git a/nixpkgs/pkgs/applications/window-managers/wmii/default.nix b/nixpkgs/pkgs/applications/window-managers/wmii/default.nix
new file mode 100644
index 000000000000..11f669da37a6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/wmii/default.nix
@@ -0,0 +1,72 @@
+{ lib, stdenv
+, fetchFromGitHub
+, dash
+, libX11
+, libXext
+, libXft
+, libXinerama
+, libXrandr
+, libXrender
+, libixp
+, pkg-config
+, txt2tags
+, unzip
+, which
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wmii";
+  version = "unstable-2022-04-04";
+
+  src = fetchFromGitHub {
+    owner = "0intro";
+    repo = "wmii";
+    rev = "ff120c7fee6e1b3a30a4a800074394327fb1da9d";
+    hash = "sha256-KEmWnobpT/5TdgT2HGPCpG1duz9Q6Z6PFSEBs2Ce+7g=";
+  };
+
+  # for dlopen-ing
+  postPatch = ''
+    substituteInPlace lib/libstuff/x11/xft.c --replace "libXft.so" "$(pkg-config --variable=libdir xft)/libXft.so.2"
+    substituteInPlace cmd/wmii.sh.sh --replace "\$(which which)" "${which}/bin/which"
+  '';
+
+  postConfigure = ''
+    for file in $(grep -lr '#!.*sh'); do
+      sed -i 's|#!.*sh|#!${dash}/bin/dash|' $file
+    done
+
+    cat <<EOF >> config.mk
+    PREFIX = $out
+    LIBIXP = ${libixp}/lib/libixp.a
+    BINSH = ${dash}/bin/dash
+    EOF
+  '';
+
+  # Remove optional python2 functionality
+  postInstall = ''
+    rm -rf $out/lib/python* $out/etc/wmii-hg/python
+  '';
+
+  nativeBuildInputs = [ pkg-config unzip ];
+  buildInputs = [
+    dash
+    libX11
+    libXext
+    libXft
+    libXinerama
+    libXrandr
+    libXrender
+    libixp
+    txt2tags
+    which
+  ];
+
+  meta = {
+    homepage = "https://github.com/0intro/wmii";
+    description = "A small, scriptable window manager, with a 9P filesystem interface and an acme-like layout";
+    maintainers = with lib.maintainers; [ kovirobi ];
+    license = lib.licenses.mit;
+    platforms = with lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/xmonad/wrapper.nix b/nixpkgs/pkgs/applications/window-managers/xmonad/wrapper.nix
index 409bf73c893f..9167b95ddff8 100644
--- a/nixpkgs/pkgs/applications/window-managers/xmonad/wrapper.nix
+++ b/nixpkgs/pkgs/applications/window-managers/xmonad/wrapper.nix
@@ -11,7 +11,7 @@ in stdenv.mkDerivation {
   buildCommand = ''
     install -D ${xmonadEnv}/share/man/man1/xmonad.1.gz $out/share/man/man1/xmonad.1.gz
     makeWrapper ${xmonadEnv}/bin/xmonad $out/bin/xmonad \
-      --set NIX_GHC "${xmonadEnv}/bin/ghc" \
+      --set XMONAD_GHC "${xmonadEnv}/bin/ghc" \
       --set XMONAD_XMESSAGE "${xmessage}/bin/xmessage"
   '';
 
diff --git a/nixpkgs/pkgs/applications/window-managers/xmonad/xmonadctl.nix b/nixpkgs/pkgs/applications/window-managers/xmonad/xmonadctl.nix
new file mode 100644
index 000000000000..da1e414d8416
--- /dev/null
+++ b/nixpkgs/pkgs/applications/window-managers/xmonad/xmonadctl.nix
@@ -0,0 +1,30 @@
+{ stdenv, lib, fetchFromGitHub, ghcWithPackages, ... }:
+
+let xmonadctlEnv = ghcWithPackages (self: [ self.xmonad-contrib self.X11 ]);
+in stdenv.mkDerivation rec {
+  pname = "xmonadctl";
+  version = "0.17.0";
+
+  src = fetchFromGitHub {
+    owner = "xmonad";
+    repo = "xmonad-contrib";
+    rev = "v${version}";
+    sha256 = "142ycg7dammq98drimv6xbih8dla9qindxds9fgkspmrrils3sar";
+  };
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/bin
+    ${xmonadctlEnv}/bin/ghc -o $out/bin/xmonadctl \
+      --make scripts/xmonadctl.hs
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    platforms = platforms.unix;
+    description = "Send commands to a running instance of xmonad";
+    homepage = "https://github.com/xmonad/xmonad-contrib";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.ajgrf ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/window-managers/yeahwm/default.nix b/nixpkgs/pkgs/applications/window-managers/yeahwm/default.nix
index 3cf997c22c29..25a25a06ad9e 100644
--- a/nixpkgs/pkgs/applications/window-managers/yeahwm/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/yeahwm/default.nix
@@ -24,6 +24,11 @@ stdenv.mkDerivation rec {
                       prefix="${placeholder "out"}" )
   '';
 
+  # Workaround build failure on -fno-common toolchains like upstream
+  # gcc-10. Otherwise build fails as:
+  #   ld: screen.o:(.bss+0x40): multiple definition of `fg'; client.o:(.bss+0x40): first defined here
+  NIX_CFLAGS_COMPILE = "-fcommon";
+
   postInstall = ''
     gzip -9 --stdout yeahwm.1 > yeahwm.1.gz
     install -m644 yeahwm.1.gz ${placeholder "out"}/share/man/man1/