about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/wayland
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/wayland')
-rw-r--r--nixpkgs/pkgs/tools/wayland/cliphist/default.nix23
-rw-r--r--nixpkgs/pkgs/tools/wayland/clipman/default.nix37
-rw-r--r--nixpkgs/pkgs/tools/wayland/kanshi/default.nix40
-rw-r--r--nixpkgs/pkgs/tools/wayland/oguri/default.nix39
-rw-r--r--nixpkgs/pkgs/tools/wayland/sirula/default.nix32
-rw-r--r--nixpkgs/pkgs/tools/wayland/slurp/default.nix47
-rw-r--r--nixpkgs/pkgs/tools/wayland/swaycwd/default.nix37
-rw-r--r--nixpkgs/pkgs/tools/wayland/swaykbdd/default.nix24
-rw-r--r--nixpkgs/pkgs/tools/wayland/swayr/default.nix30
-rw-r--r--nixpkgs/pkgs/tools/wayland/swayr/icon-paths.patch17
-rw-r--r--nixpkgs/pkgs/tools/wayland/wayland-proxy-virtwl/default.nix45
-rw-r--r--nixpkgs/pkgs/tools/wayland/wayland-utils/default.nix30
-rw-r--r--nixpkgs/pkgs/tools/wayland/wdomirror/default.nix38
-rw-r--r--nixpkgs/pkgs/tools/wayland/wev/default.nix39
-rw-r--r--nixpkgs/pkgs/tools/wayland/wl-clipboard-x11/default.nix29
-rw-r--r--nixpkgs/pkgs/tools/wayland/wl-clipboard/default.nix33
-rw-r--r--nixpkgs/pkgs/tools/wayland/wl-mirror/default.nix62
-rw-r--r--nixpkgs/pkgs/tools/wayland/wlogout/default.nix56
-rw-r--r--nixpkgs/pkgs/tools/wayland/wlr-randr/default.nix31
-rw-r--r--nixpkgs/pkgs/tools/wayland/wlrctl/default.nix26
-rw-r--r--nixpkgs/pkgs/tools/wayland/wlsunset/default.nix32
-rw-r--r--nixpkgs/pkgs/tools/wayland/wluma/default.nix35
-rw-r--r--nixpkgs/pkgs/tools/wayland/wob/default.nix43
-rw-r--r--nixpkgs/pkgs/tools/wayland/wshowkeys/default.nix36
-rw-r--r--nixpkgs/pkgs/tools/wayland/wtype/default.nix34
-rw-r--r--nixpkgs/pkgs/tools/wayland/ydotool/default.nix41
-rw-r--r--nixpkgs/pkgs/tools/wayland/ydotool/fixup-cmakelists.patch58
27 files changed, 994 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/wayland/cliphist/default.nix b/nixpkgs/pkgs/tools/wayland/cliphist/default.nix
new file mode 100644
index 000000000000..9ccad4397dd9
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/cliphist/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "cliphist";
+  version = "0.3.0";
+
+  src = fetchFromGitHub {
+    owner = "sentriz";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-fx33m7DCp5N9VGI/H/IO66ECdFLobRRAAuRGNu4gzSk=";
+  };
+
+  vendorSha256 = "sha256-UrKSDvskGwHjwkb/fjvaJZ8xXFD98BFeSJxwJpc8A+M=";
+
+  meta = with lib; {
+    description = "Wayland clipboard manager";
+    homepage = "https://github.com/sentriz/cliphist";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ dit7ya ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/clipman/default.nix b/nixpkgs/pkgs/tools/wayland/clipman/default.nix
new file mode 100644
index 000000000000..3c974f4cb779
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/clipman/default.nix
@@ -0,0 +1,37 @@
+{ buildGoModule
+, fetchFromGitHub
+, lib
+, wl-clipboard
+, makeWrapper
+}:
+
+buildGoModule rec {
+  pname = "clipman";
+  version = "1.6.1";
+
+  src = fetchFromGitHub {
+    owner = "yory8";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-aZvtgeaS3xxl5/A/Pwlbu0sI7bw2MONbEIK42IDcMy0=";
+  };
+
+  vendorSha256 = "sha256-Z/sVCJz/igPDdeczC6pemLub6X6z4ZGlBwBmRsEnXKI=";
+
+  doCheck = false;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postInstall = ''
+    wrapProgram $out/bin/clipman \
+      --prefix PATH : ${lib.makeBinPath [ wl-clipboard ]}
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/yory8/clipman";
+    description = "A simple clipboard manager for Wayland";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ ma27 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/kanshi/default.nix b/nixpkgs/pkgs/tools/wayland/kanshi/default.nix
new file mode 100644
index 000000000000..6373af70b2e8
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/kanshi/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, scdoc
+, wayland
+}:
+
+stdenv.mkDerivation rec {
+  pname = "kanshi";
+  version = "1.2.0";
+
+  src = fetchFromGitHub {
+    owner = "emersion";
+    repo = "kanshi";
+    rev = "v${version}";
+    sha256 = "sha256-RVMeS2qEjTYK6r7IwMeFSqfRpKR8di2eQXhewfhTnYI=";
+  };
+
+  nativeBuildInputs = [ meson ninja pkg-config scdoc ];
+  buildInputs = [ wayland ];
+
+  meta = with lib; {
+    homepage = "https://github.com/emersion/kanshi";
+    description = "Dynamic display configuration tool";
+    longDescription = ''
+      kanshi allows you to define output profiles that are automatically enabled
+      and disabled on hotplug. For instance, this can be used to turn a laptop's
+      internal screen off when docked.
+
+      kanshi can be used on Wayland compositors supporting the
+      wlr-output-management protocol.
+    '';
+    license = licenses.mit;
+    maintainers = with maintainers; [ balsoft ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/oguri/default.nix b/nixpkgs/pkgs/tools/wayland/oguri/default.nix
new file mode 100644
index 000000000000..458ea310a01d
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/oguri/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, meson
+, ninja
+, cairo
+, gdk-pixbuf
+, wayland
+, wayland-protocols
+}:
+
+stdenv.mkDerivation rec {
+  pname = "oguri";
+  version = "unstable-2020-12-19";
+
+  src = fetchFromGitHub {
+    owner = "vilhalmer";
+    repo = pname;
+    rev = "6937fee10a9b0ef3ad8f94f606c0e0d9e7dec564";
+    sha256 = "sXNvpI/YPDPd2cXQAfRO4ut21gSCXxbo1DpaZmHJDYQ=";
+  };
+
+  nativeBuildInputs = [ pkg-config meson ninja ];
+  buildInputs = [
+    cairo
+    gdk-pixbuf
+    wayland
+    wayland-protocols
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/vilhalmer/oguri/";
+    description = "A very nice animated wallpaper daemon for Wayland compositors";
+    license = licenses.mit;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/sirula/default.nix b/nixpkgs/pkgs/tools/wayland/sirula/default.nix
new file mode 100644
index 000000000000..c95cbd00c5d5
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/sirula/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, fetchFromGitHub
+, rustPlatform
+, pkg-config
+, gtk3
+, gtk-layer-shell
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "sirula";
+  version = "unstable-2021-10-12";
+
+  src = fetchFromGitHub {
+    owner = "DorianRudolph";
+    repo = "sirula";
+    rev = "b300cabde03ec4d8c28ed84e318166b675fb4a77";
+    sha256 = "0pxdgjpqaf1bq1y1flafg0ksk8548rif6pfbw0lp31p655pq95c8";
+  };
+
+  cargoSha256 = "175rl09jmnj8pd5isyp2chnn66vdz1c16fgqhnjsxvbcasmn8vdj";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ gtk3 gtk-layer-shell ];
+
+  meta = with lib; {
+    description = "Simple app launcher for wayland written in rust";
+    homepage = "https://github.com/DorianRudolph/sirula";
+    license = with licenses; [ gpl3Plus ];
+    maintainers = with maintainers; [ twitchyliquid64 ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/slurp/default.nix b/nixpkgs/pkgs/tools/wayland/slurp/default.nix
new file mode 100644
index 000000000000..1105813550fb
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/slurp/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, cairo
+, libxkbcommon
+, wayland
+, wayland-protocols
+, buildDocs ? true, scdoc
+}:
+
+stdenv.mkDerivation rec {
+  pname = "slurp";
+  version = "1.3.2";
+
+  src = fetchFromGitHub {
+    owner = "emersion";
+    repo = "slurp";
+    rev = "v${version}";
+    sha256 = "sha256-5ZB34rqLyZmfjT/clxNRDmF0qgITFZ5xt/gIEXQzvQE=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+  ] ++ lib.optional buildDocs scdoc;
+
+  buildInputs = [
+    cairo
+    libxkbcommon
+    wayland
+    wayland-protocols
+  ];
+
+  mesonFlags = lib.optional buildDocs "-Dman-pages=enabled";
+
+  meta = with lib; {
+    description = "Select a region in a Wayland compositor";
+    homepage = "https://github.com/emersion/slurp";
+    license = licenses.mit;
+    maintainers = with maintainers; [ buffet ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/swaycwd/default.nix b/nixpkgs/pkgs/tools/wayland/swaycwd/default.nix
new file mode 100644
index 000000000000..9214f38b3303
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/swaycwd/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, nimPackages
+, fetchFromGitLab
+, enableShells ? [ "bash" "zsh" "fish" "sh" "posh" ]
+}:
+nimPackages.buildNimPackage rec{
+  pname = "swaycwd";
+  version = "0.0.2";
+
+  src = fetchFromGitLab {
+    owner = "cab404";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-OZWOPtOqcX+fVQCxWntrn98EzFu70WH55rfYCPDMSKk=";
+  };
+
+  preConfigure = ''
+    {
+      echo 'let enabledShells: seq[string] = @${builtins.toJSON enableShells}'
+      echo 'export enabledShells'
+    } > shells.nim
+    cat << EOF > swaycwd.nimble
+    srcDir = "."
+    bin = "swaycwd"
+    EOF
+  '';
+
+  nimFlags = [ "--opt:speed" ];
+
+  meta = with lib; {
+    homepage = "https://gitlab.com/cab404/swaycwd";
+    description = "Returns cwd for shell in currently focused sway window, or home directory if cannot find shell";
+    maintainers = with maintainers; [ cab404 ];
+    platforms = platforms.linux;
+    license = licenses.gpl3Only;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/swaykbdd/default.nix b/nixpkgs/pkgs/tools/wayland/swaykbdd/default.nix
new file mode 100644
index 000000000000..4584018596df
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/swaykbdd/default.nix
@@ -0,0 +1,24 @@
+{ lib, stdenv, fetchFromGitHub, meson, ninja, json_c, pkg-config }:
+
+stdenv.mkDerivation rec {
+  pname = "swaykbdd";
+  version = "1.0";
+
+  src = fetchFromGitHub {
+    owner = "artemsen";
+    repo = "swaykbdd";
+    rev = "v${version}";
+    sha256 = "101mbf7pvm4ykmkh29g5xswrzdhdwq0rslzxqqfd5ksf1fphzgxd";
+  };
+
+  nativeBuildInputs = [ meson ninja pkg-config ];
+  buildInputs = [ json_c ];
+
+  meta = with lib; {
+    description = "Per-window keyboard layout for Sway";
+    homepage = "https://github.com/artemsen/swaykbdd";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ivankovnatsky ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/swayr/default.nix b/nixpkgs/pkgs/tools/wayland/swayr/default.nix
new file mode 100644
index 000000000000..9ccc13532c2a
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/swayr/default.nix
@@ -0,0 +1,30 @@
+{ lib, fetchFromSourcehut, rustPlatform }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "swayr";
+  version = "0.11.2";
+
+  src = fetchFromSourcehut {
+    owner = "~tsdh";
+    repo = "swayr";
+    rev = "v${version}";
+    sha256 = "sha256-IjOoQbKCiwuoCsh2bOmvcSH3/9KMmavmn1Ib1TLBH8w=";
+  };
+
+  cargoSha256 = "sha256-EYaISBnWKplKUAKa9SZufWcykeR/qeApvqwIGB9jt3Q=";
+
+  patches = [
+    ./icon-paths.patch
+  ];
+
+  preCheck = ''
+    export HOME=$TMPDIR
+  '';
+
+  meta = with lib; {
+    description = "A window switcher (and more) for sway";
+    homepage = "https://git.sr.ht/~tsdh/swayr";
+    license = with licenses; [ gpl3Plus ];
+    maintainers = with maintainers; [ artturin ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/swayr/icon-paths.patch b/nixpkgs/pkgs/tools/wayland/swayr/icon-paths.patch
new file mode 100644
index 000000000000..8fafc4c4153c
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/swayr/icon-paths.patch
@@ -0,0 +1,17 @@
+diff --git a/src/config.rs b/src/config.rs
+index de7d04b..291114b 100644
+--- a/src/config.rs
++++ b/src/config.rs
+@@ -197,6 +197,12 @@ impl Default for Format {
+             ),
+             urgency_end: Some("</span>".to_string()),
+             icon_dirs: Some(vec![
++                "/run/current-system/sw/share/icons/hicolor/scalable/apps".to_string(),
++                "/run/current-system/sw/share/icons/hicolor/48x48/apps".to_string(),
++                "/run/current-system/sw/share/pixmaps".to_string(),
++                "~/.nix-profile/share/icons/hicolor/scalable/apps".to_string(),
++                "~/.nix-profile/share/icons/hicolor/48x48/apps".to_string(),
++                "~/.nix-profile/share/pixmaps".to_string(),
+                 "/usr/share/icons/hicolor/scalable/apps".to_string(),
+                 "/usr/share/icons/hicolor/48x48/apps".to_string(),
+                 "/usr/share/pixmaps".to_string(),
diff --git a/nixpkgs/pkgs/tools/wayland/wayland-proxy-virtwl/default.nix b/nixpkgs/pkgs/tools/wayland/wayland-proxy-virtwl/default.nix
new file mode 100644
index 000000000000..4008461cc15f
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/wayland-proxy-virtwl/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, fetchFromGitHub
+, ocamlPackages
+, buildPackages
+}:
+
+ocamlPackages.buildDunePackage rec {
+  pname = "wayland-proxy-virtwl";
+  version = "unstable-2021-12-05";
+
+  src = fetchFromGitHub {
+    owner = "talex5";
+    repo = pname;
+    rev = "d7f58d405514dd031f2f12e402c8c6a58e62a885";
+    sha256 = "0riwaqdlrx2gzkrb02v4zdl4ivpmz9g5w87lj3bhqs0l3s6c249s";
+  };
+
+  postPatch = ''
+    # no need to vendor
+    rm -r ocaml-wayland
+  '';
+
+  useDune2 = true;
+  minimumOCamlVersion = "4.08";
+
+  nativeBuildInputs = [
+    buildPackages.ocamlPackages.ppx_cstruct
+  ];
+
+  buildInputs = with ocamlPackages; [
+    wayland
+    cmdliner
+    logs
+    cstruct-lwt
+  ];
+
+  doCheck = true;
+
+  meta = {
+    homepage = "https://github.com/talex5/wayland-virtwl-proxy";
+    description = "Proxy Wayland connections across a VM boundary";
+    license = lib.licenses.asl20;
+    maintainers = [ lib.maintainers.sternenseemann ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/wayland-utils/default.nix b/nixpkgs/pkgs/tools/wayland/wayland-utils/default.nix
new file mode 100644
index 000000000000..16bce1723aa6
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/wayland-utils/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenv, fetchurl
+, meson, pkg-config, ninja, wayland-scanner
+, wayland, wayland-protocols
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wayland-utils";
+  version = "1.0.0";
+
+  src = fetchurl {
+    url = "https://wayland.freedesktop.org/releases/${pname}-${version}.tar.xz";
+    sha256 = "1h38l850ww6hxjb1l8iwa33nkbz8q88bw6lh0aryjyp8b16crzk4";
+  };
+
+  nativeBuildInputs = [ meson pkg-config ninja wayland-scanner ];
+  buildInputs = [ wayland wayland-protocols ];
+
+  meta = with lib; {
+    description = "Wayland utilities (wayland-info)";
+    longDescription = ''
+      A collection of Wayland related utilities:
+      - wayland-info: A utility for displaying information about the Wayland
+        protocols supported by a Wayland compositor.
+    '';
+    homepage = "https://gitlab.freedesktop.org/wayland/wayland-utils";
+    license = licenses.mit; # Expat version
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/wdomirror/default.nix b/nixpkgs/pkgs/tools/wayland/wdomirror/default.nix
new file mode 100644
index 000000000000..8fddf51f539d
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/wdomirror/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, wayland
+, wayland-protocols
+}:
+
+stdenv.mkDerivation {
+  pname = "wdomirror";
+  version = "unstable-2021-01-08";
+
+  src = fetchFromGitHub {
+    owner = "progandy";
+    repo = "wdomirror";
+    rev = "e4a4934e6f739909fbf346cbc001c72690b5c906";
+    sha256 = "1fz0sajhdjqas3l6mpik8w1k15wbv65hgh9r9vdgfqvw5l6cx7jv";
+  };
+
+  nativeBuildInputs = [ meson ninja pkg-config wayland-protocols ];
+
+  buildInputs = [ wayland ];
+
+  installPhase = ''
+    runHook preInstall
+    install -m755 -D wdomirror $out/bin/wdomirror
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Mirrors an output of a wlroots compositor to a window";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ jpas ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/wev/default.nix b/nixpkgs/pkgs/tools/wayland/wev/default.nix
new file mode 100644
index 000000000000..d04cee342b7e
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/wev/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, stdenv
+, fetchFromSourcehut
+, pkg-config
+, scdoc
+, wayland-scanner
+, wayland
+, wayland-protocols
+, libxkbcommon
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wev";
+  version = "1.0.0";
+
+  src = fetchFromSourcehut {
+    owner = "~sircmpwn";
+    repo = pname;
+    rev = version;
+    sha256 = "0l71v3fzgiiv6xkk365q1l08qvaymxd4kpaya6r2g8yzkr7i2hms";
+  };
+
+  nativeBuildInputs = [ pkg-config scdoc wayland-scanner ];
+  buildInputs = [ wayland wayland-protocols libxkbcommon ];
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = with lib; {
+    homepage = "https://git.sr.ht/~sircmpwn/wev";
+    description = "Wayland event viewer";
+    longDescription = ''
+      This is a tool for debugging events on a Wayland window, analagous to the
+      X11 tool xev.
+    '';
+    license = licenses.mit;
+    maintainers = with maintainers; [ primeos ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/wl-clipboard-x11/default.nix b/nixpkgs/pkgs/tools/wayland/wl-clipboard-x11/default.nix
new file mode 100644
index 000000000000..5e87342dff89
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/wl-clipboard-x11/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenv, fetchFromGitHub, wl-clipboard }:
+
+stdenv.mkDerivation rec {
+  pname = "wl-clipboard-x11";
+  version = "5";
+
+  src = fetchFromGitHub {
+    owner = "brunelli";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-i+oF1Mu72O5WPTWzqsvo4l2CERWWp4Jq/U0DffPZ8vg=";
+  };
+
+  makeFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  postPatch = ''
+    substituteInPlace src/wl-clipboard-x11 \
+      --replace '$(command -v wl-copy)' ${wl-clipboard}/bin/wl-copy \
+      --replace '$(command -v wl-paste)' ${wl-clipboard}/bin/wl-paste
+  '';
+
+  meta = with lib; {
+    description = "A wrapper to use wl-clipboard as a drop-in replacement for X11 clipboard tools";
+    homepage = "https://github.com/brunelli/wl-clipboard-x11";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ samuelgrf ];
+    mainProgram = "xclip";
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/wl-clipboard/default.nix b/nixpkgs/pkgs/tools/wayland/wl-clipboard/default.nix
new file mode 100644
index 000000000000..0bc195e96260
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/wl-clipboard/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, wayland
+, wayland-protocols
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wl-clipboard";
+  version = "2.0.0";
+
+  src = fetchFromGitHub {
+    owner = "bugaevc";
+    repo = "wl-clipboard";
+    rev = "v${version}";
+    sha256 = "0c4w87ipsw09aii34szj9p0xfy0m00wyjpll0gb0aqmwa60p0c5d";
+  };
+
+  nativeBuildInputs = [ meson ninja pkg-config wayland-protocols ];
+  buildInputs = [ wayland ];
+
+  meta = with lib; {
+    homepage = "https://github.com/bugaevc/wl-clipboard";
+    description = "Command-line copy/paste utilities for Wayland";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ dywedir ];
+    platforms = platforms.linux;
+  };
+}
+# TODO: is wayland-protocols a nativeBuildInput or a buildInput?
diff --git a/nixpkgs/pkgs/tools/wayland/wl-mirror/default.nix b/nixpkgs/pkgs/tools/wayland/wl-mirror/default.nix
new file mode 100644
index 000000000000..4476c5be93c7
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/wl-mirror/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, pkg-config
+, wayland
+, wayland-protocols
+, wayland-scanner
+, wlr-protocols
+, libGL
+, installExampleScripts ? true
+, makeWrapper
+, pipectl
+, slurp
+, rofi
+}:
+
+let
+  wl-present-binpath = lib.makeBinPath [
+    pipectl
+    rofi
+    slurp
+    (placeholder "out")
+  ];
+in
+
+stdenv.mkDerivation rec {
+  pname = "wl-mirror";
+  version = "0.8.1";
+
+  src = fetchFromGitHub {
+    owner = "Ferdi265";
+    repo = "wl-mirror";
+    rev = "v${version}";
+    hash = "sha256-P5rvZPpIStlOSGj3PaiXAMPWqgWpkC+4IrixEMwoGJU=";
+  };
+
+  patchPhase = ''
+    substituteInPlace CMakeLists.txt \
+      --replace 'WL_PROTOCOL_DIR "/usr' 'WL_PROTOCOL_DIR "${wayland-protocols}' \
+      --replace 'WLR_PROTOCOL_DIR "/usr' 'WLR_PROTOCOL_DIR "${wlr-protocols}'
+  '';
+
+  cmakeFlags = [
+    "-DINSTALL_EXAMPLE_SCRIPTS=${if installExampleScripts then "ON" else "OFF"}"
+  ];
+
+  postInstall = lib.optionalString installExampleScripts ''
+    wrapProgram $out/bin/wl-present --prefix PATH ":" ${wl-present-binpath}
+  '';
+
+  nativeBuildInputs = [ cmake pkg-config wayland-scanner makeWrapper ];
+  buildInputs = [ libGL wayland wayland-protocols wlr-protocols ];
+
+  meta = with lib; {
+    homepage = "https://github.com/Ferdi265/wl-mirror";
+    description = "Mirrors an output onto a Wayland surface.";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ synthetica twitchyliquid64 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/wlogout/default.nix b/nixpkgs/pkgs/tools/wayland/wlogout/default.nix
new file mode 100644
index 000000000000..d9d442126010
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/wlogout/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, meson
+, ninja
+, scdoc
+, gtk3
+, libxkbcommon
+, wayland
+, wayland-protocols
+, gtk-layer-shell
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wlogout";
+  version = "1.1.1";
+
+  src = fetchFromGitHub {
+    owner = "ArtsyMacaw";
+    repo = "wlogout";
+    rev = version;
+    sha256 = "cTscfx+erHVFHwwYpN7pADQWt5sq75sQSyXSP/H8kOs=";
+  };
+
+  nativeBuildInputs = [ pkg-config meson ninja scdoc ];
+  buildInputs = [
+    gtk3
+    libxkbcommon
+    wayland
+    wayland-protocols
+    gtk-layer-shell
+  ];
+
+  postPatch = ''
+    substituteInPlace style.css \
+      --replace "/usr/share/wlogout" "$out/share/${pname}"
+
+    substituteInPlace main.c \
+      --replace "/etc/wlogout" "$out/etc/${pname}"
+  '';
+
+  mesonFlags = [
+    "--datadir=${placeholder "out"}/share"
+    "--sysconfdir=${placeholder "out"}/etc"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/ArtsyMacaw/wlogout";
+    description = "A wayland based logout menu";
+    license = licenses.mit;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.unix;
+  };
+}
+# TODO: shell completions
diff --git a/nixpkgs/pkgs/tools/wayland/wlr-randr/default.nix b/nixpkgs/pkgs/tools/wayland/wlr-randr/default.nix
new file mode 100644
index 000000000000..e2c941998a99
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/wlr-randr/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, wayland
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wlr-randr";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "emersion";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-JeSxFXSFxcTwJz9EaLb18wtD4ZIT+ATeYM5OyDTJhDQ=";
+  };
+
+  nativeBuildInputs = [ meson ninja pkg-config ];
+  buildInputs = [ wayland ];
+
+  meta = with lib; {
+    description = "An xrandr clone for wlroots compositors";
+    homepage = "https://github.com/emersion/wlr-randr";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ma27 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/wlrctl/default.nix b/nixpkgs/pkgs/tools/wayland/wlrctl/default.nix
new file mode 100644
index 000000000000..7cb54d381b0b
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/wlrctl/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv, fetchFromSourcehut, meson, pkg-config, scdoc, ninja, libxkbcommon, wayland }:
+
+stdenv.mkDerivation rec {
+  pname = "wlrctl";
+  version = "0.2.1";
+
+  src = fetchFromSourcehut {
+    owner = "~brocellous";
+    repo = "wlrctl";
+    rev = "v${version}";
+    sha256 = "039cxc82k7x473n6d65jray90rj35qmfdmr390zy0c7ic7vn4b78";
+  };
+
+  nativeBuildInputs = [ meson pkg-config scdoc ninja ];
+  buildInputs = [ libxkbcommon wayland ];
+
+  NIX_CFLAGS_COMPILE = "-Wno-error=type-limits";
+
+  meta = with lib; {
+    description = "Command line utility for miscellaneous wlroots Wayland extensions";
+    homepage = "https://git.sr.ht/~brocellous/wlrctl";
+    license = licenses.mit;
+    maintainers = with maintainers; [ puffnfresh artturin ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/wlsunset/default.nix b/nixpkgs/pkgs/tools/wayland/wlsunset/default.nix
new file mode 100644
index 000000000000..7ced81616f63
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/wlsunset/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchFromSourcehut
+, meson, pkg-config, ninja, wayland-scanner, scdoc
+, wayland, wayland-protocols
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wlsunset";
+  version = "0.2.0";
+
+  src = fetchFromSourcehut {
+    owner = "~kennylevinsen";
+    repo = pname;
+    rev = version;
+    sha256 = "0hhsddh3rs066rbsjksr8kcwg8lvglbvs67dq0r5wx5c1xcwb51w";
+  };
+
+  nativeBuildInputs = [ meson pkg-config ninja wayland-scanner scdoc ];
+  buildInputs = [ wayland wayland-protocols ];
+
+  meta = with lib; {
+    description = "Day/night gamma adjustments for Wayland";
+    longDescription = ''
+      Day/night gamma adjustments for Wayland compositors supporting
+      wlr-gamma-control-unstable-v1.
+    '';
+    homepage = "https://sr.ht/~kennylevinsen/wlsunset/";
+    changelog = "https://git.sr.ht/~kennylevinsen/wlsunset/refs/${version}";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/wluma/default.nix b/nixpkgs/pkgs/tools/wayland/wluma/default.nix
new file mode 100644
index 000000000000..2921e3858b41
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/wluma/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, fetchFromGitHub
+, makeWrapper
+, rustPlatform
+, vulkan-loader
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "wluma";
+  version = "2.0.1";
+
+  src = fetchFromGitHub {
+    owner = "maximbaz";
+    repo = "wluma";
+    rev = version;
+    sha256 = "sha256-fqBEJS+SQoPNNEw6jyoiZjq/chY73bQ+cM21F8RdNPE=";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postInstall = ''
+    wrapProgram $out/bin/wluma \
+      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ vulkan-loader ]}"
+  '';
+
+  cargoSha256 = "sha256-dZBA6VeJRHmqpazRwjLP1kYcYYN5LCFWkIaXqp4/RkQ=";
+
+  meta = with lib; {
+    description = "Automatic brightness adjustment based on screen contents and ALS";
+    homepage = "https://github.com/maximbaz/wluma";
+    license = licenses.isc;
+    maintainers = with maintainers; [ yevhenshymotiuk ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/wob/default.nix b/nixpkgs/pkgs/tools/wayland/wob/default.nix
new file mode 100644
index 000000000000..7f5b7b61c628
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/wob/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, scdoc
+, wayland-scanner
+, wayland
+, wayland-protocols
+, libseccomp
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wob";
+  version = "0.12";
+
+  src = fetchFromGitHub {
+    owner = "francma";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-gVQqZbz6ylBBlmhSgyaSEvAyMi48QiuviwZodPVGJxI=";
+  };
+
+  nativeBuildInputs = [ meson ninja pkg-config scdoc wayland-scanner ];
+  buildInputs = [ wayland wayland-protocols ]
+    ++ lib.optional stdenv.isLinux libseccomp;
+
+  mesonFlags = lib.optional stdenv.isLinux "-Dseccomp=enabled";
+
+  meta = with lib; {
+    inherit (src.meta) homepage;
+    description = "A lightweight overlay bar for Wayland";
+    longDescription = ''
+      A lightweight overlay volume/backlight/progress/anything bar for Wayland,
+      inspired by xob.
+    '';
+    changelog = "https://github.com/francma/wob/releases/tag/${version}";
+    license = licenses.isc;
+    maintainers = with maintainers; [ primeos ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/wshowkeys/default.nix b/nixpkgs/pkgs/tools/wayland/wshowkeys/default.nix
new file mode 100644
index 000000000000..32fb81fe1886
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/wshowkeys/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenv, fetchFromGitHub
+, meson, pkg-config, wayland-scanner, ninja
+, cairo, libinput, pango, wayland, wayland-protocols, libxkbcommon
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wshowkeys-unstable";
+  version = "2021-08-01";
+
+  src = fetchFromGitHub {
+    owner = "ammgws";
+    repo = "wshowkeys";
+    rev = "e8bfc78f08ebdd1316daae59ecc77e62bba68b2b";
+    sha256 = "sha256-/HvNCQWsXOJZeCxHWmsLlbBDhBzF7XP/SPLdDiWMDC4=";
+  };
+
+  nativeBuildInputs = [ meson pkg-config wayland-scanner ninja ];
+  buildInputs = [ cairo libinput pango wayland wayland-protocols libxkbcommon ];
+
+  meta = with lib; {
+    description = "Displays keys being pressed on a Wayland session";
+    longDescription = ''
+      Displays keypresses on screen on supported Wayland compositors (requires
+      wlr_layer_shell_v1 support).
+      Note: This tool requires root permissions to read input events, but these
+      permissions are dropped after startup. The NixOS module provides such a
+      setuid binary (use "programs.wshowkeys.enable = true;").
+    '';
+    homepage = "https://github.com/ammgws/wshowkeys";
+    license = with licenses; [ gpl3Only mit ];
+    # Some portions of the code are taken from Sway which is MIT licensed.
+    # TODO: gpl3Only or gpl3Plus (ask upstream)?
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ primeos berbiche ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/wtype/default.nix b/nixpkgs/pkgs/tools/wayland/wtype/default.nix
new file mode 100644
index 000000000000..3476f3abcdaa
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/wtype/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+
+, meson
+, ninja
+, pkg-config
+
+, libxkbcommon
+, wayland
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wtype";
+  version = "0.3";
+
+  src = fetchFromGitHub {
+    owner = "atx";
+    repo = "wtype";
+    rev = "v${version}";
+    hash = "sha256-8q2PxI3ItR4tsP/KOiSlqnuK4ZSe7OdekheolEFVmys=";
+  };
+
+  nativeBuildInputs = [ meson ninja pkg-config wayland ];
+  buildInputs = [ libxkbcommon wayland ];
+
+  meta = with lib; {
+    description = "xdotool type for wayland";
+    homepage = "https://github.com/atx/wtype";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ justinlovinger ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/ydotool/default.nix b/nixpkgs/pkgs/tools/wayland/ydotool/default.nix
new file mode 100644
index 000000000000..4a75eac8c574
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/ydotool/default.nix
@@ -0,0 +1,41 @@
+{ lib, stdenv, fetchFromGitHub, pkg-config, cmake, boost, libevdevplus, libuinputplus, iodash, cxxopts}:
+
+stdenv.mkDerivation rec {
+  pname = "ydotool";
+  version = "unstable-2021-01-20";
+
+  src = fetchFromGitHub {
+    owner = "ReimuNotMoe";
+    repo = "ydotool";
+    rev = "b1d041f52f7bac364d6539b1251d29c3b77c0f37";
+    sha256 = "1gzdbx6fv0dbcyia3yyzhv93az2gf90aszb9kcj5cnxywfpv9w9g";
+  };
+
+  # upstream decided to use a cpp package manager called cpm.
+  # we need to disable that because it wants networking, furthermore,
+  # it does some system folder creating which also needs to be disabled.
+  # Both changes are to respect the sandbox.
+  patches = [ ./fixup-cmakelists.patch ];
+
+
+  # cxxopts is a header only library.
+  # See pull request: https://github.com/ReimuNotMoe/ydotool/pull/105
+  postPatch = ''
+    substituteInPlace CMakeLists.txt --replace \
+      "PUBLIC cxxopts" \
+      "PUBLIC"
+  '';
+
+  nativeBuildInputs = [ cmake pkg-config ];
+  buildInputs = [
+    boost libevdevplus libuinputplus iodash cxxopts
+  ];
+
+  meta = with lib; {
+    inherit (src.meta) homepage;
+    description = "Generic Linux command-line automation tool";
+    license = licenses.mit;
+    maintainers = with maintainers; [ willibutz ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/wayland/ydotool/fixup-cmakelists.patch b/nixpkgs/pkgs/tools/wayland/ydotool/fixup-cmakelists.patch
new file mode 100644
index 000000000000..965d5c38d83f
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/ydotool/fixup-cmakelists.patch
@@ -0,0 +1,58 @@
+From bb8bc44d22060cd1215712117cf30eae09f4f6ba Mon Sep 17 00:00:00 2001
+From: Jappie Klooster <jappieklooster@hotmail.com>
+Date: Fri, 2 Apr 2021 14:04:14 -0400
+Subject: [PATCH] Fixup cmaklists
+
+We remove cpm, which is a package manager for c++,
+which requires networking, so it's better just deleted.
+
+Furthermore we delete the adddirectory statements.
+These want to modify directories outside of the sandbox.
+---
+ CMakeLists.txt | 26 --------------------------
+ 1 file changed, 26 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b5e8789..b797538 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -13,30 +13,6 @@ endif()
+ 
+ include(${CPM_DOWNLOAD_LOCATION})
+ 
+-CPMAddPackage(
+-        NAME IODash
+-        GITHUB_REPOSITORY YukiWorkshop/IODash
+-        VERSION 0.1.0
+-)
+-
+-CPMAddPackage(
+-        NAME libevdevPlus
+-        GITHUB_REPOSITORY YukiWorkshop/libevdevPlus
+-        VERSION 0.2.1
+-)
+-
+-CPMAddPackage(
+-        NAME libuInputPlus
+-        GITHUB_REPOSITORY YukiWorkshop/libuInputPlus
+-        VERSION 0.2.1
+-)
+-
+-CPMAddPackage(
+-        NAME cxxopts
+-        GITHUB_REPOSITORY jarro2783/cxxopts
+-        VERSION 3.0.0
+-        GIT_TAG 2d8e17c4f88efce80e274cb03eeb902e055a91d3
+-)
+ 
+ set(SOURCE_FILES_LIBRARY
+         CommonIncludes.hpp
+@@ -74,5 +50,3 @@ add_executable(ydotool ${SOURCE_FILES_CLIENT})
+ target_link_libraries(ydotool ydotool_library dl pthread uInputPlus evdevPlus)
+ install(TARGETS ydotool DESTINATION ${CMAKE_INSTALL_BINDIR})
+ 
+-add_subdirectory(Daemon)
+-add_subdirectory(manpage)
+-- 
+2.29.2
+