Merge staging-next-21.11 into staging-21.11

This commit is contained in:
github-actions[bot]
2022-02-20 00:14:17 +00:00
committed by GitHub
30 changed files with 5431 additions and 5255 deletions

View File

@@ -23,6 +23,7 @@ import ./make-test-python.nix ({ pkgs, ...} : {
};
testScript = ''
import re
# sane loads libsane-brother5.so.1 successfully, and scanimage doesn't die
strace = machine.succeed('strace scanimage -L 2>&1').split("\n")
regexp = 'openat\(.*libsane-brother5.so.1", O_RDONLY|O_CLOEXEC\) = \d\d*$'

View File

@@ -13,7 +13,7 @@ perlPackages.buildPerlPackage rec {
version = "2.12.3";
src = fetchurl {
url = "mirror://sourceforge/gscan2pdf/${version}/${pname}-${version}.tar.xz";
url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.xz";
sha256 = "tdXTcoI7DnrBsXtXR0r07hz0lDcAjZJad+o4wwxHcOk=";
};

View File

@@ -93,11 +93,11 @@ in
stdenv.mkDerivation rec {
pname = "brave";
version = "1.35.101";
version = "1.35.103";
src = fetchurl {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
sha256 = "q5GL6R87b3iYLiM9oJQgCOVeXzyNFY6x8fQ9KsDN7gk=";
sha256 = "UgperKruN2quKdFTf/iTa+dd2GB57nt+mu6KBe4VvYk=";
};
dontConfigure = true;

View File

@@ -7,10 +7,10 @@ in
rec {
firefox = common rec {
pname = "firefox";
version = "97.0";
version = "97.0.1";
src = fetchurl {
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "a913695a42cb06ee9bda2a20e65cc573e40ca93e9f75b7ee0a43ebd1935b371e7e80d5fc8d5f126ad0712ab848635a8624bbeed43807e5c179537aa32c884186";
sha512 = "8620aace77167593aab5acd230860eb3e67eeddc49c0aad0491b5dc20bd0ddb6089dbb8975aed241426f57b2ad772238b04d03b95390175f580cbd80bb6d5f6c";
};
meta = {

View File

@@ -2,21 +2,22 @@
let
pname = "lens";
version = "5.2.6";
build = "${version}-latest.20211104.1";
version = "5.3.4";
build = "${version}-latest.20220120.1";
name = "${pname}-${version}";
src = fetchurl {
url = "https://api.k8slens.dev/binaries/Lens-${build}.x86_64.AppImage";
sha256 = "1lkxzgwrgafraimpnciv89fs6r399275vb73drxlg5z83acacf5z";
name="${pname}.AppImage";
sha256 = "sha256-9vRLQFSocVkHAfgwdKSPhSAO4G/v/ANd0WQmilcZiVw=";
name = "${pname}.AppImage";
};
appimageContents = appimageTools.extractType2 {
inherit name src;
};
in appimageTools.wrapType2 {
in
appimageTools.wrapType2 {
inherit name src;
extraInstallCommands =

View File

@@ -2,7 +2,7 @@
let
inherit (pkgs) callPackage fetchurl;
versions = if stdenv.isLinux then {
stable = "0.0.16";
stable = "0.0.17";
ptb = "0.0.27";
canary = "0.0.133";
} else {
@@ -21,7 +21,7 @@ let
stable = fetchurl {
url =
"https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
sha256 = "UTVKjs/i7C/m8141bXBsakQRFd/c//EmqqhKhkr1OOk=";
sha256 = "058k0cmbm4y572jqw83bayb2zzl2fw2aaz0zj1gvg6sxblp76qil";
};
ptb = fetchurl {
url =

View File

@@ -64,7 +64,7 @@ assert enableGeoLocation -> geoclue2 != null;
stdenv.mkDerivation rec {
pname = "webkitgtk";
version = "2.34.5";
version = "2.34.6";
outputs = [ "out" "dev" ];
@@ -72,7 +72,7 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "https://webkitgtk.org/releases/${pname}-${version}.tar.xz";
sha256 = "sha256-aJMGQ696R6OvBfRtZueEQiQzdT2rM10ygvMZqFpWKbQ=";
sha256 = "sha256-a8j9A0qtBDKiRZzk/H7iWtZaSSTGGL+Nk7UrDBqEwfY=";
};
patches = lib.optionals stdenv.isLinux [

View File

@@ -12,11 +12,12 @@
, testVersion
, tomlkit
, staticjinja
, callPackage
}:
buildPythonPackage rec {
pname = "staticjinja";
version = "4.1.1";
version = "4.1.2";
format = "pyproject";
disabled = pythonOlder "3.6";
@@ -26,7 +27,7 @@ buildPythonPackage rec {
owner = "staticjinja";
repo = pname;
rev = version;
sha256 = "sha256-Bpgff3VaTylnYpkWoaWEiRWu4sYSP6dLbHDOjAhj7BM=";
sha256 = "sha256-YHhGohA24D4O/Bj7JZTj8qaEGEZAupvxWcZYjWFTHmM=";
};
nativeBuildInputs = [
@@ -51,8 +52,9 @@ buildPythonPackage rec {
export PATH="$PATH:$out/bin";
'';
passthru.tests.version = testVersion {
package = staticjinja;
passthru.tests = {
version = testVersion { package = staticjinja; };
minimal-template = callPackage ./test-minimal-template {};
};
meta = with lib; {

View File

@@ -0,0 +1,11 @@
{ stdenv, staticjinja }:
stdenv.mkDerivation {
name = "staticjinja-test-minimal-template";
meta.timeout = 30;
buildCommand = ''
${staticjinja}/bin/staticjinja build --srcpath ${./templates}
grep 'Hello World!' index
touch $out
'';
}

View File

@@ -0,0 +1 @@
Hello {% include './include' %}!

View File

@@ -3,7 +3,7 @@
with lib;
buildLinux (args // rec {
version = "4.14.265";
version = "4.14.267";
# modDirVersion needs to be x.y.z, will automatically add .0 if needed
modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
@@ -13,6 +13,6 @@ buildLinux (args // rec {
src = fetchurl {
url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
sha256 = "1iwjg2z8818g1sl6l79pm5590hzwpxqcxh7wcdb00y4m3maksr0s";
sha256 = "13hq4hcq686gdragjcgmz3m0kkk8abz5lna0ildaa9gybj43yd4c";
};
} // (args.argsOverride or {}))

View File

@@ -3,7 +3,7 @@
with lib;
buildLinux (args // rec {
version = "4.19.228";
version = "4.19.230";
# modDirVersion needs to be x.y.z, will automatically add .0 if needed
modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
@@ -13,6 +13,6 @@ buildLinux (args // rec {
src = fetchurl {
url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
sha256 = "14iis3x3jmfxwqqi7v7ijssqzha8d8nnydi4zqnpk53m45jw7km8";
sha256 = "107sqv4izdnazscwhyam88vbinsvnd33z8agn4awc42hkqh9l20p";
};
} // (args.argsOverride or {}))

View File

@@ -1,12 +1,12 @@
{ buildPackages, fetchurl, perl, buildLinux, nixosTests, stdenv, ... } @ args:
buildLinux (args // rec {
version = "4.9.300";
version = "4.9.302";
extraMeta.branch = "4.9";
extraMeta.broken = stdenv.isAarch64;
src = fetchurl {
url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
sha256 = "1bzmnkhxgz093ninqg8bh348d7s4xmkld2bld8nl215gnji0wfdb";
sha256 = "0difn0vjz4hz9vl5lklawqy19ccb5gz5p5r1cyckschf0l2nyifm";
};
} // (args.argsOverride or {}))

View File

@@ -3,7 +3,7 @@
with lib;
buildLinux (args // rec {
version = "5.10.99";
version = "5.10.101";
# modDirVersion needs to be x.y.z, will automatically add .0 if needed
modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
@@ -13,6 +13,6 @@ buildLinux (args // rec {
src = fetchurl {
url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
sha256 = "0j84g55d0v3832y9c5gh7bnmhnrb5bc9xdivps5n7n6km9c3b980";
sha256 = "13hwpb85dynbayghxs3ln3hbyh8djgl5fj63vxwc8izfny62aj87";
};
} // (args.argsOverride or {}))

View File

@@ -3,7 +3,7 @@
with lib;
buildLinux (args // rec {
version = "5.15.22";
version = "5.15.24";
# modDirVersion needs to be x.y.z, will automatically add .0 if needed
modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
@@ -13,6 +13,6 @@ buildLinux (args // rec {
src = fetchurl {
url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
sha256 = "1hv3ci37nz79m1dg83ha4hl1jjnl3l52lvdzx514sp8hqihgji1m";
sha256 = "0zx9big7n8gh6y14c05llxsqh543q0czjdrq906m8cc7r01yp5pl";
};
} // (args.argsOverride or { }))

View File

@@ -3,7 +3,7 @@
with lib;
buildLinux (args // rec {
version = "5.16.8";
version = "5.16.10";
# modDirVersion needs to be x.y.z, will automatically add .0 if needed
modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
@@ -13,6 +13,6 @@ buildLinux (args // rec {
src = fetchurl {
url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
sha256 = "05h3b11czr710lilmb5gq84a78cfz3jm03q2q0gcrpcaxq2mzajj";
sha256 = "17i3j07hgljsiz2kymbskp35p2xp14gb0mdi5s2r61c0h406yk8c";
};
} // (args.argsOverride or { }))

View File

@@ -3,7 +3,7 @@
with lib;
buildLinux (args // rec {
version = "5.4.178";
version = "5.4.180";
# modDirVersion needs to be x.y.z, will automatically add .0 if needed
modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
@@ -13,6 +13,6 @@ buildLinux (args // rec {
src = fetchurl {
url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
sha256 = "19k2yzqlr4rarl086sr6vjnh0lq5wmg5n7r2p0cai9yfvq3spp2c";
sha256 = "07ckmgcqpr39bzpp8v60b2vkb03p8931k7sl3ywg6f00lvcbaf8n";
};
} // (args.argsOverride or {}))

View File

@@ -6,7 +6,7 @@
, ... } @ args:
let
version = "5.10.90-rt60"; # updated by ./update-rt.sh
version = "5.10.78-rt55"; # updated by ./update-rt.sh
branch = lib.versions.majorMinor version;
kversion = builtins.elemAt (lib.splitString "-" version) 0;
in buildLinux (args // {
@@ -18,14 +18,14 @@ in buildLinux (args // {
src = fetchurl {
url = "mirror://kernel/linux/kernel/v5.x/linux-${kversion}.tar.xz";
sha256 = "0997ijkmvf9iz4hn8m8naiagphhyvl4r6qx4q3gxk8qlq1j44pll";
sha256 = "03q5lrv8gr9hnm7984pxi9kwsvxrn21qwykj60amisi2wac6r05y";
};
kernelPatches = let rt-patch = {
name = "rt";
patch = fetchurl {
url = "mirror://kernel/linux/kernel/projects/rt/${branch}/older/patch-${version}.patch.xz";
sha256 = "0533s01ckjjw45b08zs9nhpszdcrqgfpwvnjs2dfjmc6yg9d13pi";
sha256 = "1wcw682r238qi5jgn5zk9m6j2506p9ypfax13bzhjfyjzz3h98kp";
};
}; in [ rt-patch ] ++ kernelPatches;

View File

@@ -24,11 +24,11 @@ let
in stdenv.mkDerivation rec {
pname = "postfix";
version = "3.6.4";
version = "3.6.5";
src = fetchurl {
url = "http://cdn.postfix.johnriley.me/mirrors/postfix-release/official/${pname}-${version}.tar.gz";
hash = "sha256-jeBhnc8vp8IVqAz4S4KrcWMdTUciy6CUlyXOPhgDHU4=";
hash = "sha256-MA+ogRzqINAdJcYZ01m/+rgmVucE2qcZ4MmvxOz/SAg=";
};
nativeBuildInputs = [ makeWrapper m4 ];

View File

@@ -1,4 +1,6 @@
{ lib, mkYarnPackage, fetchFromGitHub, nodejs, runtimeShell }:
{ lib, mkYarnPackage, fetchFromGitHub, nodejs, runtimeShell
, nodePackages, python3, vips, glib, pkg-config
}:
# Notes for the upgrade:
# * Download the tarball of the new version to use.
@@ -10,13 +12,13 @@
mkYarnPackage rec {
pname = "grafana-image-renderer";
version = "3.3.0";
version = "3.4.0";
src = fetchFromGitHub {
owner = "grafana";
repo = "grafana-image-renderer";
rev = "v${version}";
sha256 = "sha256-q4w40Do3e4vMluwAb1YwSGMVHO6QRZr8Fa5I+05uzLI=";
sha256 = "sha256-6yw+zp83T6VVa4A9KYX6rzMKG5GoyJ7M8Z+cEHE4uts=";
};
buildPhase = ''
@@ -35,6 +37,13 @@ mkYarnPackage rec {
yarnNix = ./yarn.nix;
yarnLock = ./yarn.lock;
pkgConfig.sharp = {
buildInputs = [ glib vips nodePackages.node-gyp python3 pkg-config ];
postInstall = ''
node-gyp rebuild
'';
};
distPhase = ''
runHook preDist

View File

@@ -14,6 +14,7 @@
"prettier:write": "prettier --list-different \"**/*.ts\" --write",
"precommit": "npm run eslint & npm run typecheck",
"watch": "tsc-watch --onSuccess \"node build/app.js server --config=dev.json\"",
"watch:debug": "tsc-watch --onSuccess \"cross-env DEBUG=puppeteer-cluster:* node build/app.js server --config=dev.json\"",
"build": "tsc",
"start": "node build/app.js --config=dev.json"
},
@@ -30,8 +31,10 @@
"morgan": "^1.9.0",
"on-finished": "^2.3.0",
"prom-client": "^11.5.3",
"puppeteer": "^10.0.0",
"puppeteer": "^13.1.3",
"puppeteer-cluster": "^0.22.0",
"poolpeteer": "^0.22.0",
"sharp": "0.29.3",
"unique-filename": "^1.1.0",
"winston": "^3.2.1"
},
@@ -39,6 +42,7 @@
"@grafana/eslint-config": "^2.5.0",
"@types/express": "^4.11.1",
"@types/node": "^14.14.41",
"cross-env": "7.0.3",
"@typescript-eslint/eslint-plugin": "^4.32.0",
"@typescript-eslint/parser": "^4.32.0",
"eslint": "^7.32.0",
@@ -49,7 +53,7 @@
"eslint-plugin-react-hooks": "^4.2.0",
"husky": "^4.3.8",
"lint-staged": "^11.2.0",
"pkg": "^5.4.1",
"pkg": "5.5.2",
"prettier": "2.2.1",
"tsc-watch": "^4.2.3",
"typescript": "^4.3.2"
@@ -69,7 +73,7 @@
},
"bin": "build/app.js",
"engines": {
"node": ">=14 <15"
"node": ">=14 <=16"
},
"volta": {
"node": "14.16.1"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,9 @@
, buildEnv
, fetchurl
, makeWrapper
, openssl
, procps
, rpmextract
, zlib
# optional packages that enable certain features
, acl ? null # EXT2/EXT3/XFS ACL support
@@ -18,7 +20,7 @@
# For an explanation of optional packages
# (features provided by them, version limits), see
# https://www-01.ibm.com/support/docview.wss?uid=swg21052223#Version%208.1
# https://www.ibm.com/support/pages/node/660813#Version%208.1
# IBM Tivoli Storage Manager Client uses a system-wide
@@ -40,21 +42,31 @@
# point to this derivations `/dsmi_dir` directory symlink.
# Other environment variables might be necessary,
# depending on local configuration or usage; see:
# https://www.ibm.com/support/knowledgecenter/en/SSEQVQ_8.1.8/client/c_cfg_sapiunix.html
# https://www.ibm.com/docs/en/spectrum-protect/8.1.13?topic=solaris-set-api-environment-variables
# The newest version of TSM client should be discoverable
# by going the the `downloadPage` (see `meta` below),
# there to "Client Latest Downloads",
# "IBM Spectrum Protect Client Downloads and READMEs",
# then to "Linux x86_64 Ubuntu client" (as of 2019-07-15).
# The newest version of TSM client should be discoverable by
# going to the `downloadPage` (see `meta` below).
# Find the "Backup-archive client" table on that page.
# Look for "Download Documents" of the latest release.
# Here, two links must be checked:
# * "IBM Spectrum Protect Client ... Downloads and READMEs":
# In the table at the page's bottom,
# check the date of the "Linux x86_64 client"
# * "IBM Spectrum Protect BA client ... interim fix downloads"
# Look for the "Linux x86_64 client" rows
# in the table # at the bottom of each page.
# Follow the "HTTPS" link of the row with the latest date stamp.
# In the directory listing to show up, pick the big `.tar` file.
#
# (as of 2021-12-18)
let
meta = {
homepage = "https://www.ibm.com/us-en/marketplace/data-protection-and-recovery";
downloadPage = "https://www-01.ibm.com/support/docview.wss?uid=swg21239415";
homepage = "https://www.ibm.com/products/data-protection-and-recovery";
downloadPage = "https://www.ibm.com/support/pages/ibm-spectrum-protect-downloads-latest-fix-packs-and-interim-fixes";
platforms = [ "x86_64-linux" ];
license = lib.licenses.unfree;
maintainers = [ lib.maintainers.yarny ];
@@ -74,19 +86,30 @@ let
'';
};
mkSrcUrl = version:
let
major = lib.versions.major version;
minor = lib.versions.minor version;
patch = lib.versions.patch version;
fixup = lib.lists.elemAt (lib.versions.splitVersion version) 3;
in
"https://public.dhe.ibm.com/storage/tivoli-storage-management/${if fixup=="0" then "maintenance" else "patches"}/client/v${major}r${minor}/Linux/LinuxX86/BA/v${major}${minor}${patch}/${version}-TIV-TSMBAC-LinuxX86.tar";
unwrapped = stdenv.mkDerivation rec {
name = "tsm-client-${version}-unwrapped";
version = "8.1.8.0";
version = "8.1.13.3";
src = fetchurl {
url = "ftp://public.dhe.ibm.com/storage/tivoli-storage-management/maintenance/client/v8r1/Linux/LinuxX86_DEB/BA/v818/${version}-TIV-TSMBAC-LinuxX86_DEB.tar";
sha256 = "0c1d0jm0i7qjd314nhj2vj8fs7sncm1x2n4d6dg4049jniyvjhpk";
url = mkSrcUrl version;
sha256 = "1dwczf236drdaf4jcfzz5154vdwvxf5zraxhrhiddl6n80hnvbcd";
};
inherit meta;
nativeBuildInputs = [
autoPatchelfHook
rpmextract
];
buildInputs = [
openssl
stdenv.cc.cc
zlib
];
@@ -96,12 +119,15 @@ let
sourceRoot = ".";
postUnpack = ''
for debfile in *.deb
do
ar -x "$debfile"
tar --xz --extract --file=data.tar.xz
rm data.tar.xz
done
rpmextract TIVsm-API64.x86_64.rpm
rpmextract TIVsm-APIcit.x86_64.rpm
rpmextract TIVsm-BA.x86_64.rpm
rpmextract TIVsm-BAcit.x86_64.rpm
rpmextract TIVsm-BAhdw.x86_64.rpm
rpmextract TIVsm-JBB.x86_64.rpm
# use globbing so that version updates don't break the build:
rpmextract gskcrypt64-*.linux.x86_64.rpm
rpmextract gskssl64-*.linux.x86_64.rpm
'';
installPhase = ''
@@ -113,7 +139,7 @@ let
# Fix relative symlinks after `/usr` was moved up one level
preFixup = ''
for link in $out/lib/* $out/bin/*
for link in $out/lib{,64}/* $out/bin/*
do
target=$(readlink "$link")
if [ "$(cut -b -6 <<< "$target")" != "../../" ]

View File

@@ -5,13 +5,13 @@
stdenv.mkDerivation rec {
pname = "btop";
version = "1.1.2";
version = "1.1.3";
src = fetchFromGitHub {
owner = "aristocratos";
repo = pname;
rev = "v${version}";
sha256 = "sha256-+z6bWX2mgvH6nW7SamDzAexeCn/i3+RaPF8RfoikR2k=";
sha256 = "sha256-uKR1ogQwEoyxyWBiLnW8BsOsYgTpeIpKrKspq0JwYjY=";
};
installFlags = [ "PREFIX=$(out)" ];

View File

@@ -0,0 +1,22 @@
{ lib, python3Packages, slurp }:
python3Packages.buildPythonApplication rec {
pname = "swaytools";
version = "0.1.0";
src = python3Packages.fetchPypi {
inherit pname version;
sha256 = "1eb89259cbe027a0fa6bfc06ecf94e89b15e6f7b4965104e5b661c916ce7408c";
};
propagatedBuildInputs = [ slurp ];
passthru.updateScript = ./update.py;
meta = with lib; {
homepage = "https://github.com/tmccombs/swaytools";
description = "Collection of simple tools for sway (and i3)";
license = licenses.gpl3Only;
maintainers = with maintainers; [ atila ];
};
}

View File

@@ -0,0 +1,58 @@
#!/usr/bin/env nix-shell
#!nix-shell -i python -p python39Packages.requests python39Packages.pip python39Packages.packaging
import requests
import json
import subprocess
try:
from packaging.version import parse
except ImportError:
from pip._vendor.packaging.version import parse
URL_PATTERN = 'https://pypi.python.org/pypi/{package}/json'
def findLine(key,derivation):
count = 0
lines = []
for line in derivation:
if key in line:
lines.append(count)
count += 1
return lines
def get_version(package, url_pattern=URL_PATTERN):
"""Return version of package on pypi.python.org using json."""
req = requests.get(url_pattern.format(package=package))
version = parse('0')
if req.status_code == requests.codes.ok:
j = json.loads(req.text.encode(req.encoding))
releases = j.get('releases', [])
for release in releases:
ver = parse(release)
if not ver.is_prerelease:
if ver > version:
version = ver
sha256 = j["releases"][release][-1]["digests"]["sha256"]
return version, sha256
if __name__ == '__main__':
nixpkgs = subprocess.check_output(["git", "rev-parse", "--show-toplevel"]).decode("utf-8").strip('\n')
swaytoolsFolder = "/pkgs/tools/wayland/swaytools/"
with open(nixpkgs + swaytoolsFolder + "default.nix", 'r') as arq:
derivation = arq.readlines()
version, sha256 = get_version('swaytools')
key = "version = "
line = findLine(key,derivation)[0]
derivation[line] = f' version = "{version}";\n'
key = "sha256 = "
line = findLine(key,derivation)[0]
derivation[line] = f' sha256 = "{sha256}";\n'
with open(nixpkgs + swaytoolsFolder + "default.nix", 'w') as arq:
arq.writelines(derivation)

View File

@@ -2551,6 +2551,8 @@ with pkgs;
swayr = callPackage ../tools/wayland/swayr { };
swaytools = callPackage ../tools/wayland/swaytools { };
wayland-utils = callPackage ../tools/wayland/wayland-utils { };
wayland-proxy-virtwl = callPackage ../tools/wayland/wayland-proxy-virtwl { };