about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/basic-eval.yml2
-rw-r--r--.github/workflows/editorconfig.yml2
-rw-r--r--.github/workflows/manual-nixos.yml2
-rw-r--r--.github/workflows/manual-nixpkgs.yml2
-rw-r--r--.github/workflows/nixos-manual.yml2
-rw-r--r--maintainers/maintainer-list.nix17
-rw-r--r--nixos/modules/module-list.nix3
-rw-r--r--nixos/modules/services/matrix/mjolnir.nix240
-rw-r--r--nixos/modules/services/matrix/mjolnir.xml134
-rw-r--r--nixos/modules/services/matrix/pantalaimon-options.nix70
-rw-r--r--nixos/modules/services/matrix/pantalaimon.nix70
-rw-r--r--nixos/modules/services/web-apps/openwebrx.nix33
-rw-r--r--nixos/modules/virtualisation/lxc-container.nix2
-rw-r--r--nixos/tests/all-tests.nix2
-rw-r--r--nixos/tests/matrix/mjolnir.nix165
-rw-r--r--nixos/tests/matrix/pantalaimon.nix65
-rw-r--r--pkgs/applications/audio/spotify/default.nix6
-rw-r--r--pkgs/applications/graphics/drawio/default.nix6
-rw-r--r--pkgs/applications/misc/metadata-cleaner/default.nix16
-rw-r--r--pkgs/applications/misc/pinfo/default.nix26
-rw-r--r--pkgs/applications/networking/cluster/lens/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/levant/default.nix28
-rw-r--r--pkgs/applications/networking/instant-messengers/element/element-desktop-package.json4
-rw-r--r--pkgs/applications/networking/instant-messengers/element/pin.json8
-rw-r--r--pkgs/applications/networking/instant-messengers/matrix-commander/default.nix6
-rw-r--r--pkgs/applications/networking/instant-messengers/pantalaimon/default.nix6
-rw-r--r--pkgs/applications/networking/instant-messengers/slack/default.nix12
-rw-r--r--pkgs/applications/networking/instant-messengers/turses/default.nix66
-rw-r--r--pkgs/applications/radio/csdr/default.nix38
-rw-r--r--pkgs/applications/radio/openwebrx/default.nix92
-rw-r--r--pkgs/applications/science/logic/redprl/default.nix6
-rw-r--r--pkgs/applications/terminal-emulators/roxterm/default.nix16
-rw-r--r--pkgs/applications/version-management/git-and-tools/glitter/default.nix6
-rw-r--r--pkgs/applications/video/freetube/default.nix4
-rw-r--r--pkgs/build-support/writers/default.nix7
-rw-r--r--pkgs/data/themes/flat-remix-gnome/default.nix16
-rw-r--r--pkgs/development/compilers/chez/default.nix2
-rw-r--r--pkgs/development/interpreters/acl2/0001-Fix-some-paths-for-Nix-build.patch4
-rw-r--r--pkgs/development/interpreters/acl2/default.nix7
-rw-r--r--pkgs/development/libraries/graphene/default.nix10
-rw-r--r--pkgs/development/libraries/vc/0.7.nix3
-rw-r--r--pkgs/development/libraries/vc/vc_0_7_clang_fix.patch28
-rw-r--r--pkgs/development/node-packages/node-packages.json1
-rw-r--r--pkgs/development/node-packages/node-packages.nix1397
-rw-r--r--pkgs/development/ocaml-modules/bistro/default.nix42
-rw-r--r--pkgs/development/python-modules/FormEncode/default.nix1
-rw-r--r--pkgs/development/python-modules/afdko/default.nix2
-rw-r--r--pkgs/development/python-modules/aioeafm/default.nix1
-rw-r--r--pkgs/development/python-modules/aioguardian/default.nix1
-rw-r--r--pkgs/development/python-modules/aiohomekit/default.nix1
-rw-r--r--pkgs/development/python-modules/aiohttp-remotes/default.nix2
-rw-r--r--pkgs/development/python-modules/aionanoleaf/default.nix1
-rw-r--r--pkgs/development/python-modules/amberelectric/default.nix1
-rw-r--r--pkgs/development/python-modules/androguard/default.nix1
-rw-r--r--pkgs/development/python-modules/ansible/collections.nix1
-rw-r--r--pkgs/development/python-modules/approvaltests/default.nix2
-rw-r--r--pkgs/development/python-modules/apsw/default.nix3
-rw-r--r--pkgs/development/python-modules/arrayqueues/default.nix2
-rw-r--r--pkgs/development/python-modules/arrow/2.nix2
-rw-r--r--pkgs/development/python-modules/astor/default.nix2
-rw-r--r--pkgs/development/python-modules/async_stagger/default.nix1
-rw-r--r--pkgs/development/python-modules/asyncio_mqtt/default.nix1
-rw-r--r--pkgs/development/python-modules/autobahn/default.nix1
-rw-r--r--pkgs/development/python-modules/azure-appconfiguration/default.nix3
-rw-r--r--pkgs/development/python-modules/azure-cosmos/default.nix1
-rw-r--r--pkgs/development/python-modules/azure-identity/default.nix1
-rw-r--r--pkgs/development/python-modules/azure-keyvault-certificates/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-keyvault-keys/default.nix1
-rw-r--r--pkgs/development/python-modules/azure-loganalytics/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-billing/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-commerce/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-consumption/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-core/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix3
-rw-r--r--pkgs/development/python-modules/azure-mgmt-datamigration/default.nix1
-rw-r--r--pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix1
-rw-r--r--pkgs/development/python-modules/azure-mgmt-dns/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix1
-rw-r--r--pkgs/development/python-modules/azure-mgmt-keyvault/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-maps/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-monitor/default.nix1
-rw-r--r--pkgs/development/python-modules/azure-mgmt-msi/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-network/default.nix1
-rw-r--r--pkgs/development/python-modules/azure-mgmt-nspkg/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-redhatopenshift/default.nix1
-rw-r--r--pkgs/development/python-modules/azure-mgmt-relay/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-servicefabricmanagedclusters/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-storage/default.nix1
-rw-r--r--pkgs/development/python-modules/azure-nspkg/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-storage-file-share/default.nix1
-rw-r--r--pkgs/development/python-modules/azure-storage/default.nix1
-rw-r--r--pkgs/development/python-modules/bacpypes/default.nix2
-rw-r--r--pkgs/development/python-modules/bagit/default.nix1
-rw-r--r--pkgs/development/python-modules/bayesian-optimization/default.nix1
-rw-r--r--pkgs/development/python-modules/blebox-uniapi/default.nix1
-rw-r--r--pkgs/development/python-modules/blessed/default.nix2
-rw-r--r--pkgs/development/python-modules/blinkpy/default.nix1
-rw-r--r--pkgs/development/python-modules/bokeh/default.nix1
-rw-r--r--pkgs/development/python-modules/bootstrapped-pip/2.nix3
-rw-r--r--pkgs/development/python-modules/bootstrapped-pip/default.nix3
-rw-r--r--pkgs/development/python-modules/bsdiff4/default.nix1
-rw-r--r--pkgs/development/python-modules/cadquery/default.nix1
-rw-r--r--pkgs/development/python-modules/can/default.nix3
-rw-r--r--pkgs/development/python-modules/capstone/default.nix2
-rw-r--r--pkgs/development/python-modules/carbon/default.nix3
-rw-r--r--pkgs/development/python-modules/certbot-dns-google/default.nix1
-rw-r--r--pkgs/development/python-modules/certbot-dns-rfc2136/default.nix1
-rw-r--r--pkgs/development/python-modules/certbot-dns-route53/default.nix1
-rw-r--r--pkgs/development/python-modules/cftime/default.nix1
-rw-r--r--pkgs/development/python-modules/cirq-aqt/default.nix5
-rw-r--r--pkgs/development/python-modules/cirq-core/default.nix21
-rw-r--r--pkgs/development/python-modules/cirq-google/default.nix4
-rw-r--r--pkgs/development/python-modules/cirq-ionq/default.nix5
-rw-r--r--pkgs/development/python-modules/cirq-pasqal/default.nix5
-rw-r--r--pkgs/development/python-modules/cirq-rigetti/default.nix5
-rw-r--r--pkgs/development/python-modules/cirq-web/default.nix5
-rw-r--r--pkgs/development/python-modules/cirq/default.nix3
-rw-r--r--pkgs/development/python-modules/cleo/default.nix2
-rw-r--r--pkgs/development/python-modules/cliff/tests.nix3
-rw-r--r--pkgs/development/python-modules/cock/default.nix2
-rw-r--r--pkgs/development/python-modules/cocotb-bus/default.nix1
-rw-r--r--pkgs/development/python-modules/colanderalchemy/default.nix1
-rw-r--r--pkgs/development/python-modules/colorcet/default.nix1
-rw-r--r--pkgs/development/python-modules/colormath/default.nix1
-rw-r--r--pkgs/development/python-modules/colorspacious/default.nix3
-rw-r--r--pkgs/development/python-modules/consonance/default.nix2
-rw-r--r--pkgs/development/python-modules/construct/2.10.54.nix4
-rw-r--r--pkgs/development/python-modules/construct/default.nix2
-rw-r--r--pkgs/development/python-modules/crashtest/default.nix2
-rw-r--r--pkgs/development/python-modules/crownstone-sse/default.nix1
-rw-r--r--pkgs/development/python-modules/cryptography/3.3.nix2
-rw-r--r--pkgs/development/python-modules/cryptography/default.nix2
-rw-r--r--pkgs/development/python-modules/cytoolz/default.nix1
-rw-r--r--pkgs/development/python-modules/dash/default.nix2
-rw-r--r--pkgs/development/python-modules/datatable/default.nix2
-rw-r--r--pkgs/development/python-modules/dateparser/default.nix1
-rw-r--r--pkgs/development/python-modules/debian-inspector/default.nix1
-rw-r--r--pkgs/development/python-modules/debtcollector/tests.nix3
-rw-r--r--pkgs/development/python-modules/deep_merge/default.nix2
-rw-r--r--pkgs/development/python-modules/delegator-py/default.nix1
-rw-r--r--pkgs/development/python-modules/deltachat/default.nix1
-rw-r--r--pkgs/development/python-modules/devolo-home-control-api/default.nix1
-rw-r--r--pkgs/development/python-modules/digitalocean/default.nix1
-rw-r--r--pkgs/development/python-modules/django-cleanup/default.nix1
-rw-r--r--pkgs/development/python-modules/django-extensions/default.nix3
-rw-r--r--pkgs/development/python-modules/django-formtools/default.nix2
-rw-r--r--pkgs/development/python-modules/django-paintstore/default.nix3
-rw-r--r--pkgs/development/python-modules/django-prometheus/default.nix1
-rw-r--r--pkgs/development/python-modules/django-ranged-response/default.nix2
-rw-r--r--pkgs/development/python-modules/django-statici18n/default.nix2
-rw-r--r--pkgs/development/python-modules/django-tables2/default.nix1
-rw-r--r--pkgs/development/python-modules/django-taggit/default.nix2
-rw-r--r--pkgs/development/python-modules/dlib/default.nix2
-rw-r--r--pkgs/development/python-modules/dnspython/1.nix1
-rw-r--r--pkgs/development/python-modules/docutils/default.nix1
-rw-r--r--pkgs/development/python-modules/downloader-cli/default.nix2
-rw-r--r--pkgs/development/python-modules/ephem/default.nix1
-rw-r--r--pkgs/development/python-modules/etelemetry/default.nix2
-rw-r--r--pkgs/development/python-modules/eth-hash/default.nix1
-rw-r--r--pkgs/development/python-modules/extractcode/libarchive.nix1
-rw-r--r--pkgs/development/python-modules/fastprogress/default.nix1
-rw-r--r--pkgs/development/python-modules/fasttext/default.nix2
-rw-r--r--pkgs/development/python-modules/fire/default.nix2
-rw-r--r--pkgs/development/python-modules/flake8-debugger/default.nix2
-rw-r--r--pkgs/development/python-modules/flit-core/default.nix2
-rw-r--r--pkgs/development/python-modules/flit/default.nix2
-rw-r--r--pkgs/development/python-modules/freezegun/0.3.nix1
-rw-r--r--pkgs/development/python-modules/frozendict/default.nix1
-rw-r--r--pkgs/development/python-modules/gaphas/default.nix45
-rw-r--r--pkgs/development/python-modules/gbinder-python/default.nix3
-rw-r--r--pkgs/development/python-modules/generic/default.nix32
-rw-r--r--pkgs/development/python-modules/gevent-websocket/default.nix1
-rw-r--r--pkgs/development/python-modules/glcontext/default.nix2
-rw-r--r--pkgs/development/python-modules/glom/default.nix1
-rw-r--r--pkgs/development/python-modules/gmpy2/default.nix1
-rw-r--r--pkgs/development/python-modules/gntp/default.nix2
-rw-r--r--pkgs/development/python-modules/google-api-core/default.nix1
-rw-r--r--pkgs/development/python-modules/google-auth-httplib2/default.nix1
-rw-r--r--pkgs/development/python-modules/google-auth/default.nix1
-rw-r--r--pkgs/development/python-modules/google-cloud-appengine-logging/default.nix1
-rw-r--r--pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix1
-rw-r--r--pkgs/development/python-modules/google-cloud-core/default.nix3
-rw-r--r--pkgs/development/python-modules/google-cloud-iam-logging/default.nix1
-rw-r--r--pkgs/development/python-modules/google-cloud-logging/default.nix1
-rw-r--r--pkgs/development/python-modules/google-cloud-org-policy/default.nix2
-rw-r--r--pkgs/development/python-modules/google-cloud-translate/default.nix1
-rw-r--r--pkgs/development/python-modules/graph-tool/2.x.x.nix2
-rw-r--r--pkgs/development/python-modules/greenlet/default.nix1
-rw-r--r--pkgs/development/python-modules/gyp/default.nix1
-rw-r--r--pkgs/development/python-modules/ha-av/default.nix3
-rw-r--r--pkgs/development/python-modules/hacking/default.nix2
-rw-r--r--pkgs/development/python-modules/halo/default.nix1
-rw-r--r--pkgs/development/python-modules/headerparser/default.nix1
-rw-r--r--pkgs/development/python-modules/hid/default.nix1
-rw-r--r--pkgs/development/python-modules/httpretty/default.nix1
-rw-r--r--pkgs/development/python-modules/hydra-check/default.nix2
-rw-r--r--pkgs/development/python-modules/hydrawiser/default.nix1
-rw-r--r--pkgs/development/python-modules/i3ipc/default.nix2
-rw-r--r--pkgs/development/python-modules/ifcopenshell/default.nix1
-rw-r--r--pkgs/development/python-modules/importlib-metadata/2.nix2
-rw-r--r--pkgs/development/python-modules/intake-parquet/default.nix1
-rw-r--r--pkgs/development/python-modules/ipykernel/default.nix2
-rw-r--r--pkgs/development/python-modules/ipython/7.16.nix1
-rw-r--r--pkgs/development/python-modules/ipython/default.nix1
-rw-r--r--pkgs/development/python-modules/ircstates/default.nix1
-rw-r--r--pkgs/development/python-modules/jedi/default.nix1
-rw-r--r--pkgs/development/python-modules/jenkins-job-builder/default.nix3
-rw-r--r--pkgs/development/python-modules/jsonschema/default.nix2
-rw-r--r--pkgs/development/python-modules/jug/default.nix3
-rw-r--r--pkgs/development/python-modules/jupyter-repo2docker/default.nix1
-rw-r--r--pkgs/development/python-modules/kaldi-active-grammar/fork.nix1
-rw-r--r--pkgs/development/python-modules/ldaptor/19.nix1
-rw-r--r--pkgs/development/python-modules/libarchive-c/default.nix1
-rw-r--r--pkgs/development/python-modules/liblzfse/default.nix1
-rw-r--r--pkgs/development/python-modules/linecache2/default.nix1
-rw-r--r--pkgs/development/python-modules/livestreamer/default.nix1
-rw-r--r--pkgs/development/python-modules/log-symbols/default.nix1
-rw-r--r--pkgs/development/python-modules/m3u8/default.nix2
-rw-r--r--pkgs/development/python-modules/markdown/3_1.nix1
-rw-r--r--pkgs/development/python-modules/meshlabxml/default.nix1
-rw-r--r--pkgs/development/python-modules/mesonpep517/default.nix2
-rw-r--r--pkgs/development/python-modules/metakernel/default.nix3
-rw-r--r--pkgs/development/python-modules/mlflow/default.nix1
-rw-r--r--pkgs/development/python-modules/mohawk/default.nix2
-rw-r--r--pkgs/development/python-modules/mox3/default.nix2
-rw-r--r--pkgs/development/python-modules/mutagen/1.43.nix1
-rw-r--r--pkgs/development/python-modules/mutagen/default.nix1
-rw-r--r--pkgs/development/python-modules/nevow/default.nix2
-rw-r--r--pkgs/development/python-modules/nitime/default.nix1
-rw-r--r--pkgs/development/python-modules/nltk/default.nix2
-rw-r--r--pkgs/development/python-modules/numpy/default.nix1
-rw-r--r--pkgs/development/python-modules/ofxtools/default.nix1
-rw-r--r--pkgs/development/python-modules/open-garage/default.nix7
-rw-r--r--pkgs/development/python-modules/openrazer/daemon.nix1
-rw-r--r--pkgs/development/python-modules/openrouteservice/default.nix2
-rw-r--r--pkgs/development/python-modules/openstacksdk/default.nix1
-rw-r--r--pkgs/development/python-modules/orvibo/default.nix6
-rw-r--r--pkgs/development/python-modules/os-service-types/tests.nix3
-rw-r--r--pkgs/development/python-modules/oslo-config/tests.nix3
-rw-r--r--pkgs/development/python-modules/oslotest/tests.nix3
-rw-r--r--pkgs/development/python-modules/p1monitor/default.nix1
-rw-r--r--pkgs/development/python-modules/packaging/2.nix1
-rw-r--r--pkgs/development/python-modules/pandas/default.nix1
-rw-r--r--pkgs/development/python-modules/parquet/default.nix1
-rw-r--r--pkgs/development/python-modules/parse-type/default.nix1
-rw-r--r--pkgs/development/python-modules/paste/default.nix1
-rw-r--r--pkgs/development/python-modules/pastel/default.nix2
-rw-r--r--pkgs/development/python-modules/pathy/default.nix2
-rw-r--r--pkgs/development/python-modules/pbr/tests.nix3
-rw-r--r--pkgs/development/python-modules/pc-ble-driver-py/default.nix1
-rw-r--r--pkgs/development/python-modules/pelican/default.nix1
-rw-r--r--pkgs/development/python-modules/pendulum/default.nix1
-rw-r--r--pkgs/development/python-modules/pexpect/default.nix1
-rw-r--r--pkgs/development/python-modules/pip/20.nix3
-rw-r--r--pkgs/development/python-modules/pip/default.nix3
-rw-r--r--pkgs/development/python-modules/plyer/default.nix2
-rw-r--r--pkgs/development/python-modules/policyuniverse/default.nix1
-rw-r--r--pkgs/development/python-modules/protobuf/default.nix1
-rw-r--r--pkgs/development/python-modules/publicsuffix/default.nix2
-rw-r--r--pkgs/development/python-modules/pxml/default.nix1
-rw-r--r--pkgs/development/python-modules/py3exiv2/default.nix2
-rw-r--r--pkgs/development/python-modules/pyathena/default.nix1
-rw-r--r--pkgs/development/python-modules/pyefergy/default.nix1
-rw-r--r--pkgs/development/python-modules/pyerfa/default.nix1
-rw-r--r--pkgs/development/python-modules/pygobject/3.nix1
-rw-r--r--pkgs/development/python-modules/pygogo/default.nix1
-rw-r--r--pkgs/development/python-modules/pykrakenapi/default.nix1
-rw-r--r--pkgs/development/python-modules/pymumble/default.nix1
-rw-r--r--pkgs/development/python-modules/pynrrd/default.nix1
-rw-r--r--pkgs/development/python-modules/pynvim/default.nix1
-rw-r--r--pkgs/development/python-modules/pyocr/default.nix1
-rw-r--r--pkgs/development/python-modules/pyopenssl/default.nix1
-rw-r--r--pkgs/development/python-modules/pyqt/5.x.nix1
-rw-r--r--pkgs/development/python-modules/pyqtgraph/default.nix1
-rw-r--r--pkgs/development/python-modules/pyramid/default.nix1
-rw-r--r--pkgs/development/python-modules/pyro4/default.nix1
-rw-r--r--pkgs/development/python-modules/pyside2-tools/default.nix2
-rw-r--r--pkgs/development/python-modules/pyside2/default.nix2
-rw-r--r--pkgs/development/python-modules/pyslurm/default.nix2
-rw-r--r--pkgs/development/python-modules/pysnow/default.nix1
-rw-r--r--pkgs/development/python-modules/pysparse/default.nix1
-rw-r--r--pkgs/development/python-modules/pyspcwebgw/default.nix1
-rw-r--r--pkgs/development/python-modules/pytest-arraydiff/default.nix1
-rw-r--r--pkgs/development/python-modules/pytest-datadir/default.nix2
-rw-r--r--pkgs/development/python-modules/pytest-freezegun/default.nix1
-rw-r--r--pkgs/development/python-modules/pytest-mock/2.nix1
-rw-r--r--pkgs/development/python-modules/pytest-repeat/default.nix1
-rw-r--r--pkgs/development/python-modules/python-engineio/default.nix1
-rw-r--r--pkgs/development/python-modules/python-hpilo/default.nix1
-rw-r--r--pkgs/development/python-modules/python-jsonrpc-server/default.nix3
-rw-r--r--pkgs/development/python-modules/python-pipedrive/default.nix1
-rw-r--r--pkgs/development/python-modules/python-slugify/default.nix1
-rw-r--r--pkgs/development/python-modules/python-songpal/default.nix1
-rw-r--r--pkgs/development/python-modules/python-string-utils/default.nix1
-rw-r--r--pkgs/development/python-modules/pythonocc-core/default.nix3
-rw-r--r--pkgs/development/python-modules/pytm/default.nix1
-rw-r--r--pkgs/development/python-modules/pytorch/default.nix2
-rw-r--r--pkgs/development/python-modules/pyvis/default.nix1
-rw-r--r--pkgs/development/python-modules/pywbem/default.nix3
-rw-r--r--pkgs/development/python-modules/pyxb/default.nix1
-rw-r--r--pkgs/development/python-modules/pyxdg/default.nix1
-rw-r--r--pkgs/development/python-modules/qimage2ndarray/default.nix2
-rw-r--r--pkgs/development/python-modules/qmk-dotty-dict/default.nix2
-rw-r--r--pkgs/development/python-modules/rfc3339-validator/default.nix1
-rw-r--r--pkgs/development/python-modules/rpyc/default.nix1
-rw-r--r--pkgs/development/python-modules/rsa/default.nix1
-rw-r--r--pkgs/development/python-modules/ruffus/default.nix1
-rw-r--r--pkgs/development/python-modules/sanic/default.nix1
-rw-r--r--pkgs/development/python-modules/scikit-build/default.nix1
-rw-r--r--pkgs/development/python-modules/scikit-hep-testdata/default.nix1
-rw-r--r--pkgs/development/python-modules/scikits-odes/default.nix1
-rw-r--r--pkgs/development/python-modules/scrapy/default.nix2
-rw-r--r--pkgs/development/python-modules/seahub/default.nix2
-rw-r--r--pkgs/development/python-modules/seqeval/default.nix1
-rw-r--r--pkgs/development/python-modules/setuptools-scm/tests.nix3
-rw-r--r--pkgs/development/python-modules/setuptools/44.0.nix3
-rw-r--r--pkgs/development/python-modules/setuptools/default.nix4
-rw-r--r--pkgs/development/python-modules/shapely/default.nix1
-rw-r--r--pkgs/development/python-modules/shiboken2/default.nix2
-rw-r--r--pkgs/development/python-modules/simple-salesforce/default.nix2
-rw-r--r--pkgs/development/python-modules/spacy/legacy.nix1
-rw-r--r--pkgs/development/python-modules/spglib/default.nix2
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-tikz/default.nix1
-rw-r--r--pkgs/development/python-modules/spyder/default.nix2
-rw-r--r--pkgs/development/python-modules/sqlalchemy-citext/default.nix1
-rw-r--r--pkgs/development/python-modules/sqlalchemy-i18n/default.nix1
-rw-r--r--pkgs/development/python-modules/starlette/default.nix1
-rw-r--r--pkgs/development/python-modules/stdiomask/default.nix1
-rw-r--r--pkgs/development/python-modules/stdlib-list/default.nix1
-rw-r--r--pkgs/development/python-modules/supervisor/default.nix2
-rw-r--r--pkgs/development/python-modules/svgwrite/default.nix1
-rw-r--r--pkgs/development/python-modules/swagger-spec-validator/default.nix2
-rw-r--r--pkgs/development/python-modules/swspotify/default.nix2
-rw-r--r--pkgs/development/python-modules/sympy/1_5.nix1
-rw-r--r--pkgs/development/python-modules/sympy/default.nix1
-rw-r--r--pkgs/development/python-modules/tables/default.nix2
-rw-r--r--pkgs/development/python-modules/telethon/default.nix2
-rw-r--r--pkgs/development/python-modules/tensorflow/bin.nix4
-rw-r--r--pkgs/development/python-modules/tensorflow/default.nix4
-rw-r--r--pkgs/development/python-modules/testfixtures/default.nix1
-rw-r--r--pkgs/development/python-modules/textfsm/default.nix1
-rw-r--r--pkgs/development/python-modules/thinc/default.nix1
-rw-r--r--pkgs/development/python-modules/tld/default.nix1
-rw-r--r--pkgs/development/python-modules/todoist/default.nix2
-rw-r--r--pkgs/development/python-modules/toggl-cli/default.nix2
-rw-r--r--pkgs/development/python-modules/traitlets/default.nix1
-rw-r--r--pkgs/development/python-modules/traits/default.nix1
-rw-r--r--pkgs/development/python-modules/tweepy/default.nix44
-rw-r--r--pkgs/development/python-modules/twill/default.nix2
-rw-r--r--pkgs/development/python-modules/txtorcon/default.nix2
-rw-r--r--pkgs/development/python-modules/typecode/libmagic.nix1
-rw-r--r--pkgs/development/python-modules/typing-inspect/default.nix1
-rw-r--r--pkgs/development/python-modules/urllib3/2.nix1
-rw-r--r--pkgs/development/python-modules/urllib3/default.nix1
-rw-r--r--pkgs/development/python-modules/uvicorn/default.nix1
-rw-r--r--pkgs/development/python-modules/vcver/default.nix1
-rw-r--r--pkgs/development/python-modules/vdirsyncer/default.nix1
-rw-r--r--pkgs/development/python-modules/vowpalwabbit/default.nix1
-rw-r--r--pkgs/development/python-modules/vsts-cd-manager/default.nix3
-rw-r--r--pkgs/development/python-modules/werkzeug/1.nix1
-rw-r--r--pkgs/development/python-modules/wfuzz/default.nix2
-rw-r--r--pkgs/development/python-modules/winsspi/default.nix1
-rw-r--r--pkgs/development/python-modules/worldengine/default.nix1
-rw-r--r--pkgs/development/python-modules/xgboost/default.nix1
-rw-r--r--pkgs/development/python-modules/yarl/default.nix1
-rw-r--r--pkgs/development/python-modules/yq/default.nix1
-rw-r--r--pkgs/development/python-modules/zipp/1.nix1
-rw-r--r--pkgs/development/python-modules/zope_lifecycleevent/default.nix1
-rw-r--r--pkgs/development/tools/dstp/default.nix25
-rw-r--r--pkgs/development/tools/kubeprompt/default.nix7
-rw-r--r--pkgs/misc/emulators/sameboy/default.nix4
-rw-r--r--pkgs/os-specific/linux/nvidia-x11/default.nix8
-rw-r--r--pkgs/os-specific/linux/rtl88xxau-aircrack/default.nix13
-rw-r--r--pkgs/servers/heisenbridge/default.nix4
-rw-r--r--pkgs/servers/mjolnir/default.nix86
-rw-r--r--pkgs/servers/mjolnir/node-composition.nix17
-rw-r--r--pkgs/servers/mjolnir/node-deps.nix3037
-rw-r--r--pkgs/servers/mjolnir/node-env.nix573
-rwxr-xr-xpkgs/servers/mjolnir/update.sh29
-rw-r--r--pkgs/tools/admin/pulumi/data.nix374
-rwxr-xr-xpkgs/tools/admin/pulumi/update.sh2
-rw-r--r--pkgs/tools/filesystems/nilfs-utils/default.nix57
-rw-r--r--pkgs/tools/graphics/pngquant/default.nix2
-rw-r--r--pkgs/tools/misc/ethtool/default.nix4
-rw-r--r--pkgs/tools/misc/gaphor/default.nix66
-rw-r--r--pkgs/tools/misc/oggvideotools/default.nix25
-rw-r--r--pkgs/tools/misc/oggvideotools/fix-compile.patch10
-rw-r--r--pkgs/tools/misc/sfeed/default.nix7
-rw-r--r--pkgs/tools/misc/uwuify/default.nix1
-rw-r--r--pkgs/tools/networking/amass/default.nix4
-rw-r--r--pkgs/tools/networking/spoof-mac/default.nix2
-rw-r--r--pkgs/tools/security/exploitdb/default.nix4
-rw-r--r--pkgs/tools/security/ioccheck/default.nix30
-rw-r--r--pkgs/tools/security/keybase/gui.nix7
-rw-r--r--pkgs/tools/security/pinentry/default.nix6
-rw-r--r--pkgs/tools/security/swtpm/default.nix3
-rw-r--r--pkgs/tools/system/tree/default.nix54
-rw-r--r--pkgs/top-level/all-packages.nix25
-rw-r--r--pkgs/top-level/python-packages.nix4
-rw-r--r--pkgs/top-level/python2-packages.nix5
402 files changed, 6896 insertions, 942 deletions
diff --git a/.github/workflows/basic-eval.yml b/.github/workflows/basic-eval.yml
index b7bbbd40b451..c5e17faea865 100644
--- a/.github/workflows/basic-eval.yml
+++ b/.github/workflows/basic-eval.yml
@@ -15,6 +15,6 @@ jobs:
     # we don't limit this action to only NixOS repo since the checks are cheap and useful developer feedback
     steps:
     - uses: actions/checkout@v2
-    - uses: cachix/install-nix-action@v14
+    - uses: cachix/install-nix-action@v15
     # explicit list of supportedSystems is needed until aarch64-darwin becomes part of the trunk jobset
     - run: nix-build pkgs/top-level/release.nix -A tarball.nixpkgs-basic-release-checks --arg supportedSystems '[ "aarch64-darwin" "aarch64-linux" "x86_64-linux" "x86_64-darwin"  ]'
diff --git a/.github/workflows/editorconfig.yml b/.github/workflows/editorconfig.yml
index 1934a24c65af..c0303ca80b9d 100644
--- a/.github/workflows/editorconfig.yml
+++ b/.github/workflows/editorconfig.yml
@@ -28,7 +28,7 @@ jobs:
         # pull_request_target checks out the base branch by default
         ref: refs/pull/${{ github.event.pull_request.number }}/merge
       if: env.PR_DIFF
-    - uses: cachix/install-nix-action@v14
+    - uses: cachix/install-nix-action@v15
       if: env.PR_DIFF
       with:
         # nixpkgs commit is pinned so that it doesn't break
diff --git a/.github/workflows/manual-nixos.yml b/.github/workflows/manual-nixos.yml
index 01bbe1b12bf2..e134f263c884 100644
--- a/.github/workflows/manual-nixos.yml
+++ b/.github/workflows/manual-nixos.yml
@@ -18,7 +18,7 @@ jobs:
         with:
           # pull_request_target checks out the base branch by default
           ref: refs/pull/${{ github.event.pull_request.number }}/merge
-      - uses: cachix/install-nix-action@v14
+      - uses: cachix/install-nix-action@v15
         with:
           # explicitly enable sandbox
           extra_nix_config: sandbox = true
diff --git a/.github/workflows/manual-nixpkgs.yml b/.github/workflows/manual-nixpkgs.yml
index d0c3f5959157..6866bc3af61a 100644
--- a/.github/workflows/manual-nixpkgs.yml
+++ b/.github/workflows/manual-nixpkgs.yml
@@ -18,7 +18,7 @@ jobs:
         with:
           # pull_request_target checks out the base branch by default
           ref: refs/pull/${{ github.event.pull_request.number }}/merge
-      - uses: cachix/install-nix-action@v14
+      - uses: cachix/install-nix-action@v15
         with:
           # explicitly enable sandbox
           extra_nix_config: sandbox = true
diff --git a/.github/workflows/nixos-manual.yml b/.github/workflows/nixos-manual.yml
index 70f61a1a3a88..eade07427d39 100644
--- a/.github/workflows/nixos-manual.yml
+++ b/.github/workflows/nixos-manual.yml
@@ -19,7 +19,7 @@ jobs:
       with:
         # pull_request_target checks out the base branch by default
         ref: refs/pull/${{ github.event.pull_request.number }}/merge
-    - uses: cachix/install-nix-action@v14
+    - uses: cachix/install-nix-action@v15
     - name: Check DocBook files generated from Markdown are consistent
       run: |
         nixos/doc/manual/md-to-db.sh
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index 7de5fc1ad45c..bf8417af27c7 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -2537,6 +2537,13 @@
     githubId = 86075850;
     name = "Danil Danevich";
   };
+  darkonion0 = {
+    name = "Alexandre Peruggia";
+    email = "darkgenius1@protonmail.com";
+    matrix = "@alexoo:matrix.org";
+    github = "DarkOnion0";
+    githubId = 68606322;
+  };
   das-g = {
     email = "nixpkgs@raphael.dasgupta.ch";
     github = "das-g";
@@ -7206,6 +7213,16 @@
     githubId = 95194;
     name = "Mauricio Scheffer";
   };
+  max-niederman = {
+    email = "max@maxniederman.com";
+    github = "max-niederman";
+    githubId = 19580458;
+    name = "Max Niederman";
+    keys = [{
+      longkeyid = "rsa3072/0x9AED881481D8444E";
+      fingerprint = "1DE4 424D BF77 1192 5DC4  CF5E 9AED 8814 81D8 444E";
+    }];
+  };
   maxdamantus = {
     email = "maxdamantus@gmail.com";
     github = "Maxdamantus";
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index c19dcd3293b6..49509171c3f6 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -485,6 +485,8 @@
   ./services/mail/roundcube.nix
   ./services/mail/sympa.nix
   ./services/mail/nullmailer.nix
+  ./services/matrix/mjolnir.nix
+  ./services/matrix/pantalaimon.nix
   ./services/misc/ananicy.nix
   ./services/misc/airsonic.nix
   ./services/misc/ankisyncd.nix
@@ -1016,6 +1018,7 @@
   ./services/web-apps/pgpkeyserver-lite.nix
   ./services/web-apps/matomo.nix
   ./services/web-apps/moinmoin.nix
+  ./services/web-apps/openwebrx.nix
   ./services/web-apps/restya-board.nix
   ./services/web-apps/sogo.nix
   ./services/web-apps/rss-bridge.nix
diff --git a/nixos/modules/services/matrix/mjolnir.nix b/nixos/modules/services/matrix/mjolnir.nix
new file mode 100644
index 000000000000..8a54f93d98d8
--- /dev/null
+++ b/nixos/modules/services/matrix/mjolnir.nix
@@ -0,0 +1,240 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+let
+  cfg = config.services.mjolnir;
+
+  yamlConfig = {
+    inherit (cfg) dataPath managementRoom protectedRooms;
+
+    accessToken = "@ACCESS_TOKEN@"; # will be replaced in "generateConfig"
+    homeserverUrl =
+      if cfg.pantalaimon.enable then
+        "http://${cfg.pantalaimon.options.listenAddress}:${toString cfg.pantalaimon.options.listenPort}"
+      else
+        cfg.homeserverUrl;
+
+    pantalaimon = {
+      inherit (cfg.pantalaimon) username;
+
+      use = cfg.pantalaimon.enable;
+      password = "@PANTALAIMON_PASSWORD@"; # will be replaced in "generateConfig"
+    };
+  };
+
+  moduleConfigFile = pkgs.writeText "module-config.yaml" (
+    generators.toYAML { } (filterAttrs (_: v: v != null)
+      (fold recursiveUpdate { } [ yamlConfig cfg.settings ])));
+
+  # these config files will be merged one after the other to build the final config
+  configFiles = [
+    "${pkgs.mjolnir}/share/mjolnir/config/default.yaml"
+    moduleConfigFile
+  ];
+
+  # this will generate the default.yaml file with all configFiles as inputs and
+  # replace all secret strings using replace-secret
+  generateConfig = pkgs.writeShellScript "mjolnir-generate-config" (
+    let
+      yqEvalStr = concatImapStringsSep " * " (pos: _: "select(fileIndex == ${toString (pos - 1)})") configFiles;
+      yqEvalArgs = concatStringsSep " " configFiles;
+    in
+    ''
+      set -euo pipefail
+
+      umask 077
+
+      # mjolnir will try to load a config from "./config/default.yaml" in the working directory
+      # -> let's place the generated config there
+      mkdir -p ${cfg.dataPath}/config
+
+      # merge all config files into one, overriding settings of the previous one with the next config
+      # e.g. "eval-all 'select(fileIndex == 0) * select(fileIndex == 1)' filea.yaml fileb.yaml" will merge filea.yaml with fileb.yaml
+      ${pkgs.yq-go}/bin/yq eval-all -P '${yqEvalStr}' ${yqEvalArgs} > ${cfg.dataPath}/config/default.yaml
+
+      ${optionalString (cfg.accessTokenFile != null) ''
+        ${pkgs.replace-secret}/bin/replace-secret '@ACCESS_TOKEN@' '${cfg.accessTokenFile}' ${cfg.dataPath}/config/default.yaml
+      ''}
+      ${optionalString (cfg.pantalaimon.passwordFile != null) ''
+        ${pkgs.replace-secret}/bin/replace-secret '@PANTALAIMON_PASSWORD@' '${cfg.pantalaimon.passwordFile}' ${cfg.dataPath}/config/default.yaml
+      ''}
+    ''
+  );
+in
+{
+  options.services.mjolnir = {
+    enable = mkEnableOption "Mjolnir, a moderation tool for Matrix";
+
+    homeserverUrl = mkOption {
+      type = types.str;
+      default = "https://matrix.org";
+      description = ''
+        Where the homeserver is located (client-server URL).
+
+        If <literal>pantalaimon.enable</literal> is <literal>true</literal>, this option will become the homeserver to which <literal>pantalaimon</literal> connects.
+        The listen address of <literal>pantalaimon</literal> will then become the <literal>homeserverUrl</literal> of <literal>mjolnir</literal>.
+      '';
+    };
+
+    accessTokenFile = mkOption {
+      type = with types; nullOr path;
+      default = null;
+      description = ''
+        File containing the matrix access token for the <literal>mjolnir</literal> user.
+      '';
+    };
+
+    pantalaimon = mkOption {
+      description = ''
+        <literal>pantalaimon</literal> options (enables E2E Encryption support).
+
+        This will create a <literal>pantalaimon</literal> instance with the name "mjolnir".
+      '';
+      default = { };
+      type = types.submodule {
+        options = {
+          enable = mkEnableOption ''
+            If true, accessToken is ignored and the username/password below will be
+            used instead. The access token of the bot will be stored in the dataPath.
+          '';
+
+          username = mkOption {
+            type = types.str;
+            description = "The username to login with.";
+          };
+
+          passwordFile = mkOption {
+            type = with types; nullOr path;
+            default = null;
+            description = ''
+              File containing the matrix password for the <literal>mjolnir</literal> user.
+            '';
+          };
+
+          options = mkOption {
+            type = types.submodule (import ./pantalaimon-options.nix);
+            default = { };
+            description = ''
+              passthrough additional options to the <literal>pantalaimon</literal> service.
+            '';
+          };
+        };
+      };
+    };
+
+    dataPath = mkOption {
+      type = types.path;
+      default = "/var/lib/mjolnir";
+      description = ''
+        The directory the bot should store various bits of information in.
+      '';
+    };
+
+    managementRoom = mkOption {
+      type = types.str;
+      default = "#moderators:example.org";
+      description = ''
+        The room ID where people can use the bot. The bot has no access controls, so
+        anyone in this room can use the bot - secure your room!
+        This should be a room alias or room ID - not a matrix.to URL.
+        Note: <literal>mjolnir</literal> is fairly verbose - expect a lot of messages from it.
+      '';
+    };
+
+    protectedRooms = mkOption {
+      type = types.listOf types.str;
+      default = [ ];
+      example = literalExpression ''
+        [
+          "https://matrix.to/#/#yourroom:example.org"
+          "https://matrix.to/#/#anotherroom:example.org"
+        ]
+      '';
+      description = ''
+        A list of rooms to protect (matrix.to URLs).
+      '';
+    };
+
+    settings = mkOption {
+      default = { };
+      type = (pkgs.formats.yaml { }).type;
+      example = literalExpression ''
+        {
+          autojoinOnlyIfManager = true;
+          automaticallyRedactForReasons = [ "spam" "advertising" ];
+        }
+      '';
+      description = ''
+        Additional settings (see <link xlink:href="https://github.com/matrix-org/mjolnir/blob/main/config/default.yaml">mjolnir default config</link> for available settings). These settings will override settings made by the module config.
+      '';
+    };
+  };
+
+  config = mkIf config.services.mjolnir.enable {
+    assertions = [
+      {
+        assertion = !(cfg.pantalaimon.enable && cfg.pantalaimon.passwordFile == null);
+        message = "Specify pantalaimon.passwordFile";
+      }
+      {
+        assertion = !(cfg.pantalaimon.enable && cfg.accessTokenFile != null);
+        message = "Do not specify accessTokenFile when using pantalaimon";
+      }
+      {
+        assertion = !(!cfg.pantalaimon.enable && cfg.accessTokenFile == null);
+        message = "Specify accessTokenFile when not using pantalaimon";
+      }
+    ];
+
+    services.pantalaimon-headless.instances."mjolnir" = mkIf cfg.pantalaimon.enable
+      {
+        homeserver = cfg.homeserverUrl;
+      } // cfg.pantalaimon.options;
+
+    systemd.services.mjolnir = {
+      description = "mjolnir - a moderation tool for Matrix";
+      wants = [ "network-online.target" ] ++ optionals (cfg.pantalaimon.enable) [ "pantalaimon-mjolnir.service" ];
+      after = [ "network-online.target" ] ++ optionals (cfg.pantalaimon.enable) [ "pantalaimon-mjolnir.service" ];
+      wantedBy = [ "multi-user.target" ];
+
+      serviceConfig = {
+        ExecStart = ''${pkgs.mjolnir}/bin/mjolnir'';
+        ExecStartPre = [ generateConfig ];
+        WorkingDirectory = cfg.dataPath;
+        StateDirectory = "mjolnir";
+        StateDirectoryMode = "0700";
+        ProtectSystem = "strict";
+        ProtectHome = true;
+        PrivateTmp = true;
+        NoNewPrivileges = true;
+        PrivateDevices = true;
+        User = "mjolnir";
+        Restart = "on-failure";
+
+        /* TODO: wait for #102397 to be resolved. Then load secrets from $CREDENTIALS_DIRECTORY+"/NAME"
+        DynamicUser = true;
+        LoadCredential = [] ++
+          optionals (cfg.accessTokenFile != null) [
+            "access_token:${cfg.accessTokenFile}"
+          ] ++
+          optionals (cfg.pantalaimon.passwordFile != null) [
+            "pantalaimon_password:${cfg.pantalaimon.passwordFile}"
+          ];
+        */
+      };
+    };
+
+    users = {
+      users.mjolnir = {
+        group = "mjolnir";
+        isSystemUser = true;
+      };
+      groups.mjolnir = { };
+    };
+  };
+
+  meta = {
+    doc = ./mjolnir.xml;
+    maintainers = with maintainers; [ jojosch ];
+  };
+}
diff --git a/nixos/modules/services/matrix/mjolnir.xml b/nixos/modules/services/matrix/mjolnir.xml
new file mode 100644
index 000000000000..d462ddf7b01b
--- /dev/null
+++ b/nixos/modules/services/matrix/mjolnir.xml
@@ -0,0 +1,134 @@
+<chapter xmlns="http://docbook.org/ns/docbook"
+         xmlns:xlink="http://www.w3.org/1999/xlink"
+         xmlns:xi="http://www.w3.org/2001/XInclude"
+         version="5.0"
+         xml:id="module-services-mjolnir">
+ <title>Mjolnir (Matrix Moderation Tool)</title>
+ <para>
+  This chapter will show you how to set up your own, self-hosted
+  <link xlink:href="https://github.com/matrix-org/mjolnir">Mjolnir</link>
+  instance.
+ </para>
+ <para>
+  As an all-in-one moderation tool, it can protect your server from
+  malicious invites, spam messages, and whatever else you don't want.
+  In addition to server-level protection, Mjolnir is great for communities
+  wanting to protect their rooms without having to use their personal
+  accounts for moderation.
+ </para>
+ <para>
+  The bot by default includes support for bans, redactions, anti-spam,
+  server ACLs, room directory changes, room alias transfers, account
+  deactivation, room shutdown, and more.
+ </para>
+ <para>
+  See the <link xlink:href="https://github.com/matrix-org/mjolnir#readme">README</link>
+  page and the <link xlink:href="https://github.com/matrix-org/mjolnir/blob/main/docs/moderators.md">Moderator's guide</link>
+  for additional instructions on how to setup and use Mjolnir.
+ </para>
+ <para>
+  For <link linkend="opt-services.mjolnir.settings">additional settings</link>
+  see <link xlink:href="https://github.com/matrix-org/mjolnir/blob/main/config/default.yaml">the default configuration</link>.
+ </para>
+ <section xml:id="module-services-mjolnir-setup">
+  <title>Mjolnir Setup</title>
+  <para>
+   First create a new Room which will be used as a management room for Mjolnir. In
+   this room, Mjolnir will log possible errors and debugging information. You'll
+   need to set this Room-ID in <link linkend="opt-services.mjolnir.managementRoom">services.mjolnir.managementRoom</link>.
+  </para>
+  <para>
+   Next, create a new user for Mjolnir on your homeserver, if not present already.
+  </para>
+  <para>
+   The Mjolnir Matrix user expects to be free of any rate limiting.
+   See <link xlink:href="https://github.com/matrix-org/synapse/issues/6286">Synapse #6286</link>
+   for an example on how to achieve this.
+  </para>
+  <para>
+   If you want Mjolnir to be able to deactivate users, move room aliases, shutdown rooms, etc.
+   you'll need to make the Mjolnir user a Matrix server admin.
+  </para>
+  <para>
+   Now invite the Mjolnir user to the management room.
+  </para>
+  <para>
+   It is recommended to use <link xlink:href="https://github.com/matrix-org/pantalaimon">Pantalaimon</link>,
+   so your management room can be encrypted. This also applies if you are looking to moderate an encrypted room.
+  </para>
+  <para>
+   To enable the Pantalaimon E2E Proxy for mjolnir, enable
+   <link linkend="opt-services.mjolnir.pantalaimon.enable">services.mjolnir.pantalaimon</link>. This will
+   autoconfigure a new Pantalaimon instance, which will connect to the homeserver
+   set in <link linkend="opt-services.mjolnir.homeserverUrl">services.mjolnir.homeserverUrl</link> and Mjolnir itself
+   will be configured to connect to the new Pantalaimon instance.
+  </para>
+<programlisting>
+{
+  services.mjolnir = {
+    enable = true;
+    <link linkend="opt-services.mjolnir.homeserverUrl">homeserverUrl</link> = "https://matrix.domain.tld";
+    <link linkend="opt-services.mjolnir.pantalaimon">pantalaimon</link> = {
+       <link linkend="opt-services.mjolnir.pantalaimon.enable">enable</link> = true;
+       <link linkend="opt-services.mjolnir.pantalaimon.username">username</link> = "mjolnir";
+       <link linkend="opt-services.mjolnir.pantalaimon.passwordFile">passwordFile</link> = "/run/secrets/mjolnir-password";
+    };
+    <link linkend="opt-services.mjolnir.protectedRooms">protectedRooms</link> = [
+      "https://matrix.to/#/!xxx:domain.tld"
+    ];
+    <link linkend="opt-services.mjolnir.managementRoom">managementRoom</link> = "!yyy:domain.tld";
+  };
+}
+</programlisting>
+ <section xml:id="module-services-mjolnir-setup-ems">
+  <title>Element Matrix Services (EMS)</title>
+  <para>
+   If you are using a managed <link xlink:href="https://ems.element.io/">"Element Matrix Services (EMS)"</link>
+   server, you will need to consent to the terms and conditions. Upon startup, an error
+   log entry with a URL to the consent page will be generated.
+  </para>
+ </section>
+ </section>
+
+ <section xml:id="module-services-mjolnir-matrix-synapse-antispam">
+  <title>Synapse Antispam Module</title>
+  <para>
+   A Synapse module is also available to apply the same rulesets the bot
+   uses across an entire homeserver.
+  </para>
+  <para>
+   To use the Antispam Module, add <package>matrix-synapse-plugins.matrix-synapse-mjolnir-antispam</package>
+   to the Synapse plugin list and enable the <literal>mjolnir.AntiSpam</literal> module.
+  </para>
+<programlisting>
+{
+  services.matrix-synapse = {
+    plugins = with pkgs; [
+      matrix-synapse-plugins.matrix-synapse-mjolnir-antispam
+    ];
+    extraConfig = ''
+      modules:
+        - module: mjolnir.AntiSpam
+          config:
+            # Prevent servers/users in the ban lists from inviting users on this
+            # server to rooms. Default true.
+            block_invites: true
+            # Flag messages sent by servers/users in the ban lists as spam. Currently
+            # this means that spammy messages will appear as empty to users. Default
+            # false.
+            block_messages: false
+            # Remove users from the user directory search by filtering matrix IDs and
+            # display names by the entries in the user ban list. Default false.
+            block_usernames: false
+            # The room IDs of the ban lists to honour. Unlike other parts of Mjolnir,
+            # this list cannot be room aliases or permalinks. This server is expected
+            # to already be joined to the room - Mjolnir will not automatically join
+            # these rooms.
+            ban_lists:
+              - "!roomid:example.org"
+    '';
+  };
+}
+</programlisting>
+ </section>
+</chapter>
diff --git a/nixos/modules/services/matrix/pantalaimon-options.nix b/nixos/modules/services/matrix/pantalaimon-options.nix
new file mode 100644
index 000000000000..035c57540d09
--- /dev/null
+++ b/nixos/modules/services/matrix/pantalaimon-options.nix
@@ -0,0 +1,70 @@
+{ config, lib, name, ... }:
+
+with lib;
+{
+  options = {
+    dataPath = mkOption {
+      type = types.path;
+      default = "/var/lib/pantalaimon-${name}";
+      description = ''
+        The directory where <literal>pantalaimon</literal> should store its state such as the database file.
+      '';
+    };
+
+    logLevel = mkOption {
+      type = types.enum [ "info" "warning" "error" "debug" ];
+      default = "warning";
+      description = ''
+        Set the log level of the daemon.
+      '';
+    };
+
+    homeserver = mkOption {
+      type = types.str;
+      example = "https://matrix.org";
+      description = ''
+        The URI of the homeserver that the <literal>pantalaimon</literal> proxy should
+        forward requests to, without the matrix API path but including
+        the http(s) schema.
+      '';
+    };
+
+    ssl = mkOption {
+      type = types.bool;
+      default = true;
+      description = ''
+        Whether or not SSL verification should be enabled for outgoing
+        connections to the homeserver.
+      '';
+    };
+
+    listenAddress = mkOption {
+      type = types.str;
+      default = "localhost";
+      description = ''
+        The address where the daemon will listen to client connections
+        for this homeserver.
+      '';
+    };
+
+    listenPort = mkOption {
+      type = types.port;
+      default = 8009;
+      description = ''
+        The port where the daemon will listen to client connections for
+        this homeserver. Note that the listen address/port combination
+        needs to be unique between different homeservers.
+      '';
+    };
+
+    extraSettings = mkOption {
+      type = types.attrs;
+      default = { };
+      description = ''
+        Extra configuration options. See
+        <link xlink:href="https://github.com/matrix-org/pantalaimon/blob/master/docs/man/pantalaimon.5.md">pantalaimon(5)</link>
+        for available options.
+      '';
+    };
+  };
+}
diff --git a/nixos/modules/services/matrix/pantalaimon.nix b/nixos/modules/services/matrix/pantalaimon.nix
new file mode 100644
index 000000000000..63b40099ca5d
--- /dev/null
+++ b/nixos/modules/services/matrix/pantalaimon.nix
@@ -0,0 +1,70 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+let
+  cfg = config.services.pantalaimon-headless;
+
+  iniFmt = pkgs.formats.ini { };
+
+  mkConfigFile = name: instanceConfig: iniFmt.generate "pantalaimon.conf" {
+    Default = {
+      LogLevel = instanceConfig.logLevel;
+      Notifications = false;
+    };
+
+    ${name} = (recursiveUpdate
+      {
+        Homeserver = instanceConfig.homeserver;
+        ListenAddress = instanceConfig.listenAddress;
+        ListenPort = instanceConfig.listenPort;
+        SSL = instanceConfig.ssl;
+
+        # Set some settings to prevent user interaction for headless operation
+        IgnoreVerification = true;
+        UseKeyring = false;
+      }
+      instanceConfig.extraSettings
+    );
+  };
+
+  mkPantalaimonService = name: instanceConfig:
+    nameValuePair "pantalaimon-${name}" {
+      description = "pantalaimon instance ${name} - E2EE aware proxy daemon for matrix clients";
+      wants = [ "network-online.target" ];
+      after = [ "network-online.target" ];
+      wantedBy = [ "multi-user.target" ];
+
+      serviceConfig = {
+        ExecStart = ''${pkgs.pantalaimon-headless}/bin/pantalaimon --config ${mkConfigFile name instanceConfig} --data-path ${instanceConfig.dataPath}'';
+        Restart = "on-failure";
+        DynamicUser = true;
+        NoNewPrivileges = true;
+        PrivateDevices = true;
+        PrivateTmp = true;
+        ProtectHome = true;
+        ProtectSystem = "strict";
+        StateDirectory = "pantalaimon-${name}";
+      };
+    };
+in
+{
+  options.services.pantalaimon-headless.instances = mkOption {
+    default = { };
+    type = types.attrsOf (types.submodule (import ./pantalaimon-options.nix));
+    description = ''
+      Declarative instance config.
+
+      Note: to use pantalaimon interactively, e.g. for a Matrix client which does not
+      support End-to-end encryption (like <literal>fractal</literal>), refer to the home-manager module.
+    '';
+  };
+
+  config = mkIf (config.services.pantalaimon-headless.instances != { })
+    {
+      systemd.services = mapAttrs' mkPantalaimonService config.services.pantalaimon-headless.instances;
+    };
+
+  meta = {
+    maintainers = with maintainers; [ jojosch ];
+  };
+}
diff --git a/nixos/modules/services/web-apps/openwebrx.nix b/nixos/modules/services/web-apps/openwebrx.nix
new file mode 100644
index 000000000000..51005cd1e497
--- /dev/null
+++ b/nixos/modules/services/web-apps/openwebrx.nix
@@ -0,0 +1,33 @@
+{ config, lib, pkgs, ... }:
+let
+  cfg = config.services.openwebrx;
+in
+{
+  options.services.openwebrx = with lib; {
+    enable = mkEnableOption "OpenWebRX Web interface for Software-Defined Radios on http://localhost:8073";
+
+    package = mkOption {
+      type = types.package;
+      default = pkgs.openwebrx;
+      description = "OpenWebRX package to use for the service";
+    };
+  };
+
+  config = lib.mkIf cfg.enable {
+    systemd.services.openwebrx = {
+      wantedBy = [ "multi-user.target" ];
+      path = with pkgs; [
+        csdr
+        alsaUtils
+        netcat
+      ];
+      serviceConfig = {
+        ExecStart = "${cfg.package}/bin/openwebrx";
+        Restart = "always";
+        DynamicUser = true;
+        # openwebrx uses /var/lib/openwebrx by default
+        StateDirectory = [ "openwebrx" ];
+      };
+    };
+  };
+}
diff --git a/nixos/modules/virtualisation/lxc-container.nix b/nixos/modules/virtualisation/lxc-container.nix
index c7d5ee1fd117..9816cc2332fb 100644
--- a/nixos/modules/virtualisation/lxc-container.nix
+++ b/nixos/modules/virtualisation/lxc-container.nix
@@ -61,7 +61,7 @@ in
         description = "Templates for LXD";
         type = types.attrsOf (types.submodule (templateSubmodule));
         default = {};
-        example = literalExample ''
+        example = literalExpression ''
           {
             # create /etc/hostname on container creation
             "hostname" = {
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 5abb61c965c2..c85644e150af 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -261,6 +261,7 @@ in
   miniflux = handleTest ./miniflux.nix {};
   minio = handleTest ./minio.nix {};
   misc = handleTest ./misc.nix {};
+  mjolnir = handleTest ./matrix/mjolnir.nix {};
   mod_perl = handleTest ./mod_perl.nix {};
   moinmoin = handleTest ./moinmoin.nix {};
   mongodb = handleTest ./mongodb.nix {};
@@ -341,6 +342,7 @@ in
   packagekit = handleTest ./packagekit.nix {};
   pam-oath-login = handleTest ./pam-oath-login.nix {};
   pam-u2f = handleTest ./pam-u2f.nix {};
+  pantalaimon = handleTest ./matrix/pantalaimon.nix {};
   pantheon = handleTest ./pantheon.nix {};
   paperless-ng = handleTest ./paperless-ng.nix {};
   parsedmarc = handleTest ./parsedmarc {};
diff --git a/nixos/tests/matrix/mjolnir.nix b/nixos/tests/matrix/mjolnir.nix
new file mode 100644
index 000000000000..bb55f6f5440b
--- /dev/null
+++ b/nixos/tests/matrix/mjolnir.nix
@@ -0,0 +1,165 @@
+import ../make-test-python.nix (
+  { pkgs, ... }:
+  let
+    # Set up SSL certs for Synapse to be happy.
+    runWithOpenSSL = file: cmd: pkgs.runCommand file
+      {
+        buildInputs = [ pkgs.openssl ];
+      }
+      cmd;
+
+    ca_key = runWithOpenSSL "ca-key.pem" "openssl genrsa -out $out 2048";
+    ca_pem = runWithOpenSSL "ca.pem" ''
+      openssl req \
+        -x509 -new -nodes -key ${ca_key} \
+        -days 10000 -out $out -subj "/CN=snakeoil-ca"
+    '';
+    key = runWithOpenSSL "matrix_key.pem" "openssl genrsa -out $out 2048";
+    csr = runWithOpenSSL "matrix.csr" ''
+      openssl req \
+         -new -key ${key} \
+         -out $out -subj "/CN=localhost" \
+    '';
+    cert = runWithOpenSSL "matrix_cert.pem" ''
+      openssl x509 \
+        -req -in ${csr} \
+        -CA ${ca_pem} -CAkey ${ca_key} \
+        -CAcreateserial -out $out \
+        -days 365
+    '';
+  in
+  {
+    name = "mjolnir";
+    meta = with pkgs.lib; {
+      maintainers = teams.matrix.members;
+    };
+
+    nodes = {
+      homeserver = { pkgs, ... }: {
+        services.matrix-synapse = {
+          enable = true;
+          database_type = "sqlite3";
+          tls_certificate_path = "${cert}";
+          tls_private_key_path = "${key}";
+          enable_registration = true;
+          registration_shared_secret = "supersecret-registration";
+
+          listeners = [
+            # The default but tls=false
+            {
+              "bind_address" = "";
+              "port" = 8448;
+              "resources" = [
+                { "compress" = true; "names" = [ "client" "webclient" ]; }
+                { "compress" = false; "names" = [ "federation" ]; }
+              ];
+              "tls" = false;
+              "type" = "http";
+              "x_forwarded" = false;
+            }
+          ];
+        };
+
+        networking.firewall.allowedTCPPorts = [ 8448 ];
+
+        environment.systemPackages = [
+          (pkgs.writeShellScriptBin "register_mjolnir_user" ''
+            exec ${pkgs.matrix-synapse}/bin/register_new_matrix_user \
+              -u mjolnir \
+              -p mjolnir-password \
+              --admin \
+              --shared-secret supersecret-registration \
+              http://localhost:8448
+          ''
+          )
+          (pkgs.writeShellScriptBin "register_moderator_user" ''
+            exec ${pkgs.matrix-synapse}/bin/register_new_matrix_user \
+              -u moderator \
+              -p moderator-password \
+              --no-admin \
+              --shared-secret supersecret-registration \
+              http://localhost:8448
+          ''
+          )
+        ];
+      };
+
+      mjolnir = { pkgs, ... }: {
+        services.mjolnir = {
+          enable = true;
+          homeserverUrl = "http://homeserver:8448";
+          pantalaimon = {
+            enable = true;
+            username = "mjolnir";
+            passwordFile = pkgs.writeText "password.txt" "mjolnir-password";
+          };
+          managementRoom = "#moderators:homeserver";
+        };
+      };
+
+      client = { pkgs, ... }: {
+        environment.systemPackages = [
+          (pkgs.writers.writePython3Bin "create_management_room_and_invite_mjolnir"
+            { libraries = [ pkgs.python3Packages.matrix-nio ]; } ''
+            import asyncio
+
+            from nio import (
+                AsyncClient,
+                EnableEncryptionBuilder
+            )
+
+
+            async def main() -> None:
+                client = AsyncClient("http://homeserver:8448", "moderator")
+
+                await client.login("moderator-password")
+
+                room = await client.room_create(
+                    name="Moderators",
+                    alias="moderators",
+                    initial_state=[EnableEncryptionBuilder().as_dict()],
+                )
+
+                await client.join(room.room_id)
+                await client.room_invite(room.room_id, "@mjolnir:homeserver")
+
+            asyncio.run(main())
+          ''
+          )
+        ];
+      };
+    };
+
+    testScript = ''
+      with subtest("start homeserver"):
+        homeserver.start()
+
+        homeserver.wait_for_unit("matrix-synapse.service")
+        homeserver.wait_until_succeeds("curl --fail -L http://localhost:8448/")
+
+      with subtest("register users"):
+        # register mjolnir user
+        homeserver.succeed("register_mjolnir_user")
+        # register moderator user
+        homeserver.succeed("register_moderator_user")
+
+      with subtest("start mjolnir"):
+        mjolnir.start()
+
+        # wait for pantalaimon to be ready
+        mjolnir.wait_for_unit("pantalaimon-mjolnir.service")
+        mjolnir.wait_for_unit("mjolnir.service")
+
+        mjolnir.wait_until_succeeds("curl --fail -L http://localhost:8009/")
+
+      with subtest("ensure mjolnir can be invited to the management room"):
+        client.start()
+
+        client.wait_until_succeeds("curl --fail -L http://homeserver:8448/")
+
+        client.succeed("create_management_room_and_invite_mjolnir")
+
+        mjolnir.wait_for_console_text("Startup complete. Now monitoring rooms")
+    '';
+  }
+)
diff --git a/nixos/tests/matrix/pantalaimon.nix b/nixos/tests/matrix/pantalaimon.nix
new file mode 100644
index 000000000000..fcb9904b2138
--- /dev/null
+++ b/nixos/tests/matrix/pantalaimon.nix
@@ -0,0 +1,65 @@
+import ../make-test-python.nix (
+  { pkgs, ... }:
+  let
+    pantalaimonInstanceName = "testing";
+
+    # Set up SSL certs for Synapse to be happy.
+    runWithOpenSSL = file: cmd: pkgs.runCommand file
+      {
+        buildInputs = [ pkgs.openssl ];
+      }
+      cmd;
+
+    ca_key = runWithOpenSSL "ca-key.pem" "openssl genrsa -out $out 2048";
+    ca_pem = runWithOpenSSL "ca.pem" ''
+      openssl req \
+        -x509 -new -nodes -key ${ca_key} \
+        -days 10000 -out $out -subj "/CN=snakeoil-ca"
+    '';
+    key = runWithOpenSSL "matrix_key.pem" "openssl genrsa -out $out 2048";
+    csr = runWithOpenSSL "matrix.csr" ''
+      openssl req \
+         -new -key ${key} \
+         -out $out -subj "/CN=localhost" \
+    '';
+    cert = runWithOpenSSL "matrix_cert.pem" ''
+      openssl x509 \
+        -req -in ${csr} \
+        -CA ${ca_pem} -CAkey ${ca_key} \
+        -CAcreateserial -out $out \
+        -days 365
+    '';
+  in
+  {
+    name = "pantalaimon";
+    meta = with pkgs.lib; {
+      maintainers = teams.matrix.members;
+    };
+
+    machine = { pkgs, ... }: {
+      services.pantalaimon-headless.instances.${pantalaimonInstanceName} = {
+        homeserver = "https://localhost:8448";
+        listenAddress = "0.0.0.0";
+        listenPort = 8888;
+        logLevel = "debug";
+        ssl = false;
+      };
+
+      services.matrix-synapse = {
+        enable = true;
+        database_type = "sqlite3";
+        tls_certificate_path = "${cert}";
+        tls_private_key_path = "${key}";
+      };
+    };
+
+    testScript = ''
+      start_all()
+      machine.wait_for_unit("pantalaimon-${pantalaimonInstanceName}.service")
+      machine.wait_for_unit("matrix-synapse.service")
+      machine.wait_until_succeeds(
+          "curl --fail -L http://localhost:8888/"
+      )
+    '';
+  }
+)
diff --git a/pkgs/applications/audio/spotify/default.nix b/pkgs/applications/audio/spotify/default.nix
index c25276ff6e19..f38bd678d9ef 100644
--- a/pkgs/applications/audio/spotify/default.nix
+++ b/pkgs/applications/audio/spotify/default.nix
@@ -10,14 +10,14 @@ let
   # If an update breaks things, one of those might have valuable info:
   # https://aur.archlinux.org/packages/spotify/
   # https://community.spotify.com/t5/Desktop-Linux
-  version = "1.1.68.632.g2b11de83";
+  version = "1.1.72.439.gc253025e";
   # To get the latest stable revision:
   # curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated'
   # To get general information:
   # curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.'
   # More examples of api usage:
   # https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py
-  rev = "53";
+  rev = "56";
 
   deps = [
     alsa-lib
@@ -80,7 +80,7 @@ stdenv.mkDerivation {
   # https://community.spotify.com/t5/Desktop-Linux/Redistribute-Spotify-on-Linux-Distributions/td-p/1695334
   src = fetchurl {
     url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap";
-    sha512 = "ed991691c99fe97ed9ff5d0f5cc9a8883c176fa3b3054293c37d545abbb895c6260afdf1c8c0828d62c36ea7ab384e166b6151effb4614c93e4fa712319a08a3";
+    sha512 = "b2bd3d49a18dfebaa4660f9c39d11d57fb80a4ef15ec7b7973e3cc07be74f74aebd2d8c66360d79fe778244c533ed02f9dfca4085f99aae0e5faae7c003ba4ef";
   };
 
   nativeBuildInputs = [ makeWrapper wrapGAppsHook squashfsTools ];
diff --git a/pkgs/applications/graphics/drawio/default.nix b/pkgs/applications/graphics/drawio/default.nix
index 5bb94baf76f2..02c0fb409110 100644
--- a/pkgs/applications/graphics/drawio/default.nix
+++ b/pkgs/applications/graphics/drawio/default.nix
@@ -11,11 +11,11 @@
 
 stdenv.mkDerivation rec {
   pname = "drawio";
-  version = "14.5.1";
+  version = "15.7.3";
 
   src = fetchurl {
     url = "https://github.com/jgraph/drawio-desktop/releases/download/v${version}/drawio-x86_64-${version}.rpm";
-    hash = "sha256-ZrEoeeEhHQOLm/L3KA43Ru5fruIPK35CCUsllwpPB58=";
+    sha256 = "3565bcceccb57daee222270164e85b696b8d261ab88b65699912da51946a1c36";
   };
 
   nativeBuildInputs = [
@@ -91,7 +91,7 @@ stdenv.mkDerivation rec {
     homepage = "https://about.draw.io/";
     license = licenses.asl20;
     changelog = "https://github.com/jgraph/drawio-desktop/releases/tag/v${version}";
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ darkonion0 ];
     platforms = [ "x86_64-linux" ];
   };
 }
diff --git a/pkgs/applications/misc/metadata-cleaner/default.nix b/pkgs/applications/misc/metadata-cleaner/default.nix
index 46da03b8a882..d869164f6609 100644
--- a/pkgs/applications/misc/metadata-cleaner/default.nix
+++ b/pkgs/applications/misc/metadata-cleaner/default.nix
@@ -5,8 +5,9 @@
 , desktop-file-utils
 , glib
 , gobject-introspection
-, gtk3
-, libhandy
+, gtk4
+, itstool
+, libadwaita
 , librsvg
 , meson
 , ninja
@@ -17,7 +18,7 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "metadata-cleaner";
-  version = "1.0.7";
+  version = "2.0.1";
 
   format = "other";
 
@@ -25,14 +26,15 @@ python3.pkgs.buildPythonApplication rec {
     owner = "rmnvgr";
     repo = "metadata-cleaner";
     rev = "v${version}";
-    sha256 = "sha256-HlP/QahVFCAct06pKanjozFqeyTdHoHanIemq5ID2CQ=";
+    sha256 = "sha256-iTKs3DEZSzqRARXJKPPygvCS5JNUMbQBkfjacwd168Y=";
   };
 
   nativeBuildInputs = [
     appstream
     desktop-file-utils
     glib
-    gtk3
+    gtk4
+    itstool
     meson
     ninja
     pkg-config
@@ -41,8 +43,8 @@ python3.pkgs.buildPythonApplication rec {
 
   buildInputs = [
     gobject-introspection
-    gtk3
-    libhandy
+    gtk4
+    libadwaita
     librsvg
     poppler_gi
   ];
diff --git a/pkgs/applications/misc/pinfo/default.nix b/pkgs/applications/misc/pinfo/default.nix
index b0fc64a1a5e9..179af6ca87dc 100644
--- a/pkgs/applications/misc/pinfo/default.nix
+++ b/pkgs/applications/misc/pinfo/default.nix
@@ -1,6 +1,7 @@
 { lib
 , autoreconfHook
 , fetchFromGitHub
+, fetchpatch
 , gettext
 , ncurses
 , readline
@@ -19,6 +20,31 @@ stdenv.mkDerivation rec {
     sha256 = "173d2p22irwiabvr4z6qvr6zpr6ysfkhmadjlyhyiwd7z62larvy";
   };
 
+  patches = [
+    # Pull upstream fix for -fno-common toolchains
+    (fetchpatch {
+      name = "fno-common.patch";
+      url = "https://github.com/baszoetekouw/pinfo/commit/16dba5978146b6d3a540ac7c8f415eda49280847.patch";
+      sha256 = "148fm32chvq8x9ayq9cnhgszh10g5v0cv0xph67fa7sp341p09wy";
+    })
+
+    # Fix pending upstream inclusion for build on ncurses-6.3:
+    #   https://github.com/baszoetekouw/pinfo/pull/27
+    (fetchpatch {
+      name = "ncurses-6.3.patch";
+      url = "https://github.com/baszoetekouw/pinfo/commit/fc67ceacd81f0c74fcab85447c23a532ae482827.patch";
+      sha256 = "08phmng8vgfqjjazys05acpd5gh110malhw3sx29dg86nsrg2khs";
+    })
+
+    # Fix pending upstream inclusion for build on gcc-11:
+    #   https://github.com/baszoetekouw/pinfo/pull/27
+    (fetchpatch {
+      name = "gcc-11.patch";
+      url = "https://github.com/baszoetekouw/pinfo/commit/ab604fdb67296dad27f3a25f3c9aabdd2fb8c3fa.patch";
+      sha256 = "09g8msgan2x48hxcbm7l6j3av6n8i0bsd4g0vf5xd8bxwzynb13m";
+    })
+  ];
+
   nativeBuildInputs = [
     autoreconfHook
   ];
diff --git a/pkgs/applications/networking/cluster/lens/default.nix b/pkgs/applications/networking/cluster/lens/default.nix
index 6e04391d7a8a..985ae1763236 100644
--- a/pkgs/applications/networking/cluster/lens/default.nix
+++ b/pkgs/applications/networking/cluster/lens/default.nix
@@ -2,13 +2,13 @@
 
 let
   pname = "lens";
-  version = "5.1.3";
-  build = "${version}-latest.20210722.1";
+  version = "5.2.6";
+  build = "${version}-latest.20211104.1";
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "https://api.k8slens.dev/binaries/Lens-${build}.x86_64.AppImage";
-    sha256 = "1iwwyqpn1x1m8n22f99snlhcbcr65i4przx697hlbpmnm40dw7q9";
+    sha256 = "1lkxzgwrgafraimpnciv89fs6r399275vb73drxlg5z83acacf5z";
     name="${pname}.AppImage";
   };
 
diff --git a/pkgs/applications/networking/cluster/levant/default.nix b/pkgs/applications/networking/cluster/levant/default.nix
new file mode 100644
index 000000000000..ff91caf4095e
--- /dev/null
+++ b/pkgs/applications/networking/cluster/levant/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "levant";
+  version = "0.3.0";
+
+  src = fetchFromGitHub {
+    owner = "hashicorp";
+    repo = "levant";
+    rev = "v${version}";
+    sha256 = "9M7a4i+DPKb1H9jOEVAvhvYxGwtj3dK/40n4GSy4Rqo=";
+  };
+
+  vendorSha256 = "5JlrgmIfhX0rPR72sUkFcofw/iIbIaca359GN9C9dhU=";
+
+  runVend = true;
+
+  # The tests try to connect to a Nomad cluster.
+  doCheck = false;
+
+  meta = with lib; {
+    description = "An open source templating and deployment tool for HashiCorp Nomad jobs";
+    homepage = "https://github.com/hashicorp/levant";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ max-niederman ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/element/element-desktop-package.json b/pkgs/applications/networking/instant-messengers/element/element-desktop-package.json
index fbc61c23b5c4..235955ac14e5 100644
--- a/pkgs/applications/networking/instant-messengers/element/element-desktop-package.json
+++ b/pkgs/applications/networking/instant-messengers/element/element-desktop-package.json
@@ -2,7 +2,7 @@
   "name": "element-desktop",
   "productName": "Element",
   "main": "lib/electron-main.js",
-  "version": "1.9.3",
+  "version": "1.9.4",
   "description": "A feature-rich client for Matrix.org",
   "author": "Element",
   "repository": {
@@ -54,7 +54,7 @@
     "@types/minimist": "^1.2.1",
     "@typescript-eslint/eslint-plugin": "^4.17.0",
     "@typescript-eslint/parser": "^4.17.0",
-    "allchange": "^1.0.2",
+    "allchange": "^1.0.5",
     "asar": "^2.0.1",
     "chokidar": "^3.5.2",
     "electron": "13.5",
diff --git a/pkgs/applications/networking/instant-messengers/element/pin.json b/pkgs/applications/networking/instant-messengers/element/pin.json
index dfb9791b3aa9..6d47eb9fe711 100644
--- a/pkgs/applications/networking/instant-messengers/element/pin.json
+++ b/pkgs/applications/networking/instant-messengers/element/pin.json
@@ -1,6 +1,6 @@
 {
-  "version": "1.9.3",
-  "desktopSrcHash": "Pb9iiCYtmuD6DzdvgY8c6pCFdVAxIIUZTWLCa7y5RMI=",
-  "desktopYarnHash": "0iwbszhaxaxggymixljzjb2gqrsij67fwakxhd3yj9g1zds49ghh",
-  "webHash": "06lpb8i7fyimm06y6h3ngh19bx416if9lvs2ah2112vx28hs14zp"
+  "version": "1.9.4",
+  "desktopSrcHash": "sTY55DWeEKV3Ma5DTr4W6K6BjrE019aY8LRk/5f8pPM=",
+  "desktopYarnHash": "0axz0d5qryd0k89lrziah1r6j1154c1cibf1qsjk1azlri3k4298",
+  "webHash": "141iz2jcvwyv3fpi63ddi697qzkk6jg100d0lz6iam98m8m35g24"
 }
diff --git a/pkgs/applications/networking/instant-messengers/matrix-commander/default.nix b/pkgs/applications/networking/instant-messengers/matrix-commander/default.nix
index c4f268871e87..ad3248fabba9 100644
--- a/pkgs/applications/networking/instant-messengers/matrix-commander/default.nix
+++ b/pkgs/applications/networking/instant-messengers/matrix-commander/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation {
   pname = "matrix-commander";
-  version = "unstable-2021-05-26";
+  version = "unstable-2021-08-05";
 
   src = fetchFromGitHub {
     owner = "8go";
     repo = "matrix-commander";
-    rev = "06b4738bc74ee86fb3ac88c04b8230abf82e7421";
-    sha256 = "1skpq3xfnz11m298qnsw68xv391p5qg47flagzsk86pnzi841vc1";
+    rev = "7ab3fd9a0ef4eb19d882cb3701d2025b4d41b63a";
+    sha256 = "sha256-WWf7GbJxGlqIdsS1d0T1DO0WN2RBepHGgJrl/nt7UIg=";
   };
 
   buildInputs = [
diff --git a/pkgs/applications/networking/instant-messengers/pantalaimon/default.nix b/pkgs/applications/networking/instant-messengers/pantalaimon/default.nix
index 153819fc8417..9722d3b89e32 100644
--- a/pkgs/applications/networking/instant-messengers/pantalaimon/default.nix
+++ b/pkgs/applications/networking/instant-messengers/pantalaimon/default.nix
@@ -1,7 +1,7 @@
 { lib, stdenv, buildPythonApplication, fetchFromGitHub, pythonOlder,
   attrs, aiohttp, appdirs, click, keyring, Logbook, peewee, janus,
   prompt-toolkit, matrix-nio, dbus-python, pydbus, notify2, pygobject3,
-  setuptools, installShellFiles,
+  setuptools, installShellFiles, nixosTests,
 
   pytest, faker, pytest-aiohttp, aioresponses,
 
@@ -63,6 +63,10 @@ buildPythonApplication rec {
     installManPage docs/man/*.[1-9]
   '';
 
+  passthru.tests = {
+    inherit (nixosTests) pantalaimon;
+  };
+
   meta = with lib; {
     description = "An end-to-end encryption aware Matrix reverse proxy daemon";
     homepage = "https://github.com/matrix-org/pantalaimon";
diff --git a/pkgs/applications/networking/instant-messengers/slack/default.nix b/pkgs/applications/networking/instant-messengers/slack/default.nix
index 4f876013903e..1e2d87f031e5 100644
--- a/pkgs/applications/networking/instant-messengers/slack/default.nix
+++ b/pkgs/applications/networking/instant-messengers/slack/default.nix
@@ -45,14 +45,14 @@ let
 
   pname = "slack";
 
-  x86_64-darwin-version = "4.20.0";
-  x86_64-darwin-sha256 = "1argl690i4dgz5ih02zg9v4zrlzm282wmibnc6p7xy5jisd5g79w";
+  x86_64-darwin-version = "4.21.1";
+  x86_64-darwin-sha256 = "1xhhll7mbz3f98xd2pzhyv3a49sam2v9fmvglmsvnkrmqppzsr4g";
 
-  x86_64-linux-version = "4.20.0";
-  x86_64-linux-sha256 = "1r8w8s3y74lh4klsmzq2d3f0h721b3a2b53nx8v7b0s6j8w0g0mh";
+  x86_64-linux-version = "4.21.1";
+  x86_64-linux-sha256 = "0mmpvrg2gfjarhrh0cy6axmhbx8v8rkn51gyp9xhr9ll9zrjpvjq";
 
-  aarch64-darwin-version = "4.20.0";
-  aarch64-darwin-sha256 = "1argl690i4dgz5ih02zg9v4zrlzm282wmibnc6p7xy5jisd5g79w";
+  aarch64-darwin-version = "4.21.1";
+  aarch64-darwin-sha256 = "1rkixwg0b0nqp7wzvm24qskc9q3cl43fqfbkv6i2qkrrhpyr3zqw";
 
   version = {
     x86_64-darwin = x86_64-darwin-version;
diff --git a/pkgs/applications/networking/instant-messengers/turses/default.nix b/pkgs/applications/networking/instant-messengers/turses/default.nix
index 256e026a060e..42dd9f835c9a 100644
--- a/pkgs/applications/networking/instant-messengers/turses/default.nix
+++ b/pkgs/applications/networking/instant-messengers/turses/default.nix
@@ -1,7 +1,30 @@
-{ lib, fetchpatch, python3Packages }:
+{ lib
+, fetchpatch
+, fetchFromGitHub
+, python3
+}:
 
-with lib;
-with python3Packages;
+let
+  py = python3.override {
+    packageOverrides = self: super: {
+
+      # Support for later tweepy releases is missing
+      # https://github.com/louipc/turses/issues/12
+      tweepy = super.tweepy.overridePythonAttrs (oldAttrs: rec {
+        version = "3.10.0";
+
+        src = fetchFromGitHub {
+          owner = "tweepy";
+          repo = "tweepy";
+          rev = "v${version}";
+          sha256 = "0k4bdlwjna6f1k19jki4xqgckrinkkw8b9wihzymr1l04rwd05nw";
+        };
+        doCheck = false;
+      });
+    };
+  };
+in
+with py.pkgs;
 
 buildPythonPackage rec {
   pname = "turses";
@@ -12,8 +35,18 @@ buildPythonPackage rec {
     sha256 = "15mkhm3b5ka42h8qph0mhh8izfc1200v7651c62k7ldcs50ib9j6";
   };
 
-  checkInputs = [ mock pytest coverage tox ];
-  propagatedBuildInputs = [ urwid tweepy future ];
+  propagatedBuildInputs = with py.pkgs; [
+    urwid
+    tweepy
+    future
+  ];
+
+  checkInputs = with py.pkgs; [
+    mock
+    pytest
+    coverage
+    tox
+  ];
 
   LC_ALL = "en_US.UTF-8";
 
@@ -29,6 +62,17 @@ buildPythonPackage rec {
     })
   ];
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "urwid==1.3.0" "urwid" \
+      --replace "future==0.14.3" "future" \
+      --replace "tweepy==3.3.0" "tweepy"
+    substituteInPlace tests/test_config.py \
+      --replace "config.generate_config_file.assert_called_once()" "assert config.generate_config_file.call_count == 1"
+    substituteInPlace tests/test_meta.py \
+      --replace "self.observer.update.assert_called_once()" "assert self.observer.update.call_count == 1"
+  '';
+
   checkPhase = ''
     TMP_TURSES=`echo turses-$RANDOM`
     mkdir $TMP_TURSES
@@ -36,18 +80,10 @@ buildPythonPackage rec {
     rm -rf $TMP_TURSES
   '';
 
-  postPatch = ''
-    sed -i -e 's|urwid==1.3.0|urwid==${getVersion urwid}|' setup.py
-    sed -i -e "s|future==0.14.3|future==${getVersion future}|" setup.py
-    sed -i -e "s|tweepy==3.3.0|tweepy==${getVersion tweepy}|" setup.py
-    sed -i -e "s|config.generate_config_file.assert_called_once()|assert config.generate_config_file.call_count == 1|" tests/test_config.py
-    sed -i -e "s|self.observer.update.assert_called_once()|assert self.observer.update.call_count == 1|" tests/test_meta.py
-  '';
-
   meta = with lib; {
-    homepage = "https://github.com/louipc/turses";
     description = "A Twitter client for the console";
-    license = licenses.gpl3;
+    homepage = "https://github.com/louipc/turses";
+    license = licenses.gpl3Only;
     maintainers = with maintainers; [ ];
     platforms = platforms.unix;
   };
diff --git a/pkgs/applications/radio/csdr/default.nix b/pkgs/applications/radio/csdr/default.nix
new file mode 100644
index 000000000000..9b1e75c1040f
--- /dev/null
+++ b/pkgs/applications/radio/csdr/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, lib, fetchFromGitHub
+, autoreconfHook, pkg-config, fftwFloat, libsamplerate
+}:
+
+stdenv.mkDerivation rec {
+  pname = "csdr";
+  version = "0.17.1";
+
+  src = fetchFromGitHub {
+    owner = "jketterl";
+    repo = pname;
+    rev = version;
+    sha256 = "1vip5a3xgskcwba3xi66zfr986xrsch9na7my818cm8vw345y57b";
+  };
+
+  patchPhase = ''
+    substituteInPlace configure.ac \
+      --replace -Wformat=0 ""
+  '';
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkg-config
+  ];
+
+  buildInputs = [
+    fftwFloat
+    libsamplerate
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/jketterl/csdr";
+    description = "A simple DSP library and command-line tool for Software Defined Radio";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ astro ];
+  };
+}
diff --git a/pkgs/applications/radio/openwebrx/default.nix b/pkgs/applications/radio/openwebrx/default.nix
new file mode 100644
index 000000000000..928bc4168ebd
--- /dev/null
+++ b/pkgs/applications/radio/openwebrx/default.nix
@@ -0,0 +1,92 @@
+{ stdenv, lib, buildPythonPackage, buildPythonApplication, fetchFromGitHub
+, pkg-config, cmake, setuptools
+, rtl-sdr, soapysdr-with-plugins, csdr, direwolf
+}:
+
+let
+
+  js8py = buildPythonPackage rec {
+    pname = "js8py";
+    version = "0.1.1";
+
+    src = fetchFromGitHub {
+      owner = "jketterl";
+      repo = pname;
+      rev = version;
+      sha256 = "1j80zclg1cl5clqd00qqa16prz7cyc32bvxqz2mh540cirygq24w";
+    };
+
+    pythonImportsCheck = [ "js8py" "test" ];
+
+    meta = with lib; {
+      homepage = "https://github.com/jketterl/js8py";
+      description = "A library to decode the output of the js8 binary of JS8Call";
+      license = licenses.gpl3Only;
+      maintainers = with maintainers; [ astro ];
+    };
+  };
+
+  owrx_connector = stdenv.mkDerivation rec {
+    pname = "owrx_connector";
+    version = "0.5.0";
+
+    src = fetchFromGitHub {
+      owner = "jketterl";
+      repo = pname;
+      rev = version;
+      sha256 = "0gz4nf2frrkx1mpjfjpz2j919fkc99g5lxd8lhva3lgqyisvf4yj";
+    };
+
+    nativeBuildInputs = [
+      cmake
+      pkg-config
+    ];
+
+    buildInputs = [
+      rtl-sdr
+      soapysdr-with-plugins
+    ];
+
+    meta = with lib; {
+      homepage = "https://github.com/jketterl/owrx_connector";
+      description = "A set of connectors that are used by OpenWebRX to interface with SDR hardware";
+      license = licenses.gpl3Only;
+      platforms = platforms.unix;
+      maintainers = with maintainers; [ astro ];
+    };
+  };
+
+in
+buildPythonApplication rec {
+  pname = "openwebrx";
+  version = "1.1.0";
+
+  src = fetchFromGitHub {
+    owner = "jketterl";
+    repo = pname;
+    rev = version;
+    sha256 = "0maxs07yx235xknvkbmhi2zds3vfkd66l6wz6kspz3jzl4c0v1f9";
+  };
+
+  propagatedBuildInputs = [
+    setuptools
+    csdr
+    js8py
+    soapysdr-with-plugins
+    owrx_connector
+    direwolf
+  ];
+
+  pythonImportsCheck = [ "csdr" "owrx" "test" ];
+
+  passthru = {
+    inherit js8py owrx_connector;
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/jketterl/openwebrx";
+    description = "A simple DSP library and command-line tool for Software Defined Radio";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ astro ];
+  };
+}
diff --git a/pkgs/applications/science/logic/redprl/default.nix b/pkgs/applications/science/logic/redprl/default.nix
index eece691bfd78..656f3f1b653e 100644
--- a/pkgs/applications/science/logic/redprl/default.nix
+++ b/pkgs/applications/science/logic/redprl/default.nix
@@ -2,14 +2,14 @@
 
 stdenv.mkDerivation {
   pname = "redprl";
-  version = "unstable-2017-03-28";
+  version = "unstable-2019-11-04";
 
   src = fetchFromGitHub {
     owner = "RedPRL";
     repo = "sml-redprl";
-    rev = "bdf027de732e4a8d10f9f954389dfff0c822f18b";
+    rev = "c72190de76f7ed1cfbe1d2046c96e99ac5022b0c";
     fetchSubmodules = true;
-    sha256 = "0cihwnd78d3ksxp6mppifm7xpi3fsii5mixvicajy87ggw8z305c";
+    sha256 = "sha256-xrQT5o0bsIN+mCYUOz9iY4+j3HGROb1I6R2ADcLy8n4=";
   };
 
   buildInputs = [ mlton ];
diff --git a/pkgs/applications/terminal-emulators/roxterm/default.nix b/pkgs/applications/terminal-emulators/roxterm/default.nix
index fff534aaff1a..66c96ab87986 100644
--- a/pkgs/applications/terminal-emulators/roxterm/default.nix
+++ b/pkgs/applications/terminal-emulators/roxterm/default.nix
@@ -1,4 +1,4 @@
-{ at-spi2-core, cmake, dbus, dbus-glib, docbook_xsl, epoxy, fetchpatch, fetchFromGitHub
+{ at-spi2-core, cmake, dbus, dbus-glib, docbook_xsl, epoxy, fetchFromGitHub
 , glib, gtk3, harfbuzz, libXdmcp, libXtst, libpthreadstubs
 , libselinux, libsepol, libtasn1, libxkbcommon, libxslt, p11-kit, pcre2
 , pkg-config, lib, stdenv, util-linuxMinimal, vte, wrapGAppsHook, xmlto
@@ -6,25 +6,15 @@
 
 stdenv.mkDerivation rec {
   pname = "roxterm";
-  version = "3.7.5";
+  version = "3.11.1";
 
   src = fetchFromGitHub {
     owner = "realh";
     repo = "roxterm";
     rev = version;
-    sha256 = "042hchvgk9jzz035zsgnfhh8105zvspbzz6b78waylsdlgqn0pp1";
+    sha256 = "1n7588bl83sp51jwjq97f526c7fkh0kq90idw3nayb4zmi530irx";
   };
 
-  patches = [
-    # This is the commit directly after v3.7.5.  It is needed to get roxterm to
-    # build correctly.  It can be removed when v3.7.6 (or v3.8.0) has been
-    # released.
-    (fetchpatch {
-      url = "https://github.com/realh/roxterm/commit/f7c38fd48bd1810e16d82794bdfb61a9760a2fe1.patch";
-      sha256 = "1v77b7ilgf8zy1npxxcyc06mq6lck6bi6lw4aksnq3mi61n5znmx";
-    })
-  ];
-
   nativeBuildInputs = [ cmake pkg-config wrapGAppsHook libxslt ];
 
   buildInputs =
diff --git a/pkgs/applications/version-management/git-and-tools/glitter/default.nix b/pkgs/applications/version-management/git-and-tools/glitter/default.nix
index ff781f471485..d9c156a9b2a3 100644
--- a/pkgs/applications/version-management/git-and-tools/glitter/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/glitter/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "glitter";
-  version = "1.5.1";
+  version = "1.5.2";
 
   src = fetchFromGitHub {
     owner = "milo123459";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-AVHMDDvrSLg0OwoG4I5/W2ttWgBwzOG7553gr9bCDFs=";
+    sha256 = "sha256-p+Oee0xUqd+vBjpjKI33wR21zBen29xu2gdmMCiH1zk=";
   };
 
-  cargoSha256 = "sha256-vBzy4gnlJMQwvVieuWuiVOm/HAr6rHkHcLmzY7eklT4=";
+  cargoSha256 = "sha256-qmlnmj7+w+RVYj7DKiwm0JowGNlyOsbAGBwfXgRcLHE=";
 
   # tests require it to be in a git repository
   preCheck = ''
diff --git a/pkgs/applications/video/freetube/default.nix b/pkgs/applications/video/freetube/default.nix
index aa32e8828e06..c5a2a3138609 100644
--- a/pkgs/applications/video/freetube/default.nix
+++ b/pkgs/applications/video/freetube/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "freetube";
-  version = "0.15.0";
+  version = "0.15.1";
 
   src = fetchurl {
     url = "https://github.com/FreeTubeApp/FreeTube/releases/download/v${version}-beta/freetube_${version}_amd64.AppImage";
-    sha256 = "sha256-52cVY3SBT048tErydk3l27yBvM/FMVpEMf5miAeInDM=";
+    sha256 = "sha256-7jmKD6HjsTqW/SRmD4xI3uQJnwmyDgjJZRJX9XygZyU=";
   };
 
   appimageContents = appimageTools.extractType2 {
diff --git a/pkgs/build-support/writers/default.nix b/pkgs/build-support/writers/default.nix
index 216e41f6d7ec..4b4d4bb203e0 100644
--- a/pkgs/build-support/writers/default.nix
+++ b/pkgs/build-support/writers/default.nix
@@ -1,4 +1,4 @@
-{ pkgs, buildPackages, lib, gawk, gnused, gixy }:
+{ pkgs, buildPackages, lib, stdenv, libiconv, gawk, gnused, gixy }:
 
 with lib;
 rec {
@@ -150,10 +150,13 @@ rec {
       rustcArgs ? [],
       strip ? true
   }:
+  let
+    darwinArgs = lib.optionals stdenv.isDarwin [ "-L${lib.getLib libiconv}/lib" ];
+  in
     makeBinWriter {
       compileScript = ''
         cp "$contentPath" tmp.rs
-        PATH=${makeBinPath [pkgs.gcc]} ${lib.getBin rustc}/bin/rustc ${lib.escapeShellArgs rustcArgs} -o "$out" tmp.rs
+        PATH=${makeBinPath [pkgs.gcc]} ${lib.getBin rustc}/bin/rustc ${lib.escapeShellArgs rustcArgs} ${lib.escapeShellArgs darwinArgs} -o "$out" tmp.rs
       '';
       inherit strip;
     } name;
diff --git a/pkgs/data/themes/flat-remix-gnome/default.nix b/pkgs/data/themes/flat-remix-gnome/default.nix
index bef378d66c3e..4c43a48c1d9f 100644
--- a/pkgs/data/themes/flat-remix-gnome/default.nix
+++ b/pkgs/data/themes/flat-remix-gnome/default.nix
@@ -2,24 +2,30 @@
 , fetchFromGitHub
 , glib
 , lib
+, writeScriptBin
 }:
-
+let
+  # make install will use dconf to find desktop background file uri.
+  # consider adding an args to allow specify pictures manually.
+  # https://github.com/daniruiz/flat-remix-gnome/blob/20211113/Makefile#L38
+  fake-dconf = writeScriptBin "dconf" "echo -n";
+in
 stdenv.mkDerivation rec {
   pname = "flat-remix-gnome";
-  version = "20211028";
+  version = "20211113";
 
   src = fetchFromGitHub {
     owner = "daniruiz";
     repo = pname;
     rev = version;
-    hash = "sha256-sHJj81MmU9s5sUq5gaIT3leezuG0aVvgTD70Kho9Z0c=";
+    hash = "sha256-A9aiaS4CXRpr4+Y8+tyvWYRbR9STFS9TuplGksPfqtU=";
   };
 
-  nativeBuildInputs = [ glib ];
+  nativeBuildInputs = [ glib fake-dconf ];
   makeFlags = [ "PREFIX=$(out)" ];
   preInstall = ''
     # make install will back up this file, it will fail if the file doesn't exist.
-    # https://github.com/daniruiz/flat-remix-gnome/blob/20211028/Makefile#L54
+    # https://github.com/daniruiz/flat-remix-gnome/blob/20211113/Makefile#L56
     mkdir -p $out/share/gnome-shell/
     touch $out/share/gnome-shell/gnome-shell-theme.gresource
   '';
diff --git a/pkgs/development/compilers/chez/default.nix b/pkgs/development/compilers/chez/default.nix
index c1c8eced83ba..a02256697daf 100644
--- a/pkgs/development/compilers/chez/default.nix
+++ b/pkgs/development/compilers/chez/default.nix
@@ -73,6 +73,6 @@ stdenv.mkDerivation rec {
     license      = lib.licenses.asl20;
     maintainers  = with lib.maintainers; [ thoughtpolice ];
     platforms    = lib.platforms.unix;
-    badPlatforms = [ "aarch64-linux" ];
+    badPlatforms = [ "aarch64-linux" "aarch64-darwin" ];
   };
 }
diff --git a/pkgs/development/interpreters/acl2/0001-Fix-some-paths-for-Nix-build.patch b/pkgs/development/interpreters/acl2/0001-Fix-some-paths-for-Nix-build.patch
index ac107414a92d..7726f17b41ed 100644
--- a/pkgs/development/interpreters/acl2/0001-Fix-some-paths-for-Nix-build.patch
+++ b/pkgs/development/interpreters/acl2/0001-Fix-some-paths-for-Nix-build.patch
@@ -102,7 +102,7 @@ index e5db28645..65eb818a1 100644
 -                "libcrypto.dylib"                ;; default system libcrypto, which may have insufficient crypto
 -                "/usr/lib/libcrypto.dylib"))
 -  (:cygwin (:or "cygcrypto-1.1.dll" "cygcrypto-1.0.0.dll")))
-+  (t "@openssl@/lib/libcrypto.so"))
++  (t "@libcrypto@"))
  
  (cffi:define-foreign-library libssl
 -  (:windows (:or #+(and windows x86-64) "libssl-1_1-x64.dll"
@@ -145,7 +145,7 @@ index e5db28645..65eb818a1 100644
 -                                  "libssl.so"))
 -  (:cygwin (:or "cygssl-1.1.dll" "cygssl-1.0.0.dll"))
 -  (t (:default "libssl3")))
-+  (t "@openssl@/lib/libssl.so"))
++  (t "@libssl@"))
  
  (unless (member :cl+ssl-foreign-libs-already-loaded
                  *features*)
diff --git a/pkgs/development/interpreters/acl2/default.nix b/pkgs/development/interpreters/acl2/default.nix
index 9436cf58e427..a1b59b8bf69d 100644
--- a/pkgs/development/interpreters/acl2/default.nix
+++ b/pkgs/development/interpreters/acl2/default.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, callPackage, fetchFromGitHub, runCommandLocal, makeWrapper, substituteAll
-, sbcl, bash, which, perl, nettools
+, sbcl, bash, which, perl, hostname
 , openssl, glucose, minisat, abc-verifier, z3, python
 , certifyBooks ? true
 } @ args:
@@ -36,7 +36,8 @@ in stdenv.mkDerivation rec {
   patches = [(substituteAll {
     src = ./0001-Fix-some-paths-for-Nix-build.patch;
     libipasir = "${libipasir}/lib/${libipasir.libname}";
-    openssl = openssl.out;
+    libssl = "${openssl.out}/lib/libssl${stdenv.hostPlatform.extensions.sharedLibrary}";
+    libcrypto = "${openssl.out}/lib/libcrypto${stdenv.hostPlatform.extensions.sharedLibrary}";
   })];
 
   buildInputs = [
@@ -44,7 +45,7 @@ in stdenv.mkDerivation rec {
     sbcl
   ] ++ lib.optionals certifyBooks [
     # To build community books, we need Perl and a couple of utilities:
-    which perl nettools makeWrapper
+    which perl hostname makeWrapper
     # Some of the books require one or more of these external tools:
     openssl.out glucose minisat abc-verifier libipasir
     z3 (python.withPackages (ps: [ ps.z3 ]))
diff --git a/pkgs/development/libraries/graphene/default.nix b/pkgs/development/libraries/graphene/default.nix
index a8e0d1179826..a0bfc6f017ad 100644
--- a/pkgs/development/libraries/graphene/default.nix
+++ b/pkgs/development/libraries/graphene/default.nix
@@ -67,9 +67,13 @@ stdenv.mkDerivation rec {
     PATH=${python3.withPackages (pp: [ pp.pygobject3 pp.tappy ])}/bin:$PATH patchShebangs tests/introspection.py
   '';
 
-  postFixup = ''
-    wrapProgram "${placeholder "installedTests"}/libexec/installed-tests/graphene-1.0/introspection.py" \
-      --prefix GI_TYPELIB_PATH : "$out/lib/girepository-1.0"
+  postFixup = let
+    introspectionPy = "${placeholder "installedTests"}/libexec/installed-tests/graphene-1.0/introspection.py";
+  in ''
+    if [ -x '${introspectionPy}' ] ; then
+      wrapProgram '${introspectionPy}' \
+        --prefix GI_TYPELIB_PATH : "$out/lib/girepository-1.0"
+    fi
   '';
 
   passthru = {
diff --git a/pkgs/development/libraries/vc/0.7.nix b/pkgs/development/libraries/vc/0.7.nix
index dd5b03f2dc50..310635d9cbf3 100644
--- a/pkgs/development/libraries/vc/0.7.nix
+++ b/pkgs/development/libraries/vc/0.7.nix
@@ -11,6 +11,9 @@ stdenv.mkDerivation rec {
     sha256 = "190s4r2n3jsivl4j2m288j3rqmgjj6gl308hi9mzwyhcfn17q8br";
   };
 
+  # Avoid requesting an unreasonable intrinsic
+  patches = lib.optional stdenv.cc.isClang ./vc_0_7_clang_fix.patch;
+
   nativeBuildInputs = [ cmake ];
 
   postPatch = ''
diff --git a/pkgs/development/libraries/vc/vc_0_7_clang_fix.patch b/pkgs/development/libraries/vc/vc_0_7_clang_fix.patch
new file mode 100644
index 000000000000..29ea6f529490
--- /dev/null
+++ b/pkgs/development/libraries/vc/vc_0_7_clang_fix.patch
@@ -0,0 +1,28 @@
+diff -ur a/sse/intrinsics.h b/sse/intrinsics.h
+--- a/sse/intrinsics.h	2021-11-12 22:09:50.000000000 -0500
++++ b/sse/intrinsics.h	2021-11-12 22:14:08.000000000 -0500
+@@ -498,16 +498,6 @@
+         case 0:
+             f = _mm_cvtss_f32(v);
+             break;
+-#if defined VC_IMPL_SSE4_1 && !defined VC_MSVC
+-        default:
+-#ifdef VC_GCC
+-            f = __builtin_ia32_vec_ext_v4sf(static_cast<__v4sf>(v), (i));
+-#else
+-            // MSVC fails to compile this because it can't optimize i to an immediate
+-            _MM_EXTRACT_FLOAT(f, v, i);
+-#endif
+-            break;
+-#else
+         case 1:
+             f = _mm_cvtss_f32(_mm_castsi128_ps(_mm_srli_si128(_mm_castps_si128(v), 4)));
+             break;
+@@ -517,7 +507,6 @@
+         case 3:
+             f = _mm_cvtss_f32(_mm_castsi128_ps(_mm_srli_si128(_mm_castps_si128(v), 12)));
+             break;
+-#endif
+         }
+         return f;
+     }
diff --git a/pkgs/development/node-packages/node-packages.json b/pkgs/development/node-packages/node-packages.json
index 9d0ca77437bc..af67ffadf763 100644
--- a/pkgs/development/node-packages/node-packages.json
+++ b/pkgs/development/node-packages/node-packages.json
@@ -17,6 +17,7 @@
 , "@webassemblyjs/wasm-strip"
 , "@webassemblyjs/wasm-text-gen"
 , "@webassemblyjs/wast-refmt"
+, "alex"
 , "alloy"
 , "asar"
 , "autoprefixer"
diff --git a/pkgs/development/node-packages/node-packages.nix b/pkgs/development/node-packages/node-packages.nix
index 2e8f941eb44e..d3ebbad6d341 100644
--- a/pkgs/development/node-packages/node-packages.nix
+++ b/pkgs/development/node-packages/node-packages.nix
@@ -6565,6 +6565,15 @@ let
         sha512 = "SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==";
       };
     };
+    "@types/concat-stream-1.6.1" = {
+      name = "_at_types_slash_concat-stream";
+      packageName = "@types/concat-stream";
+      version = "1.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz";
+        sha512 = "eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==";
+      };
+    };
     "@types/connect-3.4.35" = {
       name = "_at_types_slash_connect";
       packageName = "@types/connect";
@@ -6925,6 +6934,15 @@ let
         sha512 = "rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==";
       };
     };
+    "@types/is-empty-1.2.1" = {
+      name = "_at_types_slash_is-empty";
+      packageName = "@types/is-empty";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.1.tgz";
+        sha512 = "a3xgqnFTuNJDm1fjsTjHocYJ40Cz3t8utYpi5GNaxzrJC2HSD08ym+whIL7fNqiqBCdM9bcqD1H/tORWAFXoZw==";
+      };
+    };
     "@types/istanbul-lib-coverage-2.0.3" = {
       name = "_at_types_slash_istanbul-lib-coverage";
       packageName = "@types/istanbul-lib-coverage";
@@ -6988,6 +7006,15 @@ let
         sha512 = "S6+8JAYTE1qdsc9HMVsfY7+SgSuUU/Tp6TYTmITW0PZxiyIMvol3Gy//y69Wkhs0ti4py5qgR3uZH6uz/DNzJQ==";
       };
     };
+    "@types/js-yaml-4.0.4" = {
+      name = "_at_types_slash_js-yaml";
+      packageName = "@types/js-yaml";
+      version = "4.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.4.tgz";
+        sha512 = "AuHubXUmg0AzkXH0Mx6sIxeY/1C110mm/EkE/gB1sTRz3h2dao2W/63q42SlVST+lICxz5Oki2hzYA6+KnnieQ==";
+      };
+    };
     "@types/jscodeshift-0.7.2" = {
       name = "_at_types_slash_jscodeshift";
       packageName = "@types/jscodeshift";
@@ -7222,6 +7249,15 @@ let
         sha512 = "1GJnq7RwuFPRicMHdT53vza5v39nep9OKIbozxNUpFXP04CydcdWrqpZQ+MlVdlLFCisWnnt09xughajjWpFsw==";
       };
     };
+    "@types/nlcst-1.0.0" = {
+      name = "_at_types_slash_nlcst";
+      packageName = "@types/nlcst";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/nlcst/-/nlcst-1.0.0.tgz";
+        sha512 = "3TGCfOcy8R8mMQ4CNSNOe3PG66HttvjcLzCoOpvXvDtfWOTi+uT/rxeOKm/qEwbM4SNe1O/PjdiBK2YcTjU4OQ==";
+      };
+    };
     "@types/node-10.12.18" = {
       name = "_at_types_slash_node";
       packageName = "@types/node";
@@ -7393,6 +7429,15 @@ let
         sha512 = "kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==";
       };
     };
+    "@types/parse5-6.0.2" = {
+      name = "_at_types_slash_parse5";
+      packageName = "@types/parse5";
+      version = "6.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.2.tgz";
+        sha512 = "+hQX+WyJAOne7Fh3zF5CxPemILIbuhNcqHHodzK9caYOLnC8pD5efmPleRnw0z++LfKUC/sVNMwk0Gap+B0baA==";
+      };
+    };
     "@types/pbkdf2-3.1.0" = {
       name = "_at_types_slash_pbkdf2";
       packageName = "@types/pbkdf2";
@@ -7672,6 +7717,15 @@ let
         sha512 = "kdU8ydio1weSvhIIh9rptZ6MdMiR2NQGFnlnZ5qQ7OiQS1ej79zK4GaJ9qX3naSTpOA7iWqwUnZCQpd7SpD1NA==";
       };
     };
+    "@types/supports-color-8.1.1" = {
+      name = "_at_types_slash_supports-color";
+      packageName = "@types/supports-color";
+      version = "8.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz";
+        sha512 = "dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==";
+      };
+    };
     "@types/tapable-1.0.8" = {
       name = "_at_types_slash_tapable";
       packageName = "@types/tapable";
@@ -12622,6 +12676,15 @@ let
         sha512 = "xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==";
       };
     };
+    "bail-2.0.2" = {
+      name = "bail";
+      packageName = "bail";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz";
+        sha512 = "0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==";
+      };
+    };
     "balanced-match-1.0.2" = {
       name = "balanced-match";
       packageName = "balanced-match";
@@ -14963,6 +15026,15 @@ let
         sha1 = "cb94faeb61c8696451db36534e1422f94f0aee88";
       };
     };
+    "builtins-4.0.0" = {
+      name = "builtins";
+      packageName = "builtins";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/builtins/-/builtins-4.0.0.tgz";
+        sha512 = "qC0E2Dxgou1IHhvJSLwGDSTvokbRovU5zZFuDY6oY8Y2lF3nGt5Ad8YZK7GMtqzY84Wu7pXTPeHQeHcXSXsRhw==";
+      };
+    };
     "bulk-write-stream-1.1.4" = {
       name = "bulk-write-stream";
       packageName = "bulk-write-stream";
@@ -15503,13 +15575,13 @@ let
         sha512 = "bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==";
       };
     };
-    "caniuse-lite-1.0.30001279" = {
+    "caniuse-lite-1.0.30001280" = {
       name = "caniuse-lite";
       packageName = "caniuse-lite";
-      version = "1.0.30001279";
+      version = "1.0.30001280";
       src = fetchurl {
-        url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001279.tgz";
-        sha512 = "VfEHpzHEXj6/CxggTwSFoZBBYGQfQv9Cf42KPlO79sWXCD1QNKWKsKzFeWL7QpZHJQYAvocqV6Rty1yJMkqWLQ==";
+        url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001280.tgz";
+        sha512 = "kFXwYvHe5rix25uwueBxC569o53J6TpnGu0BEEn+6Lhl2vsnAumRFWEBhDft1fwyo6m1r4i+RqA4+163FpeFcA==";
       };
     };
     "canvas-2.8.0" = {
@@ -15674,22 +15746,31 @@ let
         sha512 = "vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==";
       };
     };
-    "cdk8s-1.1.30" = {
+    "ccount-2.0.1" = {
+      name = "ccount";
+      packageName = "ccount";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz";
+        sha512 = "eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==";
+      };
+    };
+    "cdk8s-1.1.31" = {
       name = "cdk8s";
       packageName = "cdk8s";
-      version = "1.1.30";
+      version = "1.1.31";
       src = fetchurl {
-        url = "https://registry.npmjs.org/cdk8s/-/cdk8s-1.1.30.tgz";
-        sha512 = "vD5tJrvGFX0ON2ywTOOlMWXrWxqVQsrv9nkClMUAVjzZQCLjlQh5iljN/WPf3spIrKM59ydVnnCibPzG+rPkNw==";
+        url = "https://registry.npmjs.org/cdk8s/-/cdk8s-1.1.31.tgz";
+        sha512 = "mPFT6pSE4n8p5wE6IjJZeCfJAU5kZBmSjYIbT3Jkz4KYtiSSbdKB3tD/b37VL4RZCOv4OqCAU3mF87BgB+xu0w==";
       };
     };
-    "cdk8s-plus-22-1.0.0-beta.37" = {
+    "cdk8s-plus-22-1.0.0-beta.38" = {
       name = "cdk8s-plus-22";
       packageName = "cdk8s-plus-22";
-      version = "1.0.0-beta.37";
+      version = "1.0.0-beta.38";
       src = fetchurl {
-        url = "https://registry.npmjs.org/cdk8s-plus-22/-/cdk8s-plus-22-1.0.0-beta.37.tgz";
-        sha512 = "nKhTqF9V2262HKknBtJ9RedS/5gjKYQ9Cx4F/jPFjdlZZ+ixD2AJop258S8lMpXEeR+E7MAQRwc1Nx0hkHf7gw==";
+        url = "https://registry.npmjs.org/cdk8s-plus-22/-/cdk8s-plus-22-1.0.0-beta.38.tgz";
+        sha512 = "tSBAA6H8hSnuMWFWmFepGsS+gMh+3bWCbKCRL3FfJbh7iH9H1SESmWNUgAMMwzoFKCT3MyKSVt6gbbisP6LOlA==";
       };
     };
     "cdktf-0.7.0" = {
@@ -17600,6 +17681,15 @@ let
         sha512 = "GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==";
       };
     };
+    "comma-separated-tokens-2.0.2" = {
+      name = "comma-separated-tokens";
+      packageName = "comma-separated-tokens";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz";
+        sha512 = "G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==";
+      };
+    };
     "command-exists-1.2.9" = {
       name = "command-exists";
       packageName = "command-exists";
@@ -20031,6 +20121,15 @@ let
         sha512 = "X3VvImImJ5q6w0wOgJtxAX+RC06d26egp/A/vdSxqOrsRtAA9biXAkc4PZGj/3gx0+z+gDFri6BpcpwuG1/UEw==";
       };
     };
+    "cuss-2.0.0" = {
+      name = "cuss";
+      packageName = "cuss";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cuss/-/cuss-2.0.0.tgz";
+        sha512 = "EHbh7F4GHvgyuakXeic9wtfeEYves17MxLpgIsljCbaDil6auJVsTTLV/qwkZ58+Gu+NKmMHVQm81J3BcEqwUg==";
+      };
+    };
     "custom-error-class-1.0.0" = {
       name = "custom-error-class";
       packageName = "custom-error-class";
@@ -26378,6 +26477,15 @@ let
         sha512 = "CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==";
       };
     };
+    "fault-2.0.1" = {
+      name = "fault";
+      packageName = "fault";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz";
+        sha512 = "WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==";
+      };
+    };
     "faunadb-4.4.1" = {
       name = "faunadb";
       packageName = "faunadb";
@@ -27683,13 +27791,13 @@ let
         sha512 = "OqlwJq1BdpB83BZXTqI+dNcA6uYk6qk4u9Cgnt64Y+XS7dwdbp/mobx8S2KXf2AXH+scNmA/UVK3SEFHR3vHZA==";
       };
     };
-    "fraction.js-4.1.1" = {
+    "fraction.js-4.1.2" = {
       name = "fraction.js";
       packageName = "fraction.js";
-      version = "4.1.1";
+      version = "4.1.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz";
-        sha512 = "MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==";
+        url = "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz";
+        sha512 = "o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==";
       };
     };
     "fragment-cache-0.2.1" = {
@@ -30276,6 +30384,15 @@ let
         sha512 = "EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==";
       };
     };
+    "has-flag-5.0.1" = {
+      name = "has-flag";
+      packageName = "has-flag";
+      version = "5.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-flag/-/has-flag-5.0.1.tgz";
+        sha512 = "CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==";
+      };
+    };
     "has-generators-1.0.1" = {
       name = "has-generators";
       packageName = "has-generators";
@@ -30492,6 +30609,15 @@ let
         sha512 = "JQMW+TJe0UAIXZMjCJ4Wf6ayDV9Yv3PBDPsHD4ExBpAspJ6MOcCX+nzVF+UJVv7OqPcg852WEMSHQPoRA+FVSw==";
       };
     };
+    "hast-util-embedded-2.0.0" = {
+      name = "hast-util-embedded";
+      packageName = "hast-util-embedded";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-2.0.0.tgz";
+        sha512 = "vEr54rDu2CheBM4nLkWbW8Rycf8HhkA/KsrDnlyKnvBTyhyO+vAG6twHnfUbiRGo56YeUBNCI4HFfHg3Wu+tig==";
+      };
+    };
     "hast-util-from-parse5-5.0.3" = {
       name = "hast-util-from-parse5";
       packageName = "hast-util-from-parse5";
@@ -30510,6 +30636,15 @@ let
         sha512 = "jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==";
       };
     };
+    "hast-util-from-parse5-7.1.0" = {
+      name = "hast-util-from-parse5";
+      packageName = "hast-util-from-parse5";
+      version = "7.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz";
+        sha512 = "m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==";
+      };
+    };
     "hast-util-has-property-1.0.4" = {
       name = "hast-util-has-property";
       packageName = "hast-util-has-property";
@@ -30519,6 +30654,15 @@ let
         sha512 = "ghHup2voGfgFoHMGnaLHOjbYFACKrRh9KFttdCzMCbFoBMJXiNi2+XTrPP8+q6cDJM/RSqlCfVWrjp1H201rZg==";
       };
     };
+    "hast-util-has-property-2.0.0" = {
+      name = "hast-util-has-property";
+      packageName = "hast-util-has-property";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-2.0.0.tgz";
+        sha512 = "4Qf++8o5v14us4Muv3HRj+Er6wTNGA/N9uCaZMty4JWvyFKLdhULrv4KE1b65AthsSO9TXSZnjuxS8ecIyhb0w==";
+      };
+    };
     "hast-util-is-body-ok-link-1.0.4" = {
       name = "hast-util-is-body-ok-link";
       packageName = "hast-util-is-body-ok-link";
@@ -30537,6 +30681,15 @@ let
         sha512 = "oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==";
       };
     };
+    "hast-util-is-element-2.1.1" = {
+      name = "hast-util-is-element";
+      packageName = "hast-util-is-element";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.1.tgz";
+        sha512 = "ag0fiZfRWsPiR1udvnSbaazJLGv8qd8E+/e3rW8rUZhbKG4HNJmFL4QkEceN+22BgE+uozXY30z/s+2dL6Z++g==";
+      };
+    };
     "hast-util-parse-selector-2.2.5" = {
       name = "hast-util-parse-selector";
       packageName = "hast-util-parse-selector";
@@ -30546,6 +30699,15 @@ let
         sha512 = "7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==";
       };
     };
+    "hast-util-parse-selector-3.1.0" = {
+      name = "hast-util-parse-selector";
+      packageName = "hast-util-parse-selector";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz";
+        sha512 = "AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==";
+      };
+    };
     "hast-util-phrasing-1.0.5" = {
       name = "hast-util-phrasing";
       packageName = "hast-util-phrasing";
@@ -30555,6 +30717,15 @@ let
         sha512 = "P3uxm+8bnwcfAS/XpGie9wMmQXAQqsYhgQQKRwmWH/V6chiq0lmTy8KjQRJmYjusdMtNKGCUksdILSZy1suSpQ==";
       };
     };
+    "hast-util-phrasing-2.0.0" = {
+      name = "hast-util-phrasing";
+      packageName = "hast-util-phrasing";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-2.0.0.tgz";
+        sha512 = "4rFSiFpdmTtp4aAxki6obpEbVJ85fOEN8/A8bOByoCaqRDTtd1AKTw3P/cXgVm0/RDuaWj0tSd1pTb0Jw5QfdA==";
+      };
+    };
     "hast-util-to-nlcst-1.2.8" = {
       name = "hast-util-to-nlcst";
       packageName = "hast-util-to-nlcst";
@@ -30564,6 +30735,15 @@ let
         sha512 = "cKMArohUvGw4fpN9PKDCIB+klMojkWzz5zNVNFRdKa0oC1MVX1TaDki1E/tb9xqS8WlUjKifIjmrNmRbEJzrJg==";
       };
     };
+    "hast-util-to-nlcst-2.2.0" = {
+      name = "hast-util-to-nlcst";
+      packageName = "hast-util-to-nlcst";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hast-util-to-nlcst/-/hast-util-to-nlcst-2.2.0.tgz";
+        sha512 = "BFBvuoEo9yCHklUSCz6+JG/FAkr+qCVaW1bE0/Y8+SBhuaz7s+suHDpkyQxH7FF2kqctYRhquLRCcmn+PS0IUQ==";
+      };
+    };
     "hast-util-to-string-1.0.4" = {
       name = "hast-util-to-string";
       packageName = "hast-util-to-string";
@@ -30573,6 +30753,15 @@ let
         sha512 = "eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w==";
       };
     };
+    "hast-util-to-string-2.0.0" = {
+      name = "hast-util-to-string";
+      packageName = "hast-util-to-string";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-2.0.0.tgz";
+        sha512 = "02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==";
+      };
+    };
     "hast-util-whitespace-1.0.4" = {
       name = "hast-util-whitespace";
       packageName = "hast-util-whitespace";
@@ -30582,6 +30771,15 @@ let
         sha512 = "I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==";
       };
     };
+    "hast-util-whitespace-2.0.0" = {
+      name = "hast-util-whitespace";
+      packageName = "hast-util-whitespace";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz";
+        sha512 = "Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==";
+      };
+    };
     "hastscript-5.1.2" = {
       name = "hastscript";
       packageName = "hastscript";
@@ -30600,6 +30798,15 @@ let
         sha512 = "nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==";
       };
     };
+    "hastscript-7.0.2" = {
+      name = "hastscript";
+      packageName = "hastscript";
+      version = "7.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hastscript/-/hastscript-7.0.2.tgz";
+        sha512 = "uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==";
+      };
+    };
     "hasurl-1.0.0" = {
       name = "hasurl";
       packageName = "hasurl";
@@ -32203,6 +32410,15 @@ let
         sha512 = "bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==";
       };
     };
+    "import-meta-resolve-1.1.1" = {
+      name = "import-meta-resolve";
+      packageName = "import-meta-resolve";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-1.1.1.tgz";
+        sha512 = "JiTuIvVyPaUg11eTrNDx5bgQ/yMKMZffc7YSjvQeSMXy58DO2SQ8BtAf3xteZvmzvjYh14wnqNjL8XVeDy2o9A==";
+      };
+    };
     "imurmurhash-0.1.4" = {
       name = "imurmurhash";
       packageName = "imurmurhash";
@@ -34111,6 +34327,15 @@ let
         sha512 = "gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==";
       };
     };
+    "is-plain-obj-4.0.0" = {
+      name = "is-plain-obj";
+      packageName = "is-plain-obj";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz";
+        sha512 = "NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==";
+      };
+    };
     "is-plain-object-2.0.4" = {
       name = "is-plain-object";
       packageName = "is-plain-object";
@@ -35570,13 +35795,13 @@ let
         sha512 = "AjJ0tlrnBatJB7OJ/cn9sFaLpM4Ra7fSkxLlHNWsVE1KFAUnCLIcDloXaytaDmBXY/emxi3/XbWwGUIqbjbCIw==";
       };
     };
-    "jsii-srcmak-0.1.395" = {
+    "jsii-srcmak-0.1.396" = {
       name = "jsii-srcmak";
       packageName = "jsii-srcmak";
-      version = "0.1.395";
+      version = "0.1.396";
       src = fetchurl {
-        url = "https://registry.npmjs.org/jsii-srcmak/-/jsii-srcmak-0.1.395.tgz";
-        sha512 = "bes1vFd0qC/R7Ef/iuLdQgJ9yNVASh3HFPhfGHubJ1urDOBZN3XcNdE6cBuRradItVBrzBWovHabfW1DiEvz+g==";
+        url = "https://registry.npmjs.org/jsii-srcmak/-/jsii-srcmak-0.1.396.tgz";
+        sha512 = "io/gnInaCTuxgqA/sueTLm44nlJdcWNeUnrZUMW166VKNp+XCLF4kccLaSM6BwuoLKoSxtOL3BAjfYgqtVNIuQ==";
       };
     };
     "json-bigint-1.0.0" = {
@@ -35867,13 +36092,13 @@ let
         sha512 = "0/4Lv6IenJV0qj2oBdgPIAmFiKKnh8qh7bmLFJ+/ZZHLjSeiL3fKKGX3UryvKPbxFbhV+JcYo9KUC19GJ/Z/4A==";
       };
     };
-    "json2jsii-0.2.48" = {
+    "json2jsii-0.2.49" = {
       name = "json2jsii";
       packageName = "json2jsii";
-      version = "0.2.48";
+      version = "0.2.49";
       src = fetchurl {
-        url = "https://registry.npmjs.org/json2jsii/-/json2jsii-0.2.48.tgz";
-        sha512 = "7quEqt8IUcyUQWCMFHdFkWvrMEe52MmLpAihdeW8YRxYXGlasqioL8MqDffHQLNhyrr7EYVW9Xkl1AJcCj667g==";
+        url = "https://registry.npmjs.org/json2jsii/-/json2jsii-0.2.49.tgz";
+        sha512 = "4SzHZSGzlD3FG2599ROxzaW1O3rnV9M+0ZP0TPAcQky31NruMocL21WVjzBzG2EZmM4u7L4JlceHVVFLCmziYw==";
       };
     };
     "json3-3.2.6" = {
@@ -37694,6 +37919,15 @@ let
         sha512 = "od7eKCCZ62ITvFf8nHHrIiYmgOHb4xVNDRDqxBWSaao5FZyyZVX8OmRCbwjDGPrSrgIulwPNyBsWCGnhiDC0oQ==";
       };
     };
+    "load-plugin-4.0.1" = {
+      name = "load-plugin";
+      packageName = "load-plugin";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/load-plugin/-/load-plugin-4.0.1.tgz";
+        sha512 = "4kMi+mOSn/TR51pDo4tgxROHfBHXsrcyEYSGHcJ1o6TtRaP2PsRM5EwmYbj1uiLDvbfA/ohwuSWZJzqGiai8Dw==";
+      };
+    };
     "load-yaml-file-0.2.0" = {
       name = "load-yaml-file";
       packageName = "load-yaml-file";
@@ -40116,6 +40350,15 @@ let
         sha512 = "Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==";
       };
     };
+    "markdown-table-3.0.1" = {
+      name = "markdown-table";
+      packageName = "markdown-table";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.1.tgz";
+        sha512 = "CBbaYXKSGnE1uLRpKA1SWgIRb2PQrpkllNWpZtZe6VojOJ4ysqiq7/2glYcmKsOYN09QgH/HEBX5hIshAeiK6A==";
+      };
+    };
     "markdownlint-0.24.0" = {
       name = "markdownlint";
       packageName = "markdownlint";
@@ -40368,6 +40611,15 @@ let
         sha512 = "vTFXtmbbF3rgnTh3Zl3irso4LtvwUq/jaDvT2D1JqTGAwaipcS7RpTxzi6KjoRqI9n2yuAhzLDAC8xVTF3XYVQ==";
       };
     };
+    "mdast-comment-marker-2.1.0" = {
+      name = "mdast-comment-marker";
+      packageName = "mdast-comment-marker";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-2.1.0.tgz";
+        sha512 = "/+Cfm8A83PjkqjQDB9iYqHESGuXlriCWAwRGPJjkYmxXrF4r6saxeUlOKNrf+SogTwg9E8uyHRCFHLG6/BAAdA==";
+      };
+    };
     "mdast-util-compact-1.0.4" = {
       name = "mdast-util-compact";
       packageName = "mdast-util-compact";
@@ -40395,6 +40647,15 @@ let
         sha512 = "9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==";
       };
     };
+    "mdast-util-find-and-replace-2.1.0" = {
+      name = "mdast-util-find-and-replace";
+      packageName = "mdast-util-find-and-replace";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.1.0.tgz";
+        sha512 = "1w1jbqAd13oU78QPBf5223+xB+37ecNtQ1JElq2feWols5oEYAl+SgNDnOZipe7NfLemoEt362yUS15/wip4mw==";
+      };
+    };
     "mdast-util-footnote-0.1.7" = {
       name = "mdast-util-footnote";
       packageName = "mdast-util-footnote";
@@ -40431,6 +40692,15 @@ let
         sha512 = "FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==";
       };
     };
+    "mdast-util-frontmatter-1.0.0" = {
+      name = "mdast-util-frontmatter";
+      packageName = "mdast-util-frontmatter";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-1.0.0.tgz";
+        sha512 = "7itKvp0arEVNpCktOET/eLFAYaZ+0cNjVtFtIPxgQ5tV+3i+D4SDDTjTzPWl44LT59PC+xdx+glNTawBdF98Mw==";
+      };
+    };
     "mdast-util-gfm-0.1.2" = {
       name = "mdast-util-gfm";
       packageName = "mdast-util-gfm";
@@ -40440,6 +40710,15 @@ let
         sha512 = "NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==";
       };
     };
+    "mdast-util-gfm-2.0.0" = {
+      name = "mdast-util-gfm";
+      packageName = "mdast-util-gfm";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.0.tgz";
+        sha512 = "wMwejlTN3EQADPFuvxe8lmGsay3+f6gSJKdAHR6KBJzpcxvsjJSILB9K6u6G7eQLC7iOTyVIHYGui9uBc9r1Tg==";
+      };
+    };
     "mdast-util-gfm-autolink-literal-0.1.3" = {
       name = "mdast-util-gfm-autolink-literal";
       packageName = "mdast-util-gfm-autolink-literal";
@@ -40449,6 +40728,24 @@ let
         sha512 = "GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==";
       };
     };
+    "mdast-util-gfm-autolink-literal-1.0.2" = {
+      name = "mdast-util-gfm-autolink-literal";
+      packageName = "mdast-util-gfm-autolink-literal";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz";
+        sha512 = "FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==";
+      };
+    };
+    "mdast-util-gfm-footnote-1.0.0" = {
+      name = "mdast-util-gfm-footnote";
+      packageName = "mdast-util-gfm-footnote";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.0.tgz";
+        sha512 = "qeg9YoS2YYP6OBmMyUFxKXb6BLwAsbGidIxgwDAXHIMYZQhIwe52L9BSJs+zP29Jp5nSERPkmG3tSwAN23/ZbQ==";
+      };
+    };
     "mdast-util-gfm-strikethrough-0.2.3" = {
       name = "mdast-util-gfm-strikethrough";
       packageName = "mdast-util-gfm-strikethrough";
@@ -40458,6 +40755,15 @@ let
         sha512 = "5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==";
       };
     };
+    "mdast-util-gfm-strikethrough-1.0.0" = {
+      name = "mdast-util-gfm-strikethrough";
+      packageName = "mdast-util-gfm-strikethrough";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.0.tgz";
+        sha512 = "gM9ipBUdRxYa6Yq1Hd8Otg6jEn/dRxFZ1F9ZX4QHosHOexLGqNZO2dh0A+YFbUEd10RcKjnjb4jOfJJzoXXUew==";
+      };
+    };
     "mdast-util-gfm-table-0.1.6" = {
       name = "mdast-util-gfm-table";
       packageName = "mdast-util-gfm-table";
@@ -40467,6 +40773,15 @@ let
         sha512 = "j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==";
       };
     };
+    "mdast-util-gfm-table-1.0.1" = {
+      name = "mdast-util-gfm-table";
+      packageName = "mdast-util-gfm-table";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.1.tgz";
+        sha512 = "NByKuaSg5+M6r9DZBPXFUmhMHGFf9u+WE76EeStN01ghi8hpnydiWBXr+qj0XCRWI7SAMNtEjGvip6zci9axQA==";
+      };
+    };
     "mdast-util-gfm-task-list-item-0.1.6" = {
       name = "mdast-util-gfm-task-list-item";
       packageName = "mdast-util-gfm-task-list-item";
@@ -40476,6 +40791,15 @@ let
         sha512 = "/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==";
       };
     };
+    "mdast-util-gfm-task-list-item-1.0.0" = {
+      name = "mdast-util-gfm-task-list-item";
+      packageName = "mdast-util-gfm-task-list-item";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.0.tgz";
+        sha512 = "dwkzOTjQe8JCCHVE3Cb0pLHTYLudf7t9WCAnb20jI8/dW+VHjgWhjtIUVA3oigNkssgjEwX+i+3XesUdCnXGyA==";
+      };
+    };
     "mdast-util-heading-style-1.0.6" = {
       name = "mdast-util-heading-style";
       packageName = "mdast-util-heading-style";
@@ -40557,6 +40881,15 @@ let
         sha512 = "Y4ffygj85MTt70STKnEquw6k73jYWJBaYcb4ITAKgSNokZF7fH8rEHZ1GsRY/JaxqUevMaEnsDmkVv5Z9uVRdg==";
       };
     };
+    "mdast-util-to-nlcst-5.2.1" = {
+      name = "mdast-util-to-nlcst";
+      packageName = "mdast-util-to-nlcst";
+      version = "5.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-5.2.1.tgz";
+        sha512 = "Xznpj85MsJnLQjBboajOovT2fAAvbbbmYutpFgzLi9pjZEOkgGzjq+t6fHcge8uzZ5uEkj5pigzw2QrnIVq/kw==";
+      };
+    };
     "mdast-util-to-string-1.1.0" = {
       name = "mdast-util-to-string";
       packageName = "mdast-util-to-string";
@@ -41178,6 +41511,15 @@ let
         sha512 = "q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==";
       };
     };
+    "micromark-extension-frontmatter-1.0.0" = {
+      name = "micromark-extension-frontmatter";
+      packageName = "micromark-extension-frontmatter";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.0.0.tgz";
+        sha512 = "EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg==";
+      };
+    };
     "micromark-extension-gfm-0.3.3" = {
       name = "micromark-extension-gfm";
       packageName = "micromark-extension-gfm";
@@ -41187,6 +41529,15 @@ let
         sha512 = "oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==";
       };
     };
+    "micromark-extension-gfm-2.0.0" = {
+      name = "micromark-extension-gfm";
+      packageName = "micromark-extension-gfm";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.0.tgz";
+        sha512 = "yYPlZ48Ss8fRFSmlQP/QXt3/M6tEvawEVFO+jDPnFA3mGeVgzIyaeHgrIV/9AMFAjQhctKA47Bk8xBhcuaL74Q==";
+      };
+    };
     "micromark-extension-gfm-autolink-literal-0.5.7" = {
       name = "micromark-extension-gfm-autolink-literal";
       packageName = "micromark-extension-gfm-autolink-literal";
@@ -41196,6 +41547,24 @@ let
         sha512 = "ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==";
       };
     };
+    "micromark-extension-gfm-autolink-literal-1.0.2" = {
+      name = "micromark-extension-gfm-autolink-literal";
+      packageName = "micromark-extension-gfm-autolink-literal";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.2.tgz";
+        sha512 = "z2Asd0v4iV/QoI1l23J1qB6G8IqVWTKmwdlP45YQfdGW47ZzpddyzSxZ78YmlucOLqIbS5H98ekKf9GunFfnLA==";
+      };
+    };
+    "micromark-extension-gfm-footnote-1.0.2" = {
+      name = "micromark-extension-gfm-footnote";
+      packageName = "micromark-extension-gfm-footnote";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.2.tgz";
+        sha512 = "C6o+B7w1wDM4JjDJeHCTszFYF1q46imElNY6mfXsBfw4E91M9TvEEEt3sy0FbJmGVzdt1pqFVRYWT9ZZ0FjFuA==";
+      };
+    };
     "micromark-extension-gfm-strikethrough-0.6.5" = {
       name = "micromark-extension-gfm-strikethrough";
       packageName = "micromark-extension-gfm-strikethrough";
@@ -41205,6 +41574,15 @@ let
         sha512 = "PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==";
       };
     };
+    "micromark-extension-gfm-strikethrough-1.0.3" = {
+      name = "micromark-extension-gfm-strikethrough";
+      packageName = "micromark-extension-gfm-strikethrough";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.3.tgz";
+        sha512 = "PJKhBNyrNIo694ZQCE/FBBQOQSb6YC0Wi5Sv0OCah5XunnNaYbtak9CSv9/eq4YeFMMyd1jX84IRwUSE+7ioLA==";
+      };
+    };
     "micromark-extension-gfm-table-0.4.3" = {
       name = "micromark-extension-gfm-table";
       packageName = "micromark-extension-gfm-table";
@@ -41214,6 +41592,15 @@ let
         sha512 = "hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==";
       };
     };
+    "micromark-extension-gfm-table-1.0.3" = {
+      name = "micromark-extension-gfm-table";
+      packageName = "micromark-extension-gfm-table";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.3.tgz";
+        sha512 = "JIfE1DGi64zzOx39/pGg6cZbiaUAF/MXbBLZnVl4aFz6Mja7GYMZjksfTGm9NzbgZkiZvbD77NLPuwGIRcFMjg==";
+      };
+    };
     "micromark-extension-gfm-tagfilter-0.3.0" = {
       name = "micromark-extension-gfm-tagfilter";
       packageName = "micromark-extension-gfm-tagfilter";
@@ -41223,6 +41610,15 @@ let
         sha512 = "9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==";
       };
     };
+    "micromark-extension-gfm-tagfilter-1.0.0" = {
+      name = "micromark-extension-gfm-tagfilter";
+      packageName = "micromark-extension-gfm-tagfilter";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.0.tgz";
+        sha512 = "GGUZhzQrOdHR8RHU2ru6K+4LMlj+pBdNuXRtw5prOflDOk2hHqDB0xEgej1AHJ2VETeycX7tzQh2EmaTUOmSKg==";
+      };
+    };
     "micromark-extension-gfm-task-list-item-0.3.3" = {
       name = "micromark-extension-gfm-task-list-item";
       packageName = "micromark-extension-gfm-task-list-item";
@@ -41232,6 +41628,15 @@ let
         sha512 = "0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==";
       };
     };
+    "micromark-extension-gfm-task-list-item-1.0.2" = {
+      name = "micromark-extension-gfm-task-list-item";
+      packageName = "micromark-extension-gfm-task-list-item";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.2.tgz";
+        sha512 = "8AZib9xxPtppTKig/d00i9uKi96kVgoqin7+TRtGprDb8uTUrN1ZfJ38ga8yUdmu7EDQxr2xH8ltZdbCcmdshg==";
+      };
+    };
     "micromark-extension-mdx-expression-1.0.2" = {
       name = "micromark-extension-mdx-expression";
       packageName = "micromark-extension-mdx-expression";
@@ -43564,6 +43969,15 @@ let
         sha512 = "R+1OJEmRl3ZOp9d8PbiRxGpnvmpi3jU+lzSqCJoLeogdEh0FYDRH1aC223qUbaKffxNTJkEfeDOeQfziw749yA==";
       };
     };
+    "nlcst-is-literal-2.1.0" = {
+      name = "nlcst-is-literal";
+      packageName = "nlcst-is-literal";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nlcst-is-literal/-/nlcst-is-literal-2.1.0.tgz";
+        sha512 = "jaEIXvIreWx4lfkRa+B3toTTxQgDxnECncbEQVSUVfRWxamQFbRHgxyfrt0aMnuoq5AMd3CQHl5SHGGruOUOdQ==";
+      };
+    };
     "nlcst-normalize-2.1.5" = {
       name = "nlcst-normalize";
       packageName = "nlcst-normalize";
@@ -43573,6 +43987,15 @@ let
         sha512 = "xSqTKv8IHIy3n/orD7wj81BZljLfbrTot0Pv64MYUnQUXfDbi1xDSpJR4qEmbFWyFoHsmivcOdgrK+o7ky3mcw==";
       };
     };
+    "nlcst-normalize-3.1.0" = {
+      name = "nlcst-normalize";
+      packageName = "nlcst-normalize";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nlcst-normalize/-/nlcst-normalize-3.1.0.tgz";
+        sha512 = "kRWfUwtffmU26wPAJ25St5rec29PhV8F6dKaa7PxGhH3uytsGakfLyOEEm1mULzWOdfyDb03aE+OKp7h0OJuhA==";
+      };
+    };
     "nlcst-search-2.0.0" = {
       name = "nlcst-search";
       packageName = "nlcst-search";
@@ -43582,6 +44005,15 @@ let
         sha512 = "+3xdctMFTcG+76vKAa0wObNg1EYq7IIQlZcL+HxSFXkHO1DgSPRjsPJrmelVIvMg7rk+wmBcdPEoScv/CTT1Zw==";
       };
     };
+    "nlcst-search-3.1.0" = {
+      name = "nlcst-search";
+      packageName = "nlcst-search";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nlcst-search/-/nlcst-search-3.1.0.tgz";
+        sha512 = "d+0fXxF0d5oFAeeyuoGbIYcbiixE9Xt/lsmt491jjPyabXRoIRBE0++U+G8kbDyJFRk1bMQnGFpMCzeoMlDYfQ==";
+      };
+    };
     "nlcst-to-string-2.0.4" = {
       name = "nlcst-to-string";
       packageName = "nlcst-to-string";
@@ -43591,6 +44023,15 @@ let
         sha512 = "3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==";
       };
     };
+    "nlcst-to-string-3.1.0" = {
+      name = "nlcst-to-string";
+      packageName = "nlcst-to-string";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-3.1.0.tgz";
+        sha512 = "Y8HQWKw/zrHTCnu2zcFBN1dV6vN0NUG7s5fkEj380G8tF3R+vA2KG+tDl2QoHVQCTHGHVXwoni2RQkDSFQb1PA==";
+      };
+    };
     "no-case-2.3.2" = {
       name = "no-case";
       packageName = "no-case";
@@ -47013,6 +47454,15 @@ let
         sha512 = "jw5N6wZUZViIw3VLG/FUSeL3vDhfw5Q2g4E3nYC69Mm5ANbh9ZWd+eligQbeUoyObZM8neynTn3l14e09pjEWg==";
       };
     };
+    "parse-english-5.0.0" = {
+      name = "parse-english";
+      packageName = "parse-english";
+      version = "5.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parse-english/-/parse-english-5.0.0.tgz";
+        sha512 = "sMe/JmsY6g21aJCAm8KgCH90a9zCZ7aGSriSJ5B0CcGEsDN7YmiCk3+1iKPE1heDG6zYY4Xf++V8llWtCvNBSQ==";
+      };
+    };
     "parse-entities-1.2.2" = {
       name = "parse-entities";
       packageName = "parse-entities";
@@ -47148,6 +47598,15 @@ let
         sha512 = "TYKL+K98dcAWoCw/Ac1yrPviU8Trk+/gmjQVaoWEFDZmVD4KRg6c/80xKqNNFQObo2mTONgF8trzAf2UTwKafw==";
       };
     };
+    "parse-latin-5.0.0" = {
+      name = "parse-latin";
+      packageName = "parse-latin";
+      version = "5.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parse-latin/-/parse-latin-5.0.0.tgz";
+        sha512 = "Ht+4/+AUySMS5HKGAiQpBmkFsHSoGrj6Y83flLCa5OIBdtsVkO3UD4OtboJ0O0vZiOznH02x8qlwg9KLUVXuNg==";
+      };
+    };
     "parse-ms-2.1.0" = {
       name = "parse-ms";
       packageName = "parse-ms";
@@ -50398,6 +50857,15 @@ let
         sha512 = "YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==";
       };
     };
+    "property-information-6.1.0" = {
+      name = "property-information";
+      packageName = "property-information";
+      version = "6.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/property-information/-/property-information-6.1.0.tgz";
+        sha512 = "aTSKXRnBlDpqo6cHVuZ88oaW1XGjABV10cV8RhK7AwBRjX+/D/LqspUF9f+TFSprZwXAsdJhx3KaJCdj8xZygw==";
+      };
+    };
     "proto-list-1.2.4" = {
       name = "proto-list";
       packageName = "proto-list";
@@ -51964,6 +52432,15 @@ let
         sha512 = "45gUgmX/RtQOQV1kwM06boP49OYXcKCPrYwdmAvs5YqkpiobhNKKwo524JM6Ma0ko3oN9tXNcWs9+ABq3Ry7YA==";
       };
     };
+    "quotation-2.0.2" = {
+      name = "quotation";
+      packageName = "quotation";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/quotation/-/quotation-2.0.2.tgz";
+        sha512 = "FeUlLe40ROXHVWLZkzmeR2PNYWdkvTXEXhW6FX8axRv1ODt8Gxed3APrE1Qb5i1n70ZzZGRmvs0jY3v/BRcJQQ==";
+      };
+    };
     "quote-stream-1.0.2" = {
       name = "quote-stream";
       packageName = "quote-stream";
@@ -53494,6 +53971,15 @@ let
         sha512 = "fOiR9a9xH+Le19i4fGzIEowAbwG7idy2Jzs4mOrFWBSJ0sNUgy0ev871dwWnbOo371SjgjG4pwzrbgSVrKxecw==";
       };
     };
+    "rehype-parse-8.0.3" = {
+      name = "rehype-parse";
+      packageName = "rehype-parse";
+      version = "8.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rehype-parse/-/rehype-parse-8.0.3.tgz";
+        sha512 = "RGw0CVt+0S6KdvpE8bbP2Db9WXclQcIX7A0ufM3QFqAhTo/ddJMQrrI2j3cijlRPZlGK8R3pRgC8U5HyV76IDw==";
+      };
+    };
     "rehype-retext-2.0.4" = {
       name = "rehype-retext";
       packageName = "rehype-retext";
@@ -53503,6 +53989,15 @@ let
         sha512 = "OnGX5RE8WyEs/Snz+Bs8DM9uGdrNUXMhCC7CW3S1cIZVOC90VdewdE+71kpG6LOzS0xwgZyItwrhjGv+oQgwkQ==";
       };
     };
+    "rehype-retext-3.0.1" = {
+      name = "rehype-retext";
+      packageName = "rehype-retext";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rehype-retext/-/rehype-retext-3.0.1.tgz";
+        sha512 = "ICGZwAkBQhOpKyHBUdiONhvIjd8Pliym6vJ25SCjKeua3UdWANNL9HqgNHToewwQhh8nmbGUZ4j4Cu0RihoBHQ==";
+      };
+    };
     "rehype-sort-attribute-values-2.0.1" = {
       name = "rehype-sort-attribute-values";
       packageName = "rehype-sort-attribute-values";
@@ -53620,6 +54115,15 @@ let
         sha512 = "mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==";
       };
     };
+    "remark-frontmatter-4.0.1" = {
+      name = "remark-frontmatter";
+      packageName = "remark-frontmatter";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-4.0.1.tgz";
+        sha512 = "38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==";
+      };
+    };
     "remark-gfm-1.0.0" = {
       name = "remark-gfm";
       packageName = "remark-gfm";
@@ -53629,6 +54133,15 @@ let
         sha512 = "KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==";
       };
     };
+    "remark-gfm-3.0.1" = {
+      name = "remark-gfm";
+      packageName = "remark-gfm";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz";
+        sha512 = "lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==";
+      };
+    };
     "remark-html-2.0.2" = {
       name = "remark-html";
       packageName = "remark-html";
@@ -54466,6 +54979,24 @@ let
         sha512 = "k9bt7BYc3G7YBdmeAhvd3VavrPa/XlKWR3CyHjr4sLO9xJyly8WHHT3Sp+8HPR8lEUv+/sZaffL7IjMLV0f6BA==";
       };
     };
+    "remark-message-control-7.1.1" = {
+      name = "remark-message-control";
+      packageName = "remark-message-control";
+      version = "7.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/remark-message-control/-/remark-message-control-7.1.1.tgz";
+        sha512 = "xKRWl1NTBOKed0oEtCd8BUfH5m4s8WXxFFSoo7uUwx6GW/qdCy4zov5LfPyw7emantDmhfWn5PdIZgcbVcWMDQ==";
+      };
+    };
+    "remark-parse-10.0.0" = {
+      name = "remark-parse";
+      packageName = "remark-parse";
+      version = "10.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.0.tgz";
+        sha512 = "07ei47p2Xl7Bqbn9H2VYQYirnAFJPwdMuypdozWsSbnmrkgA2e2sZLZdnDNrrsxR4onmIzH/J6KXqKxCuqHtPQ==";
+      };
+    };
     "remark-parse-4.0.0" = {
       name = "remark-parse";
       packageName = "remark-parse";
@@ -54538,6 +55069,15 @@ let
         sha512 = "cYCchalpf25bTtfXF24ribYvqytPKq0TiEhqQDBHvVEEsApebwruPWP1cTcvTFBidmpXyqzycm+y8ng7Kmvc8Q==";
       };
     };
+    "remark-retext-5.0.1" = {
+      name = "remark-retext";
+      packageName = "remark-retext";
+      version = "5.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/remark-retext/-/remark-retext-5.0.1.tgz";
+        sha512 = "h3kOjKNy7oJfohqXlKp+W4YDigHD3rw01x91qvQP/cUkK5nJrDl6yEYwTujQCAXSLZrsBxywlK3ntzIX6c29aA==";
+      };
+    };
     "remark-stringify-4.0.0" = {
       name = "remark-stringify";
       packageName = "remark-stringify";
@@ -55276,6 +55816,15 @@ let
         sha512 = "yr1PgaBDde+25aJXrnt3p1jvT8FVLVat2Bx8XeAWX13KXo8OT+3nWGU3HWxM4YFJvmfqvJYJZG2d7xxaO774gw==";
       };
     };
+    "retext-english-4.1.0" = {
+      name = "retext-english";
+      packageName = "retext-english";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/retext-english/-/retext-english-4.1.0.tgz";
+        sha512 = "Pky2idjvgkzfodO0GH9X4IU8LX/d4ULTnLf7S1WsBRlSCh/JdTFPafXZstJqZehtQWNHrgoCqVOiGugsNFYvIQ==";
+      };
+    };
     "retext-equality-5.5.0" = {
       name = "retext-equality";
       packageName = "retext-equality";
@@ -55285,6 +55834,15 @@ let
         sha512 = "ha7zrQ+Bq4xWifm21IcAzc9xhMWCJYfePUjRRNE2mXi8cFhaq1F8+cD78YA2nd6W2mxd11VGTVKY9O0DmzEywQ==";
       };
     };
+    "retext-equality-6.3.0" = {
+      name = "retext-equality";
+      packageName = "retext-equality";
+      version = "6.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/retext-equality/-/retext-equality-6.3.0.tgz";
+        sha512 = "HmwH06qUlmCNQZZBY7Kkljbqc9isGTVwpm5WedpkfklB2dy+suyUUF1X0Zn3VbcaUlh7DfYrzpaJAtvOkML/eA==";
+      };
+    };
     "retext-latin-2.0.4" = {
       name = "retext-latin";
       packageName = "retext-latin";
@@ -55303,6 +55861,15 @@ let
         sha512 = "40Ym0WOgy7rRY4tR2iL01g3Y5Ql+9NBV21hycIhNX3uv+6vjaWB30NWN+tTcxNIWBJEwXHoTDMiVdAMm6ZpHVA==";
       };
     };
+    "retext-profanities-7.1.0" = {
+      name = "retext-profanities";
+      packageName = "retext-profanities";
+      version = "7.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/retext-profanities/-/retext-profanities-7.1.0.tgz";
+        sha512 = "TeqYTbm3n8YLeswe+OVEB/s7TjJEvWMNzoypoXRSRY4mcEMdnBv2uRbkYBBv2+UWTJ3uXD2y94oEu9syeD1NQQ==";
+      };
+    };
     "retext-spell-2.4.1" = {
       name = "retext-spell";
       packageName = "retext-spell";
@@ -58444,6 +59011,15 @@ let
         sha512 = "q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==";
       };
     };
+    "space-separated-tokens-2.0.1" = {
+      name = "space-separated-tokens";
+      packageName = "space-separated-tokens";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz";
+        sha512 = "ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==";
+      };
+    };
     "spago-0.20.3" = {
       name = "spago";
       packageName = "spago";
@@ -59272,13 +59848,13 @@ let
         sha512 = "zZ/Q1M+9ZWlrchgh4QauD/MEUFa6eC6H6FYq6T8Of/y82JqsQBLwN6YlzbO09evE7Rx6x0oliXDCnQSjwGwQRA==";
       };
     };
-    "sscaff-1.2.124" = {
+    "sscaff-1.2.125" = {
       name = "sscaff";
       packageName = "sscaff";
-      version = "1.2.124";
+      version = "1.2.125";
       src = fetchurl {
-        url = "https://registry.npmjs.org/sscaff/-/sscaff-1.2.124.tgz";
-        sha512 = "9w+/QdBri6GlYngG+KiQvr9yPthYlGrimxPc/eTJVDgnm630/2Ip9dTbuhKRD0HsgObUvZX4nHpXJ+fybOhkIA==";
+        url = "https://registry.npmjs.org/sscaff/-/sscaff-1.2.125.tgz";
+        sha512 = "RSlu5c9aD7+PvFVprE/NEqNs94gRqO5vXlzpXLfY6P8G9q65cXuEmjZUTT8x4D2ee93ILfrk/SKDfjGnCjazTw==";
       };
     };
     "ssh-config-1.1.6" = {
@@ -60982,6 +61558,15 @@ let
         sha512 = "MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==";
       };
     };
+    "supports-color-9.0.2" = {
+      name = "supports-color";
+      packageName = "supports-color";
+      version = "9.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-color/-/supports-color-9.0.2.tgz";
+        sha512 = "ii6tc8ImGFrgMPYq7RVAMKkhPo9vk8uA+D3oKbJq/3Pk2YSMv1+9dUAesa9UxMbxBTvxwKTQffBahNVNxEvM8Q==";
+      };
+    };
     "supports-hyperlinks-1.0.1" = {
       name = "supports-hyperlinks";
       packageName = "supports-hyperlinks";
@@ -61315,13 +61900,13 @@ let
         sha512 = "33+lQwlLxXoxy0o9WLOgw8OjbXeS3Jv+pSl+nxKc2AOClBI28HsdRPpH0u9Xa9OVjHLT9vonnOMw1ug7YXI0dA==";
       };
     };
-    "systeminformation-5.9.10" = {
+    "systeminformation-5.9.11" = {
       name = "systeminformation";
       packageName = "systeminformation";
-      version = "5.9.10";
+      version = "5.9.11";
       src = fetchurl {
-        url = "https://registry.npmjs.org/systeminformation/-/systeminformation-5.9.10.tgz";
-        sha512 = "xTHXxuK3pZv7k744+xH86Y08xvmsoEn9/D+QkIZD7k8k4hMvq3LfFy8wnpWwy+W/c0og1BwlrOrcwVvSAPju0Q==";
+        url = "https://registry.npmjs.org/systeminformation/-/systeminformation-5.9.11.tgz";
+        sha512 = "lvNC6ZpIyVJAlYeug/QH0N6L59iX1/YqxdXjNbemGlhI43FSd4fHFr+DyIlpKjSlzawR/1W3YwrTYuUNai1N5A==";
       };
     };
     "sywac-1.3.0" = {
@@ -62738,6 +63323,15 @@ let
         sha512 = "BxX8EkCxOAZe+D/ToHdDsJcVI4HqQfmw0tCkp31zf3dNP/XWIAjU4CmeuSwsSoOzOTqHPOL0KUzyZqJplkD0Qw==";
       };
     };
+    "to-vfile-7.2.2" = {
+      name = "to-vfile";
+      packageName = "to-vfile";
+      version = "7.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/to-vfile/-/to-vfile-7.2.2.tgz";
+        sha512 = "7WL+coet3qyaYb5vrVrfLtOUHgNv9E1D5SIsyVKmHKcgZefy77WMQRk7FByqGKNInoHOlY6xkTGymo29AwjUKg==";
+      };
+    };
     "toidentifier-1.0.0" = {
       name = "toidentifier";
       packageName = "toidentifier";
@@ -63206,6 +63800,15 @@ let
         sha512 = "rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==";
       };
     };
+    "trough-2.0.2" = {
+      name = "trough";
+      packageName = "trough";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/trough/-/trough-2.0.2.tgz";
+        sha512 = "FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w==";
+      };
+    };
     "truncate-2.1.0" = {
       name = "truncate";
       packageName = "truncate";
@@ -64412,6 +65015,15 @@ let
         sha512 = "Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==";
       };
     };
+    "unherit-3.0.0" = {
+      name = "unherit";
+      packageName = "unherit";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unherit/-/unherit-3.0.0.tgz";
+        sha512 = "UmvIQZGEc9qdLIQ8mv8/61n6PiMgfbOoASPKHpCvII5srShCQSa6jSjBjlZOR4bxt2XnT6uo6csmPKRi+zQ0Jg==";
+      };
+    };
     "uni-global-1.0.0" = {
       name = "uni-global";
       packageName = "uni-global";
@@ -64484,6 +65096,15 @@ let
         sha1 = "afb10e4ef1eeddc711417bbb652bc885da9d4171";
       };
     };
+    "unified-10.1.0" = {
+      name = "unified";
+      packageName = "unified";
+      version = "10.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unified/-/unified-10.1.0.tgz";
+        sha512 = "4U3ru/BRXYYhKbwXV6lU6bufLikoAavTwev89H5UxY8enDFaAT2VXmIXYNm6hb5oHPng/EXr77PVyDFcptbk5g==";
+      };
+    };
     "unified-2.1.4" = {
       name = "unified";
       packageName = "unified";
@@ -64538,6 +65159,15 @@ let
         sha512 = "d29qhcADmrvjgSYDLDUmmE/zvVyKUW+O3gRz6Bjj7fcv8kGBlrYBmMjnuBI+wuTou/PXaVl3hPeSh9mXZ0iGSA==";
       };
     };
+    "unified-diff-4.0.1" = {
+      name = "unified-diff";
+      packageName = "unified-diff";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unified-diff/-/unified-diff-4.0.1.tgz";
+        sha512 = "qiI0GaHi/50NVrChnmZOBeB0aNhHRMG6VnjKEAikaQD/I3gxjTsDp8gycCOUxyVCJrV/Rv3y6zEWMZczO+o3Lw==";
+      };
+    };
     "unified-engine-6.0.1" = {
       name = "unified-engine";
       packageName = "unified-engine";
@@ -64556,6 +65186,15 @@ let
         sha512 = "ZlMm62ejrf+tJHdyOjQfljszngQjRor95q2XZMGk6rpJUYi7ZIHY/EXEhOcj9PZkMKKdLIM+dqL4s0ceyk9wbA==";
       };
     };
+    "unified-engine-9.0.4" = {
+      name = "unified-engine";
+      packageName = "unified-engine";
+      version = "9.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unified-engine/-/unified-engine-9.0.4.tgz";
+        sha512 = "NFI+jC3DWZ23eBsWkOW2havz47DPG/DSyJEvBH+qA5cQHF6zlgiJYev7ksb/naOypZZ+cfhaCxCRo2BqrysYEw==";
+      };
+    };
     "unified-lint-rule-1.0.6" = {
       name = "unified-lint-rule";
       packageName = "unified-lint-rule";
@@ -64583,6 +65222,15 @@ let
         sha512 = "oY5z2n8ugjpNHXOmcgrw0pQeJzavHS0VjPBP21tOcm7rc2C+5Q+kW9j5+gqtf8vfW/8sabbsK5+P+9QPwwEHDA==";
       };
     };
+    "unified-message-control-4.0.0" = {
+      name = "unified-message-control";
+      packageName = "unified-message-control";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unified-message-control/-/unified-message-control-4.0.0.tgz";
+        sha512 = "1b92N+VkPHftOsvXNOtkJm4wHlr+UDmTBF2dUzepn40oy9NxanJ9xS1RwUBTjXJwqr2K0kMbEyv1Krdsho7+Iw==";
+      };
+    };
     "union-0.5.0" = {
       name = "union";
       packageName = "union";
@@ -64754,6 +65402,15 @@ let
         sha512 = "fPNWewS593JSmg49HbnE86BJKuBi1/nMWhDSccBvbARfxezEuJV85EaARR9/VplveiwCoLm2kWq+DhP8TBaDpw==";
       };
     };
+    "unist-util-inspect-7.0.0" = {
+      name = "unist-util-inspect";
+      packageName = "unist-util-inspect";
+      version = "7.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-7.0.0.tgz";
+        sha512 = "2Utgv78I7PUu461Y9cdo+IUiiKSKpDV5CE/XD6vTj849a3xlpDAScvSJ6cQmtFBGgAmCn2wR7jLuXhpg1XLlJw==";
+      };
+    };
     "unist-util-is-2.1.3" = {
       name = "unist-util-is";
       packageName = "unist-util-is";
@@ -64826,6 +65483,15 @@ let
         sha512 = "w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==";
       };
     };
+    "unist-util-position-4.0.1" = {
+      name = "unist-util-position";
+      packageName = "unist-util-position";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.1.tgz";
+        sha512 = "mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA==";
+      };
+    };
     "unist-util-position-from-estree-1.1.1" = {
       name = "unist-util-position-from-estree";
       packageName = "unist-util-position-from-estree";
@@ -64925,6 +65591,15 @@ let
         sha512 = "iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==";
       };
     };
+    "unist-util-visit-3.1.0" = {
+      name = "unist-util-visit";
+      packageName = "unist-util-visit";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz";
+        sha512 = "Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==";
+      };
+    };
     "unist-util-visit-4.1.0" = {
       name = "unist-util-visit";
       packageName = "unist-util-visit";
@@ -64961,6 +65636,15 @@ let
         sha512 = "1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==";
       };
     };
+    "unist-util-visit-parents-4.1.1" = {
+      name = "unist-util-visit-parents";
+      packageName = "unist-util-visit-parents";
+      version = "4.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz";
+        sha512 = "1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==";
+      };
+    };
     "unist-util-visit-parents-5.1.0" = {
       name = "unist-util-visit-parents";
       packageName = "unist-util-visit-parents";
@@ -66591,6 +67275,15 @@ let
         sha512 = "O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==";
       };
     };
+    "vfile-5.2.0" = {
+      name = "vfile";
+      packageName = "vfile";
+      version = "5.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vfile/-/vfile-5.2.0.tgz";
+        sha512 = "ftCpb6pU8Jrzcqku8zE6N3Gi4/RkDhRwEXSWudzZzA2eEOn/cBpsfk9aulCUR+j1raRSAykYQap9u6j6rhUaCA==";
+      };
+    };
     "vfile-find-down-1.0.0" = {
       name = "vfile-find-down";
       packageName = "vfile-find-down";
@@ -66618,6 +67311,15 @@ let
         sha512 = "YWx8fhWQNYpHxFkR5fDO4lCdvPcY4jfCG7qUMHVvSp14vRfkEYxFG/vUEV0eJuXoKFfiAmMkAS8dekOYnpAJ+A==";
       };
     };
+    "vfile-find-up-6.0.0" = {
+      name = "vfile-find-up";
+      packageName = "vfile-find-up";
+      version = "6.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vfile-find-up/-/vfile-find-up-6.0.0.tgz";
+        sha512 = "TPE1tYyHrYxewHxi42F8yP45rY5fK78jiPg9WP1xH5TfAbdncxja5NquZyYSSzG1aHpK98AvUOVJrEOoTonW6w==";
+      };
+    };
     "vfile-location-2.0.6" = {
       name = "vfile-location";
       packageName = "vfile-location";
@@ -66636,6 +67338,15 @@ let
         sha512 = "aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==";
       };
     };
+    "vfile-location-4.0.1" = {
+      name = "vfile-location";
+      packageName = "vfile-location";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz";
+        sha512 = "JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==";
+      };
+    };
     "vfile-message-1.1.1" = {
       name = "vfile-message";
       packageName = "vfile-message";
@@ -66690,6 +67401,15 @@ let
         sha512 = "GN2bH2gs4eLnw/4jPSgfBjo+XCuvnX9elHICJZjVD4+NM0nsUrMTvdjGY5Sc/XG69XVTgLwj7hknQVc6M9FukA==";
       };
     };
+    "vfile-reporter-7.0.2" = {
+      name = "vfile-reporter";
+      packageName = "vfile-reporter";
+      version = "7.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-7.0.2.tgz";
+        sha512 = "1bYxpyhl8vhAICiKR59vYyZHIOWsF7P1nV6xjaz3ZWAyOQDQhR4DjlOZo14+PiV9oLEWIrolvGHs0/2Bnaw5Vw==";
+      };
+    };
     "vfile-reporter-pretty-5.0.0" = {
       name = "vfile-reporter-pretty";
       packageName = "vfile-reporter-pretty";
@@ -66717,6 +67437,15 @@ let
         sha512 = "tAyUqD2R1l/7Rn7ixdGkhXLD3zsg+XLAeUDUhXearjfIcpL1Hcsj5hHpCoy/gvfK/Ws61+e972fm0F7up7hfYA==";
       };
     };
+    "vfile-sort-3.0.0" = {
+      name = "vfile-sort";
+      packageName = "vfile-sort";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vfile-sort/-/vfile-sort-3.0.0.tgz";
+        sha512 = "fJNctnuMi3l4ikTVcKpxTbzHeCgvDhnI44amA3NVDvA6rTC6oKCFpCVyT5n2fFMr3ebfr+WVQZedOCd73rzSxg==";
+      };
+    };
     "vfile-statistics-1.1.4" = {
       name = "vfile-statistics";
       packageName = "vfile-statistics";
@@ -66726,6 +67455,15 @@ let
         sha512 = "lXhElVO0Rq3frgPvFBwahmed3X03vjPF8OcjKMy8+F1xU/3Q3QU3tKEDp743SFtb74PdF0UWpxPvtOP0GCLheA==";
       };
     };
+    "vfile-statistics-2.0.0" = {
+      name = "vfile-statistics";
+      packageName = "vfile-statistics";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-2.0.0.tgz";
+        sha512 = "foOWtcnJhKN9M2+20AOTlWi2dxNfAoeNIoxD5GXcO182UJyId4QrXa41fWrgcfV3FWTjdEDy3I4cpLVcQscIMA==";
+      };
+    };
     "vfile-to-eslint-2.0.2" = {
       name = "vfile-to-eslint";
       packageName = "vfile-to-eslint";
@@ -67032,6 +67770,15 @@ let
         sha512 = "QW2SFk4kln5lTPQajGNuXWtmr2z9hVA6Sfi4qPFEW2vjt2XaUAp38/1OrcUQYiJXOyXntbWN2jZJaGxg+hDUxw==";
       };
     };
+    "vscode-json-languageservice-4.1.10" = {
+      name = "vscode-json-languageservice";
+      packageName = "vscode-json-languageservice";
+      version = "4.1.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.10.tgz";
+        sha512 = "IHliMEEYSY0tJjJt0ECb8ESx/nRXpoy9kN42WVQXgaqGyizFAf3jibSiezDQTrrY7f3kywXggCU+kkJEM+OLZQ==";
+      };
+    };
     "vscode-json-languageservice-4.1.9" = {
       name = "vscode-json-languageservice";
       packageName = "vscode-json-languageservice";
@@ -67797,6 +68544,15 @@ let
         sha512 = "wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==";
       };
     };
+    "web-namespaces-2.0.1" = {
+      name = "web-namespaces";
+      packageName = "web-namespaces";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz";
+        sha512 = "bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==";
+      };
+    };
     "web-push-3.4.4" = {
       name = "web-push";
       packageName = "web-push";
@@ -72880,7 +73636,7 @@ in
       sources."buffer-5.7.1"
       sources."buffer-from-1.1.2"
       sources."callsites-3.1.0"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       sources."chalk-3.0.0"
       sources."chardet-0.7.0"
       sources."chokidar-3.5.2"
@@ -73514,7 +74270,7 @@ in
       sources."call-bind-1.0.2"
       sources."call-me-maybe-1.0.1"
       sources."camelcase-5.3.1"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       sources."caseless-0.12.0"
       sources."caw-2.0.1"
       sources."chalk-2.4.2"
@@ -74609,6 +75365,489 @@ in
     bypassCache = true;
     reconstructLock = true;
   };
+  alex = nodeEnv.buildNodePackage {
+    name = "alex";
+    packageName = "alex";
+    version = "10.0.0";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/alex/-/alex-10.0.0.tgz";
+      sha512 = "yTKA5M514WOTpZZkK6pusBbtvVbNTavKS3nI4Z9ceH7RdNGII9S8p8mrcA38S8T0QGxp+EK3l/61XLBj0LTdhQ==";
+    };
+    dependencies = [
+      sources."@babel/code-frame-7.16.0"
+      sources."@babel/helper-validator-identifier-7.15.7"
+      sources."@babel/highlight-7.16.0"
+      sources."@sindresorhus/is-0.14.0"
+      sources."@szmarczak/http-timer-1.1.2"
+      sources."@types/acorn-4.0.6"
+      sources."@types/concat-stream-1.6.1"
+      sources."@types/debug-4.1.7"
+      sources."@types/estree-0.0.50"
+      sources."@types/estree-jsx-0.0.1"
+      sources."@types/hast-2.3.4"
+      sources."@types/is-empty-1.2.1"
+      sources."@types/js-yaml-4.0.4"
+      sources."@types/mdast-3.0.10"
+      sources."@types/minimist-1.2.2"
+      sources."@types/ms-0.7.31"
+      sources."@types/nlcst-1.0.0"
+      sources."@types/node-16.11.7"
+      sources."@types/normalize-package-data-2.4.1"
+      sources."@types/parse5-6.0.2"
+      sources."@types/supports-color-8.1.1"
+      sources."@types/unist-2.0.6"
+      sources."acorn-8.5.0"
+      sources."acorn-jsx-5.3.2"
+      sources."ansi-align-3.0.1"
+      sources."ansi-regex-5.0.1"
+      sources."ansi-styles-3.2.1"
+      sources."argparse-2.0.1"
+      sources."array-iterate-1.1.4"
+      sources."arrify-1.0.1"
+      sources."bail-2.0.2"
+      sources."balanced-match-1.0.2"
+      (sources."boxen-5.1.2" // {
+        dependencies = [
+          sources."ansi-styles-4.3.0"
+          sources."chalk-4.1.2"
+          sources."color-convert-2.0.1"
+          sources."color-name-1.1.4"
+          sources."has-flag-4.0.0"
+          sources."supports-color-7.2.0"
+          sources."type-fest-0.20.2"
+        ];
+      })
+      sources."brace-expansion-1.1.11"
+      sources."bubble-stream-error-1.0.0"
+      sources."buffer-from-1.1.2"
+      sources."builtins-4.0.0"
+      (sources."cacheable-request-6.1.0" // {
+        dependencies = [
+          sources."get-stream-5.2.0"
+          sources."lowercase-keys-2.0.0"
+          sources."pump-3.0.0"
+        ];
+      })
+      sources."camelcase-6.2.0"
+      sources."camelcase-keys-7.0.1"
+      sources."ccount-2.0.1"
+      sources."chalk-2.4.2"
+      sources."character-entities-2.0.1"
+      sources."character-entities-html4-2.1.0"
+      sources."character-entities-legacy-3.0.0"
+      sources."character-reference-invalid-2.0.1"
+      sources."ci-info-2.0.0"
+      sources."cli-boxes-2.2.1"
+      sources."clone-response-1.0.2"
+      sources."color-convert-1.9.3"
+      sources."color-name-1.1.3"
+      sources."comma-separated-tokens-2.0.2"
+      sources."concat-map-0.0.1"
+      (sources."concat-stream-2.0.0" // {
+        dependencies = [
+          sources."readable-stream-3.6.0"
+          sources."string_decoder-1.3.0"
+        ];
+      })
+      sources."configstore-5.0.1"
+      sources."core-util-is-1.0.3"
+      sources."crypto-random-string-2.0.0"
+      sources."cuss-2.0.0"
+      sources."debug-4.3.2"
+      sources."decamelize-5.0.1"
+      (sources."decamelize-keys-1.1.0" // {
+        dependencies = [
+          sources."decamelize-1.2.0"
+          sources."map-obj-1.0.1"
+        ];
+      })
+      sources."decompress-response-3.3.0"
+      sources."deep-extend-0.6.0"
+      sources."defer-to-connect-1.1.3"
+      sources."dequal-2.0.2"
+      sources."diff-5.0.0"
+      sources."dot-prop-5.3.0"
+      sources."duplexer-0.1.2"
+      sources."duplexer3-0.1.4"
+      sources."emoji-regex-8.0.0"
+      sources."end-of-stream-1.4.4"
+      sources."error-ex-1.3.2"
+      sources."escape-goat-2.1.1"
+      sources."escape-string-regexp-1.0.5"
+      sources."estree-util-is-identifier-name-2.0.0"
+      sources."estree-util-visit-1.1.0"
+      sources."event-stream-3.1.7"
+      sources."extend-3.0.2"
+      sources."fault-2.0.1"
+      sources."figgy-pudding-3.5.2"
+      sources."find-up-5.0.0"
+      sources."format-0.2.2"
+      sources."from-0.1.7"
+      sources."fs.realpath-1.0.0"
+      sources."function-bind-1.1.1"
+      (sources."get-stream-4.1.0" // {
+        dependencies = [
+          sources."pump-3.0.0"
+        ];
+      })
+      sources."git-diff-tree-1.1.0"
+      sources."git-spawned-stream-1.0.1"
+      sources."glob-7.2.0"
+      (sources."global-dirs-3.0.0" // {
+        dependencies = [
+          sources."ini-2.0.0"
+        ];
+      })
+      sources."got-9.6.0"
+      sources."graceful-fs-4.2.8"
+      sources."hard-rejection-2.1.0"
+      sources."has-1.0.3"
+      sources."has-flag-3.0.0"
+      sources."has-yarn-2.1.0"
+      sources."hast-util-embedded-2.0.0"
+      sources."hast-util-from-parse5-7.1.0"
+      sources."hast-util-has-property-2.0.0"
+      (sources."hast-util-is-body-ok-link-1.0.4" // {
+        dependencies = [
+          sources."hast-util-has-property-1.0.4"
+          sources."hast-util-is-element-1.1.0"
+        ];
+      })
+      sources."hast-util-is-element-2.1.1"
+      sources."hast-util-parse-selector-3.1.0"
+      sources."hast-util-phrasing-2.0.0"
+      sources."hast-util-to-nlcst-2.2.0"
+      sources."hast-util-to-string-2.0.0"
+      sources."hast-util-whitespace-2.0.0"
+      sources."hastscript-7.0.2"
+      sources."hosted-git-info-4.0.2"
+      sources."http-cache-semantics-4.1.0"
+      sources."ignore-5.1.9"
+      sources."import-lazy-2.1.0"
+      sources."import-meta-resolve-1.1.1"
+      sources."imurmurhash-0.1.4"
+      sources."indent-string-5.0.0"
+      sources."inflight-1.0.6"
+      sources."inherits-2.0.4"
+      sources."ini-1.3.8"
+      sources."is-alphabetical-2.0.1"
+      sources."is-alphanumerical-2.0.1"
+      sources."is-arrayish-0.2.1"
+      sources."is-buffer-2.0.5"
+      sources."is-ci-2.0.0"
+      sources."is-core-module-2.8.0"
+      sources."is-decimal-2.0.1"
+      sources."is-empty-1.2.0"
+      sources."is-fullwidth-code-point-3.0.0"
+      sources."is-hexadecimal-2.0.1"
+      sources."is-installed-globally-0.4.0"
+      sources."is-npm-5.0.0"
+      sources."is-obj-2.0.0"
+      sources."is-path-inside-3.0.3"
+      sources."is-plain-obj-1.1.0"
+      sources."is-typedarray-1.0.0"
+      sources."is-yarn-global-0.3.0"
+      sources."isarray-0.0.1"
+      sources."js-tokens-4.0.0"
+      sources."js-yaml-4.1.0"
+      sources."json-buffer-3.0.0"
+      sources."json-parse-even-better-errors-2.3.1"
+      sources."keyv-3.1.0"
+      sources."kind-of-6.0.3"
+      sources."kleur-4.1.4"
+      sources."latest-version-5.1.0"
+      (sources."libnpmconfig-1.2.1" // {
+        dependencies = [
+          sources."find-up-3.0.0"
+          sources."locate-path-3.0.0"
+          sources."p-limit-2.3.0"
+          sources."p-locate-3.0.0"
+          sources."path-exists-3.0.0"
+        ];
+      })
+      sources."limit-spawn-0.0.3"
+      sources."lines-and-columns-1.1.6"
+      sources."load-plugin-4.0.1"
+      sources."locate-path-6.0.0"
+      sources."longest-streak-3.0.1"
+      sources."lowercase-keys-1.0.1"
+      sources."lru-cache-6.0.0"
+      (sources."make-dir-3.1.0" // {
+        dependencies = [
+          sources."semver-6.3.0"
+        ];
+      })
+      sources."map-obj-4.3.0"
+      sources."map-stream-0.1.0"
+      sources."markdown-table-3.0.1"
+      sources."mdast-comment-marker-2.1.0"
+      (sources."mdast-util-find-and-replace-2.1.0" // {
+        dependencies = [
+          sources."escape-string-regexp-5.0.0"
+        ];
+      })
+      sources."mdast-util-from-markdown-1.0.4"
+      sources."mdast-util-frontmatter-1.0.0"
+      sources."mdast-util-gfm-2.0.0"
+      sources."mdast-util-gfm-autolink-literal-1.0.2"
+      sources."mdast-util-gfm-footnote-1.0.0"
+      sources."mdast-util-gfm-strikethrough-1.0.0"
+      sources."mdast-util-gfm-table-1.0.1"
+      sources."mdast-util-gfm-task-list-item-1.0.0"
+      sources."mdast-util-mdx-1.1.0"
+      sources."mdast-util-mdx-expression-1.1.1"
+      sources."mdast-util-mdx-jsx-1.1.1"
+      sources."mdast-util-mdxjs-esm-1.1.1"
+      sources."mdast-util-to-markdown-1.2.4"
+      sources."mdast-util-to-nlcst-5.2.1"
+      sources."mdast-util-to-string-3.1.0"
+      sources."meow-10.1.1"
+      sources."micromark-3.0.7"
+      sources."micromark-core-commonmark-1.0.4"
+      sources."micromark-extension-frontmatter-1.0.0"
+      sources."micromark-extension-gfm-2.0.0"
+      sources."micromark-extension-gfm-autolink-literal-1.0.2"
+      sources."micromark-extension-gfm-footnote-1.0.2"
+      sources."micromark-extension-gfm-strikethrough-1.0.3"
+      sources."micromark-extension-gfm-table-1.0.3"
+      sources."micromark-extension-gfm-tagfilter-1.0.0"
+      sources."micromark-extension-gfm-task-list-item-1.0.2"
+      sources."micromark-extension-mdx-expression-1.0.2"
+      sources."micromark-extension-mdx-jsx-1.0.2"
+      sources."micromark-extension-mdx-md-1.0.0"
+      sources."micromark-extension-mdxjs-1.0.0"
+      sources."micromark-extension-mdxjs-esm-1.0.2"
+      sources."micromark-factory-destination-1.0.0"
+      sources."micromark-factory-label-1.0.2"
+      sources."micromark-factory-mdx-expression-1.0.4"
+      sources."micromark-factory-space-1.0.0"
+      sources."micromark-factory-title-1.0.2"
+      sources."micromark-factory-whitespace-1.0.0"
+      sources."micromark-util-character-1.1.0"
+      sources."micromark-util-chunked-1.0.0"
+      sources."micromark-util-classify-character-1.0.0"
+      sources."micromark-util-combine-extensions-1.0.0"
+      sources."micromark-util-decode-numeric-character-reference-1.0.0"
+      sources."micromark-util-decode-string-1.0.1"
+      sources."micromark-util-encode-1.0.0"
+      sources."micromark-util-events-to-acorn-1.0.4"
+      sources."micromark-util-html-tag-name-1.0.0"
+      sources."micromark-util-normalize-identifier-1.0.0"
+      sources."micromark-util-resolve-all-1.0.0"
+      sources."micromark-util-sanitize-uri-1.0.0"
+      sources."micromark-util-subtokenize-1.0.2"
+      sources."micromark-util-symbol-1.0.0"
+      sources."micromark-util-types-1.0.1"
+      sources."mimic-response-1.0.1"
+      sources."min-indent-1.0.1"
+      sources."minimatch-3.0.4"
+      sources."minimist-1.2.5"
+      sources."minimist-options-4.1.0"
+      sources."mri-1.2.0"
+      sources."ms-2.1.2"
+      sources."nlcst-is-literal-2.1.0"
+      sources."nlcst-normalize-3.1.0"
+      sources."nlcst-search-3.1.0"
+      sources."nlcst-to-string-3.1.0"
+      sources."normalize-package-data-3.0.3"
+      sources."normalize-url-4.5.1"
+      sources."object-keys-0.4.0"
+      sources."once-1.4.0"
+      sources."p-cancelable-1.1.0"
+      sources."p-limit-3.1.0"
+      sources."p-locate-5.0.0"
+      sources."p-try-2.2.0"
+      (sources."package-json-6.5.0" // {
+        dependencies = [
+          sources."semver-6.3.0"
+        ];
+      })
+      (sources."parse-english-5.0.0" // {
+        dependencies = [
+          sources."nlcst-to-string-2.0.4"
+        ];
+      })
+      sources."parse-entities-3.1.0"
+      sources."parse-json-5.2.0"
+      (sources."parse-latin-5.0.0" // {
+        dependencies = [
+          sources."nlcst-to-string-2.0.4"
+        ];
+      })
+      sources."parse5-6.0.1"
+      sources."path-exists-4.0.0"
+      sources."path-is-absolute-1.0.1"
+      sources."pause-stream-0.0.11"
+      sources."pluralize-8.0.0"
+      sources."prepend-http-2.0.0"
+      sources."process-nextick-args-1.0.7"
+      sources."property-information-6.1.0"
+      sources."pump-1.0.3"
+      sources."pump-chain-1.0.0"
+      sources."pupa-2.1.1"
+      sources."quick-lru-5.1.1"
+      sources."quotation-2.0.2"
+      sources."rc-1.2.8"
+      sources."read-pkg-6.0.0"
+      sources."read-pkg-up-8.0.0"
+      sources."readable-stream-1.0.34"
+      sources."redent-4.0.0"
+      sources."registry-auth-token-4.2.1"
+      sources."registry-url-5.1.0"
+      sources."rehype-parse-8.0.3"
+      sources."rehype-retext-3.0.1"
+      sources."remark-frontmatter-4.0.1"
+      sources."remark-gfm-3.0.1"
+      sources."remark-mdx-2.0.0-rc.1"
+      sources."remark-message-control-7.1.1"
+      sources."remark-parse-10.0.0"
+      sources."remark-retext-5.0.1"
+      sources."responselike-1.0.2"
+      sources."retext-english-4.1.0"
+      sources."retext-equality-6.3.0"
+      sources."retext-profanities-7.1.0"
+      sources."sade-1.7.4"
+      sources."safe-buffer-5.2.1"
+      sources."semver-7.3.5"
+      (sources."semver-diff-3.1.1" // {
+        dependencies = [
+          sources."semver-6.3.0"
+        ];
+      })
+      sources."signal-exit-3.0.5"
+      sources."sliced-1.0.1"
+      sources."space-separated-tokens-2.0.1"
+      (sources."spawn-to-readstream-0.1.3" // {
+        dependencies = [
+          sources."through2-0.4.2"
+        ];
+      })
+      sources."spdx-correct-3.1.1"
+      sources."spdx-exceptions-2.3.0"
+      sources."spdx-expression-parse-3.0.1"
+      sources."spdx-license-ids-3.0.10"
+      sources."split-0.2.10"
+      (sources."split-transform-stream-0.1.1" // {
+        dependencies = [
+          sources."bubble-stream-error-0.0.1"
+          sources."through2-0.4.2"
+        ];
+      })
+      sources."stream-combiner-0.0.4"
+      sources."string-width-4.2.3"
+      sources."string_decoder-0.10.31"
+      sources."stringify-entities-4.0.2"
+      sources."strip-ansi-6.0.1"
+      sources."strip-indent-4.0.0"
+      sources."strip-json-comments-2.0.1"
+      sources."supports-color-5.5.0"
+      sources."through-2.3.8"
+      (sources."through2-2.0.0" // {
+        dependencies = [
+          sources."isarray-1.0.0"
+          sources."readable-stream-2.0.6"
+          sources."xtend-4.0.2"
+        ];
+      })
+      sources."to-readable-stream-1.0.0"
+      sources."to-vfile-7.2.2"
+      sources."totalist-2.0.0"
+      sources."trim-newlines-4.0.2"
+      sources."trough-2.0.2"
+      sources."type-fest-1.4.0"
+      sources."typedarray-0.0.6"
+      sources."typedarray-to-buffer-3.1.5"
+      sources."unherit-3.0.0"
+      (sources."unified-10.1.0" // {
+        dependencies = [
+          sources."is-plain-obj-4.0.0"
+        ];
+      })
+      sources."unified-diff-4.0.1"
+      (sources."unified-engine-9.0.4" // {
+        dependencies = [
+          sources."is-plain-obj-4.0.0"
+        ];
+      })
+      (sources."unified-message-control-4.0.0" // {
+        dependencies = [
+          sources."unist-util-visit-3.1.0"
+        ];
+      })
+      sources."unique-string-2.0.0"
+      sources."unist-util-inspect-7.0.0"
+      sources."unist-util-is-5.1.1"
+      sources."unist-util-modify-children-2.0.0"
+      sources."unist-util-position-4.0.1"
+      sources."unist-util-position-from-estree-1.1.1"
+      sources."unist-util-remove-position-4.0.1"
+      sources."unist-util-stringify-position-3.0.0"
+      (sources."unist-util-visit-4.1.0" // {
+        dependencies = [
+          sources."unist-util-visit-parents-5.1.0"
+        ];
+      })
+      sources."unist-util-visit-children-1.1.4"
+      sources."unist-util-visit-parents-4.1.1"
+      (sources."update-notifier-5.1.0" // {
+        dependencies = [
+          sources."ansi-styles-4.3.0"
+          sources."chalk-4.1.2"
+          sources."color-convert-2.0.1"
+          sources."color-name-1.1.4"
+          sources."has-flag-4.0.0"
+          sources."supports-color-7.2.0"
+        ];
+      })
+      sources."url-parse-lax-3.0.0"
+      sources."util-deprecate-1.0.2"
+      sources."uvu-0.5.2"
+      sources."validate-npm-package-license-3.0.4"
+      sources."vfile-5.2.0"
+      sources."vfile-find-up-6.0.0"
+      sources."vfile-location-4.0.1"
+      sources."vfile-message-3.0.2"
+      (sources."vfile-reporter-7.0.2" // {
+        dependencies = [
+          sources."ansi-regex-6.0.1"
+          sources."emoji-regex-9.2.2"
+          sources."has-flag-5.0.1"
+          sources."is-fullwidth-code-point-4.0.0"
+          sources."string-width-5.0.1"
+          sources."strip-ansi-7.0.1"
+          sources."supports-color-9.0.2"
+        ];
+      })
+      sources."vfile-sort-3.0.0"
+      sources."vfile-statistics-2.0.0"
+      sources."web-namespaces-2.0.1"
+      sources."widest-line-3.1.0"
+      (sources."wrap-ansi-7.0.0" // {
+        dependencies = [
+          sources."ansi-styles-4.3.0"
+          sources."color-convert-2.0.1"
+          sources."color-name-1.1.4"
+        ];
+      })
+      sources."wrappy-1.0.2"
+      sources."write-file-atomic-3.0.3"
+      sources."xdg-basedir-4.0.0"
+      sources."xtend-2.1.2"
+      sources."yallist-4.0.0"
+      sources."yargs-parser-20.2.9"
+      sources."yocto-queue-0.1.0"
+      sources."zwitch-2.0.2"
+    ];
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Catch insensitive, inconsiderate writing";
+      homepage = "https://alexjs.com";
+      license = "MIT";
+    };
+    production = true;
+    bypassCache = true;
+    reconstructLock = true;
+  };
   alloy = nodeEnv.buildNodePackage {
     name = "alloy";
     packageName = "alloy";
@@ -74656,7 +75895,7 @@ in
       sources."balanced-match-1.0.2"
       sources."brace-expansion-1.1.11"
       sources."browserslist-4.17.6"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       sources."chalk-2.4.2"
       sources."color-convert-1.9.3"
       sources."color-name-1.1.3"
@@ -74796,10 +76035,10 @@ in
     };
     dependencies = [
       sources."browserslist-4.17.6"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       sources."electron-to-chromium-1.3.895"
       sources."escalade-3.1.1"
-      sources."fraction.js-4.1.1"
+      sources."fraction.js-4.1.2"
       sources."node-releases-2.0.1"
       sources."normalize-range-0.1.2"
       sources."picocolors-1.0.0"
@@ -78620,10 +79859,10 @@ in
   cdk8s-cli = nodeEnv.buildNodePackage {
     name = "cdk8s-cli";
     packageName = "cdk8s-cli";
-    version = "1.0.27";
+    version = "1.0.28";
     src = fetchurl {
-      url = "https://registry.npmjs.org/cdk8s-cli/-/cdk8s-cli-1.0.27.tgz";
-      sha512 = "9aRymmTyDNObl8goYyGdxJu9q62rJ+rexNY5GnAzj5CAzcKKqyYaht270eriCVdoKG3/oFQ6rKvzmGZJ3AgF+w==";
+      url = "https://registry.npmjs.org/cdk8s-cli/-/cdk8s-cli-1.0.28.tgz";
+      sha512 = "JAcF1zh6/ZfiZCnjpjqeuTi+DfbAW9zL7gBYWqCAZMXdj1BHGsOmjXomHRHLU/fE80lFYJSYUmrjfJw+neMQ4Q==";
     };
     dependencies = [
       sources."@jsii/check-node-1.43.0"
@@ -78638,8 +79877,8 @@ in
       sources."call-bind-1.0.2"
       sources."camelcase-6.2.0"
       sources."case-1.6.3"
-      sources."cdk8s-1.1.30"
-      sources."cdk8s-plus-22-1.0.0-beta.37"
+      sources."cdk8s-1.1.31"
+      sources."cdk8s-plus-22-1.0.0-beta.38"
       sources."chalk-4.1.2"
       sources."cliui-7.0.4"
       sources."clone-2.1.2"
@@ -78732,14 +79971,14 @@ in
           sources."yargs-16.2.0"
         ];
       })
-      (sources."jsii-srcmak-0.1.395" // {
+      (sources."jsii-srcmak-0.1.396" // {
         dependencies = [
           sources."fs-extra-9.1.0"
         ];
       })
       sources."json-schema-0.4.0"
       sources."json-schema-traverse-1.0.0"
-      sources."json2jsii-0.2.48"
+      sources."json2jsii-0.2.49"
       sources."jsonfile-6.1.0"
       sources."jsonschema-1.4.0"
       sources."locate-path-5.0.0"
@@ -78777,7 +80016,7 @@ in
       sources."snake-case-3.0.4"
       sources."sort-json-2.0.0"
       sources."spdx-license-list-6.4.0"
-      sources."sscaff-1.2.124"
+      sources."sscaff-1.2.125"
       (sources."streamroller-2.2.4" // {
         dependencies = [
           sources."date-format-2.1.0"
@@ -79418,7 +80657,7 @@ in
       sources."sort-json-2.0.0"
       sources."source-map-0.5.7"
       sources."spdx-license-list-6.4.0"
-      sources."sscaff-1.2.124"
+      sources."sscaff-1.2.125"
       (sources."stack-utils-2.0.5" // {
         dependencies = [
           sources."escape-string-regexp-2.0.0"
@@ -79838,10 +81077,10 @@ in
   coc-explorer = nodeEnv.buildNodePackage {
     name = "coc-explorer";
     packageName = "coc-explorer";
-    version = "0.20.0";
+    version = "0.20.1";
     src = fetchurl {
-      url = "https://registry.npmjs.org/coc-explorer/-/coc-explorer-0.20.0.tgz";
-      sha512 = "epA1GHdHMc40jlBjjFjQ+1SNW1Cal99xycQ0e0bF7UQjR6LBDUszjbb++LYyaPaWRKVCKFp0uCuSXaG5iRIjpA==";
+      url = "https://registry.npmjs.org/coc-explorer/-/coc-explorer-0.20.1.tgz";
+      sha512 = "BCuK5OwUV9mRYN4F8e4TnjWkTcIy7UEsxCST/aoxYoCJ2TKrskDIb82R2EtuD6xmJoz1VEHpugWEG7xHRKDQxg==";
     };
     dependencies = [
       sources."@sindresorhus/df-3.1.1"
@@ -80439,7 +81678,7 @@ in
       sources."callsites-3.1.0"
       sources."camelcase-2.1.1"
       sources."camelcase-keys-2.1.0"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       sources."capture-stack-trace-1.0.1"
       sources."ccount-1.1.0"
       (sources."chalk-4.1.2" // {
@@ -81551,7 +82790,7 @@ in
       sources."callsites-3.1.0"
       sources."camelcase-5.3.1"
       sources."camelcase-keys-6.2.2"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       (sources."chalk-4.1.2" // {
         dependencies = [
           sources."ansi-styles-4.3.0"
@@ -85209,7 +86448,7 @@ in
         ];
       })
       sources."call-bind-1.0.2"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       sources."chalk-2.4.2"
       sources."chokidar-2.1.8"
       (sources."class-utils-0.3.6" // {
@@ -86725,7 +87964,7 @@ in
       sources."callsites-2.0.0"
       sources."camelcase-5.3.1"
       sources."camelcase-keys-6.2.2"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       sources."chalk-2.4.2"
       sources."ci-info-2.0.0"
       sources."cli-boxes-2.2.1"
@@ -89348,7 +90587,7 @@ in
       })
       sources."camelcase-6.2.0"
       sources."caniuse-api-3.0.0"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       sources."caseless-0.12.0"
       (sources."chalk-4.1.2" // {
         dependencies = [
@@ -91268,7 +92507,7 @@ in
       sources."callsites-2.0.0"
       sources."camelcase-5.3.1"
       sources."camelcase-keys-6.2.2"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       sources."chalk-2.4.2"
       sources."chownr-1.1.4"
       sources."ci-info-2.0.0"
@@ -93973,7 +95212,7 @@ in
       sources."call-bind-1.0.2"
       sources."camel-case-4.1.2"
       sources."camelcase-6.2.0"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       sources."ccount-1.1.0"
       (sources."chalk-4.1.2" // {
         dependencies = [
@@ -96759,7 +97998,7 @@ in
           sources."supports-color-7.2.0"
         ];
       })
-      sources."systeminformation-5.9.10"
+      sources."systeminformation-5.9.11"
       sources."term-canvas-0.0.5"
       sources."type-fest-0.21.3"
       sources."wordwrap-0.0.3"
@@ -97671,10 +98910,10 @@ in
   htmlhint = nodeEnv.buildNodePackage {
     name = "htmlhint";
     packageName = "htmlhint";
-    version = "0.16.0";
+    version = "0.16.1";
     src = fetchurl {
-      url = "https://registry.npmjs.org/htmlhint/-/htmlhint-0.16.0.tgz";
-      sha512 = "p2QZA9o6uSOVVNRdhtLKx1c0DxKw6hZAJXx0Ubv6NkCTsWIxA4FZzVQd8mkSOF7oNbA5S6yLBQSHtDhaw8aRbg==";
+      url = "https://registry.npmjs.org/htmlhint/-/htmlhint-0.16.1.tgz";
+      sha512 = "5uxZsGTC8ILh9W9K/7eJ2pCfP7Hj4VEF2wLlm56qhMvvnXbzfgdRgSwBPqtY46jSWWJAv9J1SegFLI3xfwIteQ==";
     };
     dependencies = [
       sources."@types/node-16.11.7"
@@ -101810,7 +103049,7 @@ in
       sources."bytes-3.1.0"
       sources."bytesish-0.4.4"
       sources."call-bind-1.0.2"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       sources."caseless-0.12.0"
       sources."chalk-2.4.2"
       sources."chardet-1.4.0"
@@ -104712,7 +105951,7 @@ in
       sources."cached-path-relative-1.0.2"
       sources."call-bind-1.0.2"
       sources."camelcase-5.3.1"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       sources."capture-exit-2.0.0"
       sources."caseless-0.12.0"
       (sources."chalk-3.0.0" // {
@@ -109581,7 +110820,7 @@ in
       sources."caller-path-2.0.0"
       sources."callsites-2.0.0"
       sources."caniuse-api-3.0.0"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       sources."caseless-0.12.0"
       sources."chalk-2.4.2"
       sources."chokidar-2.1.8"
@@ -111781,7 +113020,7 @@ in
       sources."statuses-1.5.0"
       sources."string_decoder-0.10.31"
       sources."supports-color-7.2.0"
-      sources."systeminformation-5.9.10"
+      sources."systeminformation-5.9.11"
       sources."to-regex-range-5.0.1"
       sources."toidentifier-1.0.0"
       sources."tslib-2.3.1"
@@ -111817,10 +113056,10 @@ in
   pnpm = nodeEnv.buildNodePackage {
     name = "pnpm";
     packageName = "pnpm";
-    version = "6.21.0";
+    version = "6.21.1";
     src = fetchurl {
-      url = "https://registry.npmjs.org/pnpm/-/pnpm-6.21.0.tgz";
-      sha512 = "Emhpjbr7MiINYUP6d/X5c2vPa5ltkA1EhJ0wmGotrYZs7DCFvy6SW+RKTGNddedqLhL14LTK+4pE1rHWcQnnfg==";
+      url = "https://registry.npmjs.org/pnpm/-/pnpm-6.21.1.tgz";
+      sha512 = "cekH8bFgZbHerGsmW4JYY5bi0jYyi/K7WZpSf8TQFlP3Kxc50KhCwNWPUzgLVImYyX8SCJcVhyNOoYQKDnmYCw==";
     };
     buildInputs = globalBuildInputs;
     meta = {
@@ -113368,7 +114607,7 @@ in
       sources."camel-case-3.0.0"
       sources."camelcase-5.3.1"
       sources."caniuse-api-3.0.0"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       sources."case-sensitive-paths-webpack-plugin-2.4.0"
       sources."caw-2.0.1"
       sources."chalk-2.4.2"
@@ -115414,10 +116653,10 @@ in
   "reveal.js" = nodeEnv.buildNodePackage {
     name = "reveal.js";
     packageName = "reveal.js";
-    version = "4.1.3";
+    version = "4.2.0";
     src = fetchurl {
-      url = "https://registry.npmjs.org/reveal.js/-/reveal.js-4.1.3.tgz";
-      sha512 = "5VbL4nVDUedVKnOIIM3UQAIUlp+CvR/SrUkrN5GDoVfcWJAxH2oIh7PWyShy7+pE7tgkH2q+3e5EikGRpgE+oA==";
+      url = "https://registry.npmjs.org/reveal.js/-/reveal.js-4.2.0.tgz";
+      sha512 = "ukvq+a/kBu88jCJaQBCkYQ+vjaNUhlI50Y2GlNl4MS6OVnFHL+2Jb6XBZS4MDRWs3lLZAA3wXEu3xKFn8ebX0A==";
     };
     buildInputs = globalBuildInputs;
     meta = {
@@ -115463,10 +116702,10 @@ in
   rollup = nodeEnv.buildNodePackage {
     name = "rollup";
     packageName = "rollup";
-    version = "2.59.0";
+    version = "2.60.0";
     src = fetchurl {
-      url = "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz";
-      sha512 = "l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==";
+      url = "https://registry.npmjs.org/rollup/-/rollup-2.60.0.tgz";
+      sha512 = "cHdv9GWd58v58rdseC8e8XIaPUo8a9cgZpnCMMDGZFDZKEODOiPPEQFXLriWr/TjXzhPPmG5bkAztPsOARIcGQ==";
     };
     dependencies = [
       sources."fsevents-2.3.2"
@@ -124299,7 +125538,7 @@ in
       sources."jsonc-parser-3.0.0"
       sources."ms-2.0.0"
       sources."request-light-0.4.0"
-      (sources."vscode-json-languageservice-4.1.9" // {
+      (sources."vscode-json-languageservice-4.1.10" // {
         dependencies = [
           sources."vscode-nls-5.0.0"
         ];
@@ -124386,7 +125625,7 @@ in
       sources."typescript-4.4.4"
       sources."vscode-css-languageservice-5.1.8"
       sources."vscode-html-languageservice-4.1.1"
-      sources."vscode-json-languageservice-4.1.9"
+      sources."vscode-json-languageservice-4.1.10"
       sources."vscode-jsonrpc-8.0.0-next.3"
       sources."vscode-languageserver-8.0.0-next.3"
       (sources."vscode-languageserver-protocol-3.17.0-next.9" // {
@@ -124467,7 +125706,7 @@ in
       sources."buffer-from-1.1.2"
       sources."call-bind-1.0.2"
       sources."camelcase-6.2.0"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       (sources."chalk-4.1.2" // {
         dependencies = [
           sources."supports-color-7.2.0"
@@ -126846,7 +128085,7 @@ in
       sources."ajv-keywords-3.5.2"
       sources."browserslist-4.17.6"
       sources."buffer-from-1.1.2"
-      sources."caniuse-lite-1.0.30001279"
+      sources."caniuse-lite-1.0.30001280"
       sources."chrome-trace-event-1.0.3"
       sources."commander-2.20.3"
       sources."electron-to-chromium-1.3.895"
@@ -127741,7 +128980,7 @@ in
     dependencies = [
       sources."jsonc-parser-3.0.0"
       sources."request-light-0.5.4"
-      sources."vscode-json-languageservice-4.1.9"
+      sources."vscode-json-languageservice-4.1.10"
       sources."vscode-jsonrpc-6.0.0"
       sources."vscode-languageserver-7.0.0"
       sources."vscode-languageserver-protocol-3.16.0"
diff --git a/pkgs/development/ocaml-modules/bistro/default.nix b/pkgs/development/ocaml-modules/bistro/default.nix
index c63f3f796ae7..87ab3d409e07 100644
--- a/pkgs/development/ocaml-modules/bistro/default.nix
+++ b/pkgs/development/ocaml-modules/bistro/default.nix
@@ -1,40 +1,40 @@
-{ lib, fetchFromGitHub, fetchpatch, buildDunePackage
-, base64, bos, core, lwt_react, ocamlgraph, rresult, tyxml
+{ lib
+, ocaml
+, fetchFromGitHub
+, buildDunePackage
+, base64
+, bos
+, core
+, lwt_react
+, ocamlgraph
+, ppx_sexp_conv
+, rresult
+, sexplib
+, tyxml
 }:
 
 buildDunePackage rec {
   pname = "bistro";
-  version = "0.5.0";
+  version = "unstable-2021-07-13";
 
   useDune2 = true;
 
   src = fetchFromGitHub {
     owner = "pveber";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "114gq48cpj2mvycypa9lfyqqb26wa2gkdfwkcqhnx7m6sdwv9a38";
+    rev = "4ce8d98f34f15ebf63ececccc9c763fec2b5fa6d";
+    sha256 = "sha256:16vxcdsj4dmswgm6igshs3hirz8jrg8l5b2xgcnxxgvsrc9sxljs";
   };
 
-  patches = [
-  # The following patch adds support for core.v0.13
-  (fetchpatch {
-    url = "https://github.com/pveber/bistro/commit/0931db43a146ad7829dff5120161a775f732a878.patch";
-    sha256 = "06y0sxbbab1mssc1xfjjv12lpv4rny5iqv9qkdqyzrvzpl1bdvnd";
-  })
-  # The following patch adds support for core.v0.14
-  (fetchpatch {
-    url = "https://github.com/pveber/bistro/commit/afbdcb2af7777ef7711c7f3c45dff605350a27b2.patch";
-    sha256 = "0ix6lx9qjnn3vqp0164c6l5an8b4rq69h2mxrg89piyk2g1yv0zg";
-  })
-  ];
-
   # Fix build with ppxlib 0.23
   postPatch = ''
-    substituteInPlace ppx/ppx_bistro.ml \
+    substituteInPlace ppx/bistro_script.ml \
       --replace 'Parser.parse_expression' 'Ocaml_common.Parser.parse_expression'
   '';
 
-  propagatedBuildInputs = [ base64 bos core lwt_react ocamlgraph rresult tyxml ];
+  propagatedBuildInputs = [
+    base64 bos core lwt_react ocamlgraph ppx_sexp_conv rresult sexplib tyxml
+  ];
 
   minimalOCamlVersion = "4.12";
 
@@ -43,5 +43,7 @@ buildDunePackage rec {
     description = "Build and execute typed scientific workflows";
     maintainers = [ lib.maintainers.vbgl ];
     license = lib.licenses.gpl2;
+    # ppx-related build failure; see https://github.com/pveber/bistro/issues/49:
+    broken = lib.versionAtLeast ocaml.version "4.13";
   };
 }
diff --git a/pkgs/development/python-modules/FormEncode/default.nix b/pkgs/development/python-modules/FormEncode/default.nix
index 08bcbaa6516a..4244d358c8dd 100644
--- a/pkgs/development/python-modules/FormEncode/default.nix
+++ b/pkgs/development/python-modules/FormEncode/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , isPy27
 , fetchPypi
-, nose
 , setuptools-scm
 , six
 , dnspython
diff --git a/pkgs/development/python-modules/afdko/default.nix b/pkgs/development/python-modules/afdko/default.nix
index 802da2c68562..c06929176d98 100644
--- a/pkgs/development/python-modules/afdko/default.nix
+++ b/pkgs/development/python-modules/afdko/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi, fetchpatch, pythonOlder, python
+{ lib, stdenv, buildPythonPackage, fetchPypi, fetchpatch, pythonOlder
 , fonttools, defcon, lxml, fs, unicodedata2, zopfli, brotlipy, fontpens
 , brotli, fontmath, mutatormath, booleanoperations
 , ufoprocessor, ufonormalizer, psautohint, tqdm
diff --git a/pkgs/development/python-modules/aioeafm/default.nix b/pkgs/development/python-modules/aioeafm/default.nix
index be91e0e95575..d8b8c11cef99 100644
--- a/pkgs/development/python-modules/aioeafm/default.nix
+++ b/pkgs/development/python-modules/aioeafm/default.nix
@@ -1,6 +1,5 @@
 { lib
 , aiohttp
-, async-timeout
 , buildPythonPackage
 , fetchFromGitHub
 , poetry
diff --git a/pkgs/development/python-modules/aioguardian/default.nix b/pkgs/development/python-modules/aioguardian/default.nix
index 7b16e2ffc50d..439035229a76 100644
--- a/pkgs/development/python-modules/aioguardian/default.nix
+++ b/pkgs/development/python-modules/aioguardian/default.nix
@@ -10,7 +10,6 @@
 , pytest-aiohttp
 , pytest-asyncio
 , pytestCheckHook
-, pythonAtLeast
 , voluptuous
 }:
 
diff --git a/pkgs/development/python-modules/aiohomekit/default.nix b/pkgs/development/python-modules/aiohomekit/default.nix
index 562a39a96f08..55513031fcf6 100644
--- a/pkgs/development/python-modules/aiohomekit/default.nix
+++ b/pkgs/development/python-modules/aiohomekit/default.nix
@@ -6,7 +6,6 @@
 , poetry-core
 , pytest-aiohttp
 , pytestCheckHook
-, pythonAtLeast
 , zeroconf
 }:
 
diff --git a/pkgs/development/python-modules/aiohttp-remotes/default.nix b/pkgs/development/python-modules/aiohttp-remotes/default.nix
index f3abbddfd957..7b97febc6ecb 100644
--- a/pkgs/development/python-modules/aiohttp-remotes/default.nix
+++ b/pkgs/development/python-modules/aiohttp-remotes/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchpatch, buildPythonPackage, fetchPypi
+{ lib, buildPythonPackage, fetchPypi
 , aiohttp, pytest, pytest-cov, pytest-aiohttp
 }:
 
diff --git a/pkgs/development/python-modules/aionanoleaf/default.nix b/pkgs/development/python-modules/aionanoleaf/default.nix
index 65b5e37f431b..a018acaf0e9b 100644
--- a/pkgs/development/python-modules/aionanoleaf/default.nix
+++ b/pkgs/development/python-modules/aionanoleaf/default.nix
@@ -3,7 +3,6 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pythonOlder
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/amberelectric/default.nix b/pkgs/development/python-modules/amberelectric/default.nix
index 1d268afd551d..cd4984861432 100644
--- a/pkgs/development/python-modules/amberelectric/default.nix
+++ b/pkgs/development/python-modules/amberelectric/default.nix
@@ -5,7 +5,6 @@
 , pytestCheckHook
 , python-dateutil
 , pythonOlder
-, setuptools-scm
 , urllib3
 }:
 
diff --git a/pkgs/development/python-modules/androguard/default.nix b/pkgs/development/python-modules/androguard/default.nix
index e7058205c54f..492c835f018e 100644
--- a/pkgs/development/python-modules/androguard/default.nix
+++ b/pkgs/development/python-modules/androguard/default.nix
@@ -1,5 +1,4 @@
 { lib
-, fetchpatch
 , buildPythonPackage
 , fetchFromGitHub
 , future
diff --git a/pkgs/development/python-modules/ansible/collections.nix b/pkgs/development/python-modules/ansible/collections.nix
index 0c58defb583f..427e76a979cb 100644
--- a/pkgs/development/python-modules/ansible/collections.nix
+++ b/pkgs/development/python-modules/ansible/collections.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, ansible-base
 , jsonschema
 , jxmlease
 , ncclient
diff --git a/pkgs/development/python-modules/approvaltests/default.nix b/pkgs/development/python-modules/approvaltests/default.nix
index 6f2c55d45cb6..35e6c90f216d 100644
--- a/pkgs/development/python-modules/approvaltests/default.nix
+++ b/pkgs/development/python-modules/approvaltests/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy37, pyperclip }:
+{ lib, buildPythonPackage, fetchFromGitHub, pyperclip }:
 
 buildPythonPackage rec {
   version = "0.2.6";
diff --git a/pkgs/development/python-modules/apsw/default.nix b/pkgs/development/python-modules/apsw/default.nix
index 8933d4e91bcc..c0f7274a80dd 100644
--- a/pkgs/development/python-modules/apsw/default.nix
+++ b/pkgs/development/python-modules/apsw/default.nix
@@ -1,5 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch
-, sqlite, isPyPy }:
+{ lib, buildPythonPackage, fetchFromGitHub, sqlite, isPyPy }:
 
 buildPythonPackage rec {
   pname = "apsw";
diff --git a/pkgs/development/python-modules/arrayqueues/default.nix b/pkgs/development/python-modules/arrayqueues/default.nix
index 79a44ad42cdd..fa4b7d0bffdf 100644
--- a/pkgs/development/python-modules/arrayqueues/default.nix
+++ b/pkgs/development/python-modules/arrayqueues/default.nix
@@ -1,4 +1,4 @@
-{ lib, pkgs, buildPythonPackage, fetchPypi, isPy3k
+{ lib, buildPythonPackage, fetchPypi, isPy3k
 , numpy
 }:
 
diff --git a/pkgs/development/python-modules/arrow/2.nix b/pkgs/development/python-modules/arrow/2.nix
index 88864ec78b77..cc702a525f95 100644
--- a/pkgs/development/python-modules/arrow/2.nix
+++ b/pkgs/development/python-modules/arrow/2.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchPypi, isPy27
-, nose, chai, simplejson, backports_functools_lru_cache
+, simplejson, backports_functools_lru_cache
 , python-dateutil, pytz, pytest-mock, sphinx, dateparser, pytest-cov
 , pytestCheckHook
 }:
diff --git a/pkgs/development/python-modules/astor/default.nix b/pkgs/development/python-modules/astor/default.nix
index 0d7aa3877125..ab68c91d5d6b 100644
--- a/pkgs/development/python-modules/astor/default.nix
+++ b/pkgs/development/python-modules/astor/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27, pytestCheckHook, fetchpatch }:
+{ lib, buildPythonPackage, fetchPypi, pytestCheckHook }:
 
 buildPythonPackage rec {
   pname = "astor";
diff --git a/pkgs/development/python-modules/async_stagger/default.nix b/pkgs/development/python-modules/async_stagger/default.nix
index bb57a7f1ecf3..638e326e0da4 100644
--- a/pkgs/development/python-modules/async_stagger/default.nix
+++ b/pkgs/development/python-modules/async_stagger/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , pythonOlder
 , pytestCheckHook
 , pytest-asyncio
diff --git a/pkgs/development/python-modules/asyncio_mqtt/default.nix b/pkgs/development/python-modules/asyncio_mqtt/default.nix
index da87124e4424..fd8a52f5a6ae 100644
--- a/pkgs/development/python-modules/asyncio_mqtt/default.nix
+++ b/pkgs/development/python-modules/asyncio_mqtt/default.nix
@@ -4,7 +4,6 @@
 , fetchPypi
 , async_generator
 , paho-mqtt
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/autobahn/default.nix b/pkgs/development/python-modules/autobahn/default.nix
index 52def3d6ee17..d51862dd1db4 100644
--- a/pkgs/development/python-modules/autobahn/default.nix
+++ b/pkgs/development/python-modules/autobahn/default.nix
@@ -1,6 +1,5 @@
 { lib
 , argon2_cffi
-, attrs
 , buildPythonPackage
 , cbor
 , cbor2
diff --git a/pkgs/development/python-modules/azure-appconfiguration/default.nix b/pkgs/development/python-modules/azure-appconfiguration/default.nix
index 3dcff8076bc5..d0a4c2b19d72 100644
--- a/pkgs/development/python-modules/azure-appconfiguration/default.nix
+++ b/pkgs/development/python-modules/azure-appconfiguration/default.nix
@@ -1,5 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, azure-core
+{ lib, buildPythonPackage, fetchPypi, azure-core
 , msrest
 }:
 
diff --git a/pkgs/development/python-modules/azure-cosmos/default.nix b/pkgs/development/python-modules/azure-cosmos/default.nix
index 47e6fb6f0394..9cbbd8e64b06 100644
--- a/pkgs/development/python-modules/azure-cosmos/default.nix
+++ b/pkgs/development/python-modules/azure-cosmos/default.nix
@@ -1,6 +1,5 @@
 { buildPythonPackage
 , lib
-, python
 , fetchPypi
 , six
 , requests
diff --git a/pkgs/development/python-modules/azure-identity/default.nix b/pkgs/development/python-modules/azure-identity/default.nix
index 9136ed0a4eb8..d0a05c03f115 100644
--- a/pkgs/development/python-modules/azure-identity/default.nix
+++ b/pkgs/development/python-modules/azure-identity/default.nix
@@ -1,6 +1,5 @@
 { buildPythonPackage
 , fetchPypi
-, isPy38
 , lib
 
 # pythonPackages
diff --git a/pkgs/development/python-modules/azure-keyvault-certificates/default.nix b/pkgs/development/python-modules/azure-keyvault-certificates/default.nix
index 52b1305998ec..f1a6c5359d6b 100644
--- a/pkgs/development/python-modules/azure-keyvault-certificates/default.nix
+++ b/pkgs/development/python-modules/azure-keyvault-certificates/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , azure-common
 , azure-core
 , msrest
diff --git a/pkgs/development/python-modules/azure-keyvault-keys/default.nix b/pkgs/development/python-modules/azure-keyvault-keys/default.nix
index 27f97854dd37..59fcef4d4bf1 100644
--- a/pkgs/development/python-modules/azure-keyvault-keys/default.nix
+++ b/pkgs/development/python-modules/azure-keyvault-keys/default.nix
@@ -2,7 +2,6 @@
 , aiohttp
 , azure-common
 , azure-core
-, azure-nspkg
 , cryptography
 , msrest
 , pytestCheckHook
diff --git a/pkgs/development/python-modules/azure-loganalytics/default.nix b/pkgs/development/python-modules/azure-loganalytics/default.nix
index 1eed45d72f5a..aa3d9c8ab0fa 100644
--- a/pkgs/development/python-modules/azure-loganalytics/default.nix
+++ b/pkgs/development/python-modules/azure-loganalytics/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrest
 , azure-common
 }:
diff --git a/pkgs/development/python-modules/azure-mgmt-billing/default.nix b/pkgs/development/python-modules/azure-mgmt-billing/default.nix
index 91ec3c069c8b..94b90e6b196d 100644
--- a/pkgs/development/python-modules/azure-mgmt-billing/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-billing/default.nix
@@ -5,8 +5,6 @@
 , azure-common
 , azure-mgmt-core
 , azure-mgmt-nspkg
-, python
-, isPy3k
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-commerce/default.nix b/pkgs/development/python-modules/azure-mgmt-commerce/default.nix
index 32e6cebd1f59..89aed74bbb3d 100644
--- a/pkgs/development/python-modules/azure-mgmt-commerce/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-commerce/default.nix
@@ -5,8 +5,6 @@
 , azure-common
 , azure-mgmt-core
 , azure-mgmt-nspkg
-, python
-, isPy3k
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-consumption/default.nix b/pkgs/development/python-modules/azure-mgmt-consumption/default.nix
index be22e14b574b..aa942d3a732b 100644
--- a/pkgs/development/python-modules/azure-mgmt-consumption/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-consumption/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrestazure
 , azure-common
 , azure-mgmt-core
diff --git a/pkgs/development/python-modules/azure-mgmt-core/default.nix b/pkgs/development/python-modules/azure-mgmt-core/default.nix
index fe64cabb2567..6adca4c02c7a 100644
--- a/pkgs/development/python-modules/azure-mgmt-core/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-core/default.nix
@@ -1,9 +1,7 @@
 { pkgs
 , buildPythonPackage
 , fetchPypi
-, python
 , azure-core
-, isPy3k
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix b/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix
index 8fc8b44f3e6a..473ebda1b874 100644
--- a/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrestazure
 , azure-common
 , azure-mgmt-datalake-nspkg
diff --git a/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix b/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix
index fc5d8ba6f018..18665f4dbb6e 100644
--- a/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix
@@ -1,9 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
-, pythonNamespacesHook
 , msrestazure
 , azure-common
 , azure-mgmt-datalake-nspkg
diff --git a/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix b/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix
index 6fd6b4a2a7ff..66945c67c6a3 100644
--- a/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , isPy3k
 , msrest
 , msrestazure
diff --git a/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix b/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix
index 820f737c5489..40ab2fbedcce 100644
--- a/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , isPy3k
 , msrest
 , msrestazure
diff --git a/pkgs/development/python-modules/azure-mgmt-dns/default.nix b/pkgs/development/python-modules/azure-mgmt-dns/default.nix
index 7daca780853a..515a8ab6026a 100644
--- a/pkgs/development/python-modules/azure-mgmt-dns/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-dns/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrest
 , msrestazure
 , azure-common
diff --git a/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix b/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix
index 36a797a0e834..39f09b28241c 100644
--- a/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , msrest
 , msrestazure
 , azure-common
diff --git a/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix b/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
index dfbaa40b1f1d..9de9ffd52743 100644
--- a/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrest
 , msrestazure
 , azure-common
diff --git a/pkgs/development/python-modules/azure-mgmt-maps/default.nix b/pkgs/development/python-modules/azure-mgmt-maps/default.nix
index 8a62fafaea13..d8be6d179383 100644
--- a/pkgs/development/python-modules/azure-mgmt-maps/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-maps/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrest
 , msrestazure
 , azure-common
diff --git a/pkgs/development/python-modules/azure-mgmt-monitor/default.nix b/pkgs/development/python-modules/azure-mgmt-monitor/default.nix
index db4aa3fb77cf..a7cac4b6df4b 100644
--- a/pkgs/development/python-modules/azure-mgmt-monitor/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-monitor/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , isPy3k
 , msrest
 , msrestazure
diff --git a/pkgs/development/python-modules/azure-mgmt-msi/default.nix b/pkgs/development/python-modules/azure-mgmt-msi/default.nix
index 4bd0a493ddae..bf81b5e67c72 100644
--- a/pkgs/development/python-modules/azure-mgmt-msi/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-msi/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrest
 , msrestazure
 , azure-common
diff --git a/pkgs/development/python-modules/azure-mgmt-network/default.nix b/pkgs/development/python-modules/azure-mgmt-network/default.nix
index 4d5426a4b190..a8958eef2083 100644
--- a/pkgs/development/python-modules/azure-mgmt-network/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-network/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , azure-common
-, azure-mgmt-common
 , azure-mgmt-core
 , msrest
 , msrestazure
diff --git a/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix b/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix
index b3503e23d613..4a01c753a626 100644
--- a/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix
@@ -2,8 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , azure-nspkg
-, python
-, isPy3k
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-redhatopenshift/default.nix b/pkgs/development/python-modules/azure-mgmt-redhatopenshift/default.nix
index 1ba00e861735..f2f4587cc67e 100644
--- a/pkgs/development/python-modules/azure-mgmt-redhatopenshift/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-redhatopenshift/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , msrest
 , msrestazure
 , azure-common
diff --git a/pkgs/development/python-modules/azure-mgmt-relay/default.nix b/pkgs/development/python-modules/azure-mgmt-relay/default.nix
index 71cdfe6e4c6f..a44825b55bd6 100644
--- a/pkgs/development/python-modules/azure-mgmt-relay/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-relay/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrestazure
 , azure-common
 , azure-mgmt-core
diff --git a/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix b/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix
index 42cd78d285c2..c7ae3b1acb5e 100644
--- a/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrest
 , msrestazure
 , azure-common
diff --git a/pkgs/development/python-modules/azure-mgmt-servicefabricmanagedclusters/default.nix b/pkgs/development/python-modules/azure-mgmt-servicefabricmanagedclusters/default.nix
index b79c73ab026c..55739e868e76 100644
--- a/pkgs/development/python-modules/azure-mgmt-servicefabricmanagedclusters/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-servicefabricmanagedclusters/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrest
 , msrestazure
 , azure-common
diff --git a/pkgs/development/python-modules/azure-mgmt-storage/default.nix b/pkgs/development/python-modules/azure-mgmt-storage/default.nix
index 3c47f7f0dad2..ed5b19bd80d6 100644
--- a/pkgs/development/python-modules/azure-mgmt-storage/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-storage/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , azure-mgmt-common
 , azure-mgmt-core
 , isPy3k
diff --git a/pkgs/development/python-modules/azure-nspkg/default.nix b/pkgs/development/python-modules/azure-nspkg/default.nix
index 25636053a6b3..f9c8e8d68c64 100644
--- a/pkgs/development/python-modules/azure-nspkg/default.nix
+++ b/pkgs/development/python-modules/azure-nspkg/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-storage-file-share/default.nix b/pkgs/development/python-modules/azure-storage-file-share/default.nix
index b6c639b6246b..421b46a9948f 100644
--- a/pkgs/development/python-modules/azure-storage-file-share/default.nix
+++ b/pkgs/development/python-modules/azure-storage-file-share/default.nix
@@ -7,7 +7,6 @@
 , azure-core
 , cryptography
 , msrest
-, futures ? null
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-storage/default.nix b/pkgs/development/python-modules/azure-storage/default.nix
index 3bc6a7318665..af6652733bd5 100644
--- a/pkgs/development/python-modules/azure-storage/default.nix
+++ b/pkgs/development/python-modules/azure-storage/default.nix
@@ -1,7 +1,6 @@
 { pkgs
 , buildPythonPackage
 , fetchPypi
-, python
 , azure-common
 , cryptography
 , futures ? null
diff --git a/pkgs/development/python-modules/bacpypes/default.nix b/pkgs/development/python-modules/bacpypes/default.nix
index 8a1e6771b114..40d06f7da8a0 100644
--- a/pkgs/development/python-modules/bacpypes/default.nix
+++ b/pkgs/development/python-modules/bacpypes/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, fetchFromGitHub
+{ lib, buildPythonPackage, fetchFromGitHub
 , wheel, pytestCheckHook, pytest-runner, pythonAtLeast }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/bagit/default.nix b/pkgs/development/python-modules/bagit/default.nix
index 7663cf8cf1a9..67aed7c186fd 100644
--- a/pkgs/development/python-modules/bagit/default.nix
+++ b/pkgs/development/python-modules/bagit/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, coverage
 , gettext
 , mock
 , pytestCheckHook
diff --git a/pkgs/development/python-modules/bayesian-optimization/default.nix b/pkgs/development/python-modules/bayesian-optimization/default.nix
index 1e896d82678a..6230c9985968 100644
--- a/pkgs/development/python-modules/bayesian-optimization/default.nix
+++ b/pkgs/development/python-modules/bayesian-optimization/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, python
 , scikit-learn
 , scipy
 , pytest
diff --git a/pkgs/development/python-modules/blebox-uniapi/default.nix b/pkgs/development/python-modules/blebox-uniapi/default.nix
index c3dbe3ccd321..6d7c79bf6a0a 100644
--- a/pkgs/development/python-modules/blebox-uniapi/default.nix
+++ b/pkgs/development/python-modules/blebox-uniapi/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, pythonOlder
 , fetchFromGitHub
 , aiohttp
 , semver
diff --git a/pkgs/development/python-modules/blessed/default.nix b/pkgs/development/python-modules/blessed/default.nix
index 981b5c85f96e..c2b03d35a21c 100644
--- a/pkgs/development/python-modules/blessed/default.nix
+++ b/pkgs/development/python-modules/blessed/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, fetchpatch, six
+{ lib, buildPythonPackage, fetchPypi, six
 , wcwidth, pytest, mock, glibcLocales
 }:
 
diff --git a/pkgs/development/python-modules/blinkpy/default.nix b/pkgs/development/python-modules/blinkpy/default.nix
index a73514805249..c427886a0324 100644
--- a/pkgs/development/python-modules/blinkpy/default.nix
+++ b/pkgs/development/python-modules/blinkpy/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, pythonOlder
 , fetchFromGitHub
 , python-dateutil
 , python-slugify
diff --git a/pkgs/development/python-modules/bokeh/default.nix b/pkgs/development/python-modules/bokeh/default.nix
index 925eb9c8f39d..63cd373abf77 100644
--- a/pkgs/development/python-modules/bokeh/default.nix
+++ b/pkgs/development/python-modules/bokeh/default.nix
@@ -12,7 +12,6 @@
 , pillow
 #, pytestCheckHook#
 , pytest
-, python
 , python-dateutil
 , pyyaml
 , selenium
diff --git a/pkgs/development/python-modules/bootstrapped-pip/2.nix b/pkgs/development/python-modules/bootstrapped-pip/2.nix
index f89d39ae2b79..2fc8b8b8d4b7 100644
--- a/pkgs/development/python-modules/bootstrapped-pip/2.nix
+++ b/pkgs/development/python-modules/bootstrapped-pip/2.nix
@@ -1,8 +1,7 @@
-{ lib, stdenv, python, fetchPypi, makeWrapper, unzip, makeSetupHook
+{ lib, stdenv, python, makeWrapper, unzip
 , pipInstallHook
 , setuptoolsBuildHook
 , wheel, pip, setuptools
-, isPy27
 }:
 
 stdenv.mkDerivation rec {
diff --git a/pkgs/development/python-modules/bootstrapped-pip/default.nix b/pkgs/development/python-modules/bootstrapped-pip/default.nix
index 84016043929c..b2846e3a13a1 100644
--- a/pkgs/development/python-modules/bootstrapped-pip/default.nix
+++ b/pkgs/development/python-modules/bootstrapped-pip/default.nix
@@ -1,8 +1,7 @@
-{ lib, stdenv, python, fetchPypi, makeWrapper, unzip, makeSetupHook
+{ lib, stdenv, python, makeWrapper, unzip
 , pipInstallHook
 , setuptoolsBuildHook
 , wheel, pip, setuptools
-, isPy27
 }:
 
 stdenv.mkDerivation rec {
diff --git a/pkgs/development/python-modules/bsdiff4/default.nix b/pkgs/development/python-modules/bsdiff4/default.nix
index 5687e9c7bf7a..cbc75ef2843f 100644
--- a/pkgs/development/python-modules/bsdiff4/default.nix
+++ b/pkgs/development/python-modules/bsdiff4/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, aflplusplus
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/cadquery/default.nix b/pkgs/development/python-modules/cadquery/default.nix
index bc8cbe1f2c82..f7e436a41605 100644
--- a/pkgs/development/python-modules/cadquery/default.nix
+++ b/pkgs/development/python-modules/cadquery/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , toPythonModule
-, isPy3k
 , pythonOlder
 , pythonAtLeast
 , fetchFromGitHub
diff --git a/pkgs/development/python-modules/can/default.nix b/pkgs/development/python-modules/can/default.nix
index 255a100ec688..188ab9cb5622 100644
--- a/pkgs/development/python-modules/can/default.nix
+++ b/pkgs/development/python-modules/can/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , pythonOlder
-, isPy27
 , aenum
 , wrapt
 , typing ? null
@@ -12,7 +11,7 @@
 , hypothesis
 , future
 , pytest
-, pytest-timeout }:
+ }:
 
 buildPythonPackage rec {
   pname = "python-can";
diff --git a/pkgs/development/python-modules/capstone/default.nix b/pkgs/development/python-modules/capstone/default.nix
index 6ab2ed91fe52..cea08d62c102 100644
--- a/pkgs/development/python-modules/capstone/default.nix
+++ b/pkgs/development/python-modules/capstone/default.nix
@@ -2,8 +2,6 @@
 , buildPythonPackage
 , capstone
 , stdenv
-, fetchpatch
-, fetchPypi
 , setuptools
 }:
 
diff --git a/pkgs/development/python-modules/carbon/default.nix b/pkgs/development/python-modules/carbon/default.nix
index acc3aa144eba..b30df5ec5383 100644
--- a/pkgs/development/python-modules/carbon/default.nix
+++ b/pkgs/development/python-modules/carbon/default.nix
@@ -1,5 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k
-, twisted, whisper, txamqp, cachetools, urllib3
+{ lib, buildPythonPackage, fetchPypi, twisted, whisper, txamqp, cachetools, urllib3
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/certbot-dns-google/default.nix b/pkgs/development/python-modules/certbot-dns-google/default.nix
index 568986b60176..182ff720e13a 100644
--- a/pkgs/development/python-modules/certbot-dns-google/default.nix
+++ b/pkgs/development/python-modules/certbot-dns-google/default.nix
@@ -2,7 +2,6 @@
 , acme
 , certbot
 , google-api-python-client
-, isPy3k
 , oauth2client
 , pytestCheckHook
 , pythonOlder
diff --git a/pkgs/development/python-modules/certbot-dns-rfc2136/default.nix b/pkgs/development/python-modules/certbot-dns-rfc2136/default.nix
index c7f47dc7a398..f3da841667ba 100644
--- a/pkgs/development/python-modules/certbot-dns-rfc2136/default.nix
+++ b/pkgs/development/python-modules/certbot-dns-rfc2136/default.nix
@@ -2,7 +2,6 @@
 , acme
 , certbot
 , dnspython
-, isPy3k
 , pytestCheckHook
 , pythonOlder
 }:
diff --git a/pkgs/development/python-modules/certbot-dns-route53/default.nix b/pkgs/development/python-modules/certbot-dns-route53/default.nix
index 9644e99a10df..7052107418c9 100644
--- a/pkgs/development/python-modules/certbot-dns-route53/default.nix
+++ b/pkgs/development/python-modules/certbot-dns-route53/default.nix
@@ -2,7 +2,6 @@
 , acme
 , boto3
 , certbot
-, isPy3k
 , pytestCheckHook
 , pythonOlder
 }:
diff --git a/pkgs/development/python-modules/cftime/default.nix b/pkgs/development/python-modules/cftime/default.nix
index 2196ddedc3ce..aeebc762701f 100644
--- a/pkgs/development/python-modules/cftime/default.nix
+++ b/pkgs/development/python-modules/cftime/default.nix
@@ -5,7 +5,6 @@
 , pytest-cov
 , cython
 , numpy
-, python
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/cirq-aqt/default.nix b/pkgs/development/python-modules/cirq-aqt/default.nix
index 1dff0a121ffd..a240ce47d7e5 100644
--- a/pkgs/development/python-modules/cirq-aqt/default.nix
+++ b/pkgs/development/python-modules/cirq-aqt/default.nix
@@ -1,8 +1,5 @@
-{ lib
-, buildPythonPackage
+{ buildPythonPackage
 , cirq-core
-, pythonOlder
-, fetchFromGitHub
 , requests
 , pytestCheckHook
 }:
diff --git a/pkgs/development/python-modules/cirq-core/default.nix b/pkgs/development/python-modules/cirq-core/default.nix
index eae189ce4044..83674eb8c763 100644
--- a/pkgs/development/python-modules/cirq-core/default.nix
+++ b/pkgs/development/python-modules/cirq-core/default.nix
@@ -3,6 +3,7 @@
 , buildPythonPackage
 , pythonOlder
 , fetchFromGitHub
+, fetchpatch
 , duet
 , matplotlib
 , networkx
@@ -43,6 +44,22 @@ buildPythonPackage rec {
 
   sourceRoot = "source/${pname}";
 
+  patches = [
+    # present in upstream master - remove after 0.13.1
+    (fetchpatch {
+      name = "fix-test-tolerances.part-1.patch";
+      url = "https://github.com/quantumlib/Cirq/commit/eb1d9031e55d3c8801ea44abbb6a4132b2fc5126.patch";
+      sha256 = "0ka24v6dfxnap9p07ni32z9zccbmw0lbrp5mcknmpsl12hza98xm";
+      stripLen = 1;
+    })
+    (fetchpatch {
+      name = "fix-test-tolerances.part-2.patch";
+      url = "https://github.com/quantumlib/Cirq/commit/a28d601b2bcfc393336375c53e5915fd16455395.patch";
+      sha256 = "0k2dqsm4ydn6556d40kc8j04jgjn59z4wqqg1jn1r916a7yxw493";
+      stripLen = 1;
+    })
+  ];
+
   postPatch = ''
     substituteInPlace requirements.txt \
       --replace "matplotlib~=3.0" "matplotlib" \
@@ -84,10 +101,6 @@ buildPythonPackage rec {
   disabledTests = [
     "test_metadata_search_path" # tries to import flynt, which isn't in Nixpkgs
     "test_benchmark_2q_xeb_fidelities" # fails due pandas MultiIndex. Maybe issue with pandas version in nix?
-  ] ++ lib.optionals stdenv.hostPlatform.isAarch64 [
-    # Seem to fail due to math issues on aarch64?
-    "expectation_from_wavefunction"
-    "test_single_qubit_op_to_framed_phase_form_output_on_example_case"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/cirq-google/default.nix b/pkgs/development/python-modules/cirq-google/default.nix
index 34c6c3f09df5..5c8306c27fe9 100644
--- a/pkgs/development/python-modules/cirq-google/default.nix
+++ b/pkgs/development/python-modules/cirq-google/default.nix
@@ -1,6 +1,4 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
+{ buildPythonPackage
 , cirq-core
 , google-api-core
 , protobuf
diff --git a/pkgs/development/python-modules/cirq-ionq/default.nix b/pkgs/development/python-modules/cirq-ionq/default.nix
index 28451bdbb9c3..24ced1859580 100644
--- a/pkgs/development/python-modules/cirq-ionq/default.nix
+++ b/pkgs/development/python-modules/cirq-ionq/default.nix
@@ -1,8 +1,5 @@
-{ lib
-, buildPythonPackage
+{ buildPythonPackage
 , cirq-core
-, pythonOlder
-, fetchFromGitHub
 , requests
 , pytestCheckHook
 }:
diff --git a/pkgs/development/python-modules/cirq-pasqal/default.nix b/pkgs/development/python-modules/cirq-pasqal/default.nix
index d51cd21ff1e5..0743ee02dc74 100644
--- a/pkgs/development/python-modules/cirq-pasqal/default.nix
+++ b/pkgs/development/python-modules/cirq-pasqal/default.nix
@@ -1,8 +1,5 @@
-{ lib
-, buildPythonPackage
+{ buildPythonPackage
 , cirq-core
-, pythonOlder
-, fetchFromGitHub
 , requests
 , pytestCheckHook
 }:
diff --git a/pkgs/development/python-modules/cirq-rigetti/default.nix b/pkgs/development/python-modules/cirq-rigetti/default.nix
index dbd93fdfa2fc..f2fd48d54176 100644
--- a/pkgs/development/python-modules/cirq-rigetti/default.nix
+++ b/pkgs/development/python-modules/cirq-rigetti/default.nix
@@ -1,8 +1,5 @@
-{ lib
-, buildPythonPackage
+{ buildPythonPackage
 , cirq-core
-, pythonOlder
-, fetchFromGitHub
 , requests
 , pytestCheckHook
 , attrs
diff --git a/pkgs/development/python-modules/cirq-web/default.nix b/pkgs/development/python-modules/cirq-web/default.nix
index 551a799933f0..aa61157fe0d7 100644
--- a/pkgs/development/python-modules/cirq-web/default.nix
+++ b/pkgs/development/python-modules/cirq-web/default.nix
@@ -1,8 +1,5 @@
-{ lib
-, buildPythonPackage
+{ buildPythonPackage
 , cirq-core
-, pythonOlder
-, fetchFromGitHub
 , pytestCheckHook
 }:
 
diff --git a/pkgs/development/python-modules/cirq/default.nix b/pkgs/development/python-modules/cirq/default.nix
index bd6a06cd95d5..6e428eeb4ef6 100644
--- a/pkgs/development/python-modules/cirq/default.nix
+++ b/pkgs/development/python-modules/cirq/default.nix
@@ -1,5 +1,4 @@
-{ lib
-, buildPythonPackage
+{ buildPythonPackage
 , cirq-aqt
 , cirq-core
 , cirq-google
diff --git a/pkgs/development/python-modules/cleo/default.nix b/pkgs/development/python-modules/cleo/default.nix
index 3e46b900dc7c..e79983b1bb29 100644
--- a/pkgs/development/python-modules/cleo/default.nix
+++ b/pkgs/development/python-modules/cleo/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchPypi
-, pylev, pastel, clikit }:
+, clikit }:
 
 buildPythonPackage rec {
   pname = "cleo";
diff --git a/pkgs/development/python-modules/cliff/tests.nix b/pkgs/development/python-modules/cliff/tests.nix
index f7cc0226f2fc..b981e78be0c7 100644
--- a/pkgs/development/python-modules/cliff/tests.nix
+++ b/pkgs/development/python-modules/cliff/tests.nix
@@ -1,5 +1,4 @@
-{ stdenv
-, buildPythonPackage
+{ buildPythonPackage
 , cliff
 , docutils
 , stestr
diff --git a/pkgs/development/python-modules/cock/default.nix b/pkgs/development/python-modules/cock/default.nix
index 683234b88727..e7428823ad9e 100644
--- a/pkgs/development/python-modules/cock/default.nix
+++ b/pkgs/development/python-modules/cock/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, locale, pytestCheckHook, click, sortedcontainers, pyyaml }:
+{ lib, buildPythonPackage, fetchPypi, click, sortedcontainers, pyyaml }:
 
 buildPythonPackage rec {
   pname = "cock";
diff --git a/pkgs/development/python-modules/cocotb-bus/default.nix b/pkgs/development/python-modules/cocotb-bus/default.nix
index 3ee4d35e3e4e..a0c4767fe7de 100644
--- a/pkgs/development/python-modules/cocotb-bus/default.nix
+++ b/pkgs/development/python-modules/cocotb-bus/default.nix
@@ -1,5 +1,4 @@
 { lib
-, stdenv
 , buildPythonPackage
 , fetchPypi
 }:
diff --git a/pkgs/development/python-modules/colanderalchemy/default.nix b/pkgs/development/python-modules/colanderalchemy/default.nix
index a3fa33f327c5..20f45f1fa75f 100644
--- a/pkgs/development/python-modules/colanderalchemy/default.nix
+++ b/pkgs/development/python-modules/colanderalchemy/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, unittest2
 , colander
 , sqlalchemy
 }:
diff --git a/pkgs/development/python-modules/colorcet/default.nix b/pkgs/development/python-modules/colorcet/default.nix
index 6135730beb00..42945e8a152a 100644
--- a/pkgs/development/python-modules/colorcet/default.nix
+++ b/pkgs/development/python-modules/colorcet/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, nbsmoke
 , param
 , pyct
 , pytest-mpl
diff --git a/pkgs/development/python-modules/colormath/default.nix b/pkgs/development/python-modules/colormath/default.nix
index 80f58250be4d..b749761da06c 100644
--- a/pkgs/development/python-modules/colormath/default.nix
+++ b/pkgs/development/python-modules/colormath/default.nix
@@ -4,7 +4,6 @@
 , nose
 , numpy
 , lib
-, pytest
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/colorspacious/default.nix b/pkgs/development/python-modules/colorspacious/default.nix
index 3ce0bddf1def..6f75d343066a 100644
--- a/pkgs/development/python-modules/colorspacious/default.nix
+++ b/pkgs/development/python-modules/colorspacious/default.nix
@@ -1,5 +1,4 @@
-{ lib, pkgs, buildPythonPackage, fetchPypi, isPy3k
-, numpy
+{ lib, buildPythonPackage, fetchPypi, numpy
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/consonance/default.nix b/pkgs/development/python-modules/consonance/default.nix
index 3940686f18c7..7722226ef3f1 100644
--- a/pkgs/development/python-modules/consonance/default.nix
+++ b/pkgs/development/python-modules/consonance/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, lib, fetchFromGitHub, pytest, dissononce, python-axolotl-curve25519
+{ buildPythonPackage, lib, fetchFromGitHub, dissononce, python-axolotl-curve25519
 , transitions, protobuf, nose
 }:
 
diff --git a/pkgs/development/python-modules/construct/2.10.54.nix b/pkgs/development/python-modules/construct/2.10.54.nix
index b4eaeaec3910..30d303b60cd0 100644
--- a/pkgs/development/python-modules/construct/2.10.54.nix
+++ b/pkgs/development/python-modules/construct/2.10.54.nix
@@ -1,5 +1,5 @@
-{ lib, stdenv, buildPythonPackage, fetchFromGitHub, pythonOlder
-, six, pytestCheckHook, pytest-benchmark, enum34, numpy, arrow, ruamel-yaml
+{ lib, stdenv, buildPythonPackage, fetchFromGitHub
+, pytestCheckHook, pytest-benchmark, enum34, numpy, arrow, ruamel-yaml
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/construct/default.nix b/pkgs/development/python-modules/construct/default.nix
index 47ae573e24c2..b2783fa09346 100644
--- a/pkgs/development/python-modules/construct/default.nix
+++ b/pkgs/development/python-modules/construct/default.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, buildPythonPackage, fetchFromGitHub, pythonOlder
-, six, pytestCheckHook, pytest-benchmark, numpy, arrow, ruamel-yaml
+, pytestCheckHook, pytest-benchmark, numpy, arrow, ruamel-yaml
 , lz4, cloudpickle
 }:
 
diff --git a/pkgs/development/python-modules/crashtest/default.nix b/pkgs/development/python-modules/crashtest/default.nix
index 9981b56f2c09..5b084cdd8c84 100644
--- a/pkgs/development/python-modules/crashtest/default.nix
+++ b/pkgs/development/python-modules/crashtest/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchPypi, pythonAtLeast, pytest }:
+{ lib, buildPythonPackage, fetchPypi, pythonAtLeast }:
 
 buildPythonPackage rec {
   pname = "crashtest";
diff --git a/pkgs/development/python-modules/crownstone-sse/default.nix b/pkgs/development/python-modules/crownstone-sse/default.nix
index ef2e2cbc240c..ff101713cfed 100644
--- a/pkgs/development/python-modules/crownstone-sse/default.nix
+++ b/pkgs/development/python-modules/crownstone-sse/default.nix
@@ -5,7 +5,6 @@
 , certifi
 , fetchFromGitHub
 , pythonOlder
-, coverage
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/cryptography/3.3.nix b/pkgs/development/python-modules/cryptography/3.3.nix
index 049718520753..357bb35dacf7 100644
--- a/pkgs/development/python-modules/cryptography/3.3.nix
+++ b/pkgs/development/python-modules/cryptography/3.3.nix
@@ -1,7 +1,6 @@
 { lib, stdenv
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , isPy27
 , ipaddress
 , openssl
@@ -9,7 +8,6 @@
 , darwin
 , packaging
 , six
-, pythonOlder
 , isPyPy
 , cffi
 , pytest
diff --git a/pkgs/development/python-modules/cryptography/default.nix b/pkgs/development/python-modules/cryptography/default.nix
index 2fea6e89494d..eddd7e0b4402 100644
--- a/pkgs/development/python-modules/cryptography/default.nix
+++ b/pkgs/development/python-modules/cryptography/default.nix
@@ -1,7 +1,6 @@
 { lib, stdenv
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , rustPlatform
 , setuptools-rust
 , openssl
@@ -9,7 +8,6 @@
 , darwin
 , packaging
 , six
-, pythonOlder
 , isPyPy
 , cffi
 , pytest
diff --git a/pkgs/development/python-modules/cytoolz/default.nix b/pkgs/development/python-modules/cytoolz/default.nix
index 4e862d260927..86ee238eb10f 100644
--- a/pkgs/development/python-modules/cytoolz/default.nix
+++ b/pkgs/development/python-modules/cytoolz/default.nix
@@ -5,7 +5,6 @@
 , nose
 , toolz
 , python
-, fetchpatch
 , isPy27
 }:
 
diff --git a/pkgs/development/python-modules/dash/default.nix b/pkgs/development/python-modules/dash/default.nix
index 7a8b71346353..3fd9d2a41d58 100644
--- a/pkgs/development/python-modules/dash/default.nix
+++ b/pkgs/development/python-modules/dash/default.nix
@@ -4,9 +4,7 @@
 , plotly
 , flask
 , flask-compress
-, future
 , dash-core-components
-, dash-renderer
 , dash-html-components
 , dash-table
 , pytest-mock
diff --git a/pkgs/development/python-modules/datatable/default.nix b/pkgs/development/python-modules/datatable/default.nix
index 60eb0df1d09d..0cc7d43d5049 100644
--- a/pkgs/development/python-modules/datatable/default.nix
+++ b/pkgs/development/python-modules/datatable/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi, substituteAll, pythonOlder
+{ stdenv, lib, buildPythonPackage, fetchPypi, pythonOlder
 , pipInstallHook, writeText
 , blessed
 , docutils
diff --git a/pkgs/development/python-modules/dateparser/default.nix b/pkgs/development/python-modules/dateparser/default.nix
index f75a355c2184..467ed5184c11 100644
--- a/pkgs/development/python-modules/dateparser/default.nix
+++ b/pkgs/development/python-modules/dateparser/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , isPy3k
 , fetchFromGitHub
-, fetchpatch
 , python-dateutil
 , pytz
 , regex
diff --git a/pkgs/development/python-modules/debian-inspector/default.nix b/pkgs/development/python-modules/debian-inspector/default.nix
index b91e26f71467..0da7f634d848 100644
--- a/pkgs/development/python-modules/debian-inspector/default.nix
+++ b/pkgs/development/python-modules/debian-inspector/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pythonAtLeast
 , chardet
 , attrs
 , commoncode
diff --git a/pkgs/development/python-modules/debtcollector/tests.nix b/pkgs/development/python-modules/debtcollector/tests.nix
index cc3171da6d6e..21d49ac983ab 100644
--- a/pkgs/development/python-modules/debtcollector/tests.nix
+++ b/pkgs/development/python-modules/debtcollector/tests.nix
@@ -1,5 +1,4 @@
-{ stdenv
-, buildPythonPackage
+{ buildPythonPackage
 , debtcollector
 , stestr
 }:
diff --git a/pkgs/development/python-modules/deep_merge/default.nix b/pkgs/development/python-modules/deep_merge/default.nix
index 533bc6aa3477..2c59d4ab6955 100644
--- a/pkgs/development/python-modules/deep_merge/default.nix
+++ b/pkgs/development/python-modules/deep_merge/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, nose }:
+{ lib, buildPythonPackage, fetchPypi, nose }:
 
 buildPythonPackage rec {
   pname = "deep_merge";
diff --git a/pkgs/development/python-modules/delegator-py/default.nix b/pkgs/development/python-modules/delegator-py/default.nix
index 3521e8ce1298..89cbd991a663 100644
--- a/pkgs/development/python-modules/delegator-py/default.nix
+++ b/pkgs/development/python-modules/delegator-py/default.nix
@@ -2,7 +2,6 @@
 , lib
 , fetchFromGitHub
 , pexpect
-, pytest
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/deltachat/default.nix b/pkgs/development/python-modules/deltachat/default.nix
index 78f42bdfceb0..381bcf66a5c0 100644
--- a/pkgs/development/python-modules/deltachat/default.nix
+++ b/pkgs/development/python-modules/deltachat/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , isPy27
-, fetchpatch
 , setuptools-scm
 , libdeltachat
 , cffi
diff --git a/pkgs/development/python-modules/devolo-home-control-api/default.nix b/pkgs/development/python-modules/devolo-home-control-api/default.nix
index 751ebaae292c..b71ce7c6c271 100644
--- a/pkgs/development/python-modules/devolo-home-control-api/default.nix
+++ b/pkgs/development/python-modules/devolo-home-control-api/default.nix
@@ -1,5 +1,4 @@
 { lib
-, aiohttp
 , buildPythonPackage
 , fetchFromGitHub
 , pytest-mock
diff --git a/pkgs/development/python-modules/digitalocean/default.nix b/pkgs/development/python-modules/digitalocean/default.nix
index f87298cf0875..5e45a1785a95 100644
--- a/pkgs/development/python-modules/digitalocean/default.nix
+++ b/pkgs/development/python-modules/digitalocean/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, fetchPypi
 , isPy3k
 , jsonpickle
 , mock
diff --git a/pkgs/development/python-modules/django-cleanup/default.nix b/pkgs/development/python-modules/django-cleanup/default.nix
index faddf5620814..240598cf1841 100644
--- a/pkgs/development/python-modules/django-cleanup/default.nix
+++ b/pkgs/development/python-modules/django-cleanup/default.nix
@@ -1,5 +1,4 @@
 { lib, buildPythonPackage, fetchPypi, django
-, redis, async-timeout, hiredis
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/django-extensions/default.nix b/pkgs/development/python-modules/django-extensions/default.nix
index cbe5dfbaa70b..541f0434ec00 100644
--- a/pkgs/development/python-modules/django-extensions/default.nix
+++ b/pkgs/development/python-modules/django-extensions/default.nix
@@ -1,5 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, python
-, django
+{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, django
 , factory_boy
 , glibcLocales
 , mock
diff --git a/pkgs/development/python-modules/django-formtools/default.nix b/pkgs/development/python-modules/django-formtools/default.nix
index faca36c2a98b..311fae425a5e 100644
--- a/pkgs/development/python-modules/django-formtools/default.nix
+++ b/pkgs/development/python-modules/django-formtools/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi, django, python }:
+{ lib, buildPythonPackage, fetchPypi, django, python }:
 
 buildPythonPackage rec {
   pname = "django-formtools";
diff --git a/pkgs/development/python-modules/django-paintstore/default.nix b/pkgs/development/python-modules/django-paintstore/default.nix
index 8790067e4af0..28a773a5c01b 100644
--- a/pkgs/development/python-modules/django-paintstore/default.nix
+++ b/pkgs/development/python-modules/django-paintstore/default.nix
@@ -1,5 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, requests, requests_oauthlib
-, django, python3-openid }:
+{ lib, buildPythonPackage, fetchPypi }:
 
 buildPythonPackage rec {
   pname = "django-paintstore";
diff --git a/pkgs/development/python-modules/django-prometheus/default.nix b/pkgs/development/python-modules/django-prometheus/default.nix
index bd97f2a73614..8708a95a4798 100644
--- a/pkgs/development/python-modules/django-prometheus/default.nix
+++ b/pkgs/development/python-modules/django-prometheus/default.nix
@@ -3,7 +3,6 @@
 , pythonOlder
 , fetchFromGitHub
 , prometheus-client
-, psycopg2
 , pytest-django
 , pytestCheckHook
 }:
diff --git a/pkgs/development/python-modules/django-ranged-response/default.nix b/pkgs/development/python-modules/django-ranged-response/default.nix
index df5fc4b205b1..5fb0545f1fee 100644
--- a/pkgs/development/python-modules/django-ranged-response/default.nix
+++ b/pkgs/development/python-modules/django-ranged-response/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchurl, fetchPypi, buildPythonPackage, django }:
+{ lib, fetchPypi, buildPythonPackage, django }:
 
 buildPythonPackage rec {
   pname = "django-ranged-response";
diff --git a/pkgs/development/python-modules/django-statici18n/default.nix b/pkgs/development/python-modules/django-statici18n/default.nix
index 88c63319a89d..95b860a3331d 100644
--- a/pkgs/development/python-modules/django-statici18n/default.nix
+++ b/pkgs/development/python-modules/django-statici18n/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi, django, django_appconf }:
+{ lib, buildPythonPackage, fetchPypi, django, django_appconf }:
 
 buildPythonPackage rec {
   pname = "django-statici18n";
diff --git a/pkgs/development/python-modules/django-tables2/default.nix b/pkgs/development/python-modules/django-tables2/default.nix
index 5cd1db3e7194..41637e7472ca 100644
--- a/pkgs/development/python-modules/django-tables2/default.nix
+++ b/pkgs/development/python-modules/django-tables2/default.nix
@@ -4,7 +4,6 @@
 , fetchFromGitHub
 , django
 , tablib
-, django-filter
 , python
 }:
 
diff --git a/pkgs/development/python-modules/django-taggit/default.nix b/pkgs/development/python-modules/django-taggit/default.nix
index e410b72437c0..7f7cfd2b4bcb 100644
--- a/pkgs/development/python-modules/django-taggit/default.nix
+++ b/pkgs/development/python-modules/django-taggit/default.nix
@@ -4,8 +4,6 @@
 , fetchPypi
 , django
 , djangorestframework
-, mock
-, isort
 , python
 }:
 
diff --git a/pkgs/development/python-modules/dlib/default.nix b/pkgs/development/python-modules/dlib/default.nix
index 58ceb16870a8..642794835654 100644
--- a/pkgs/development/python-modules/dlib/default.nix
+++ b/pkgs/development/python-modules/dlib/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, stdenv, lib, dlib, python, pytest, more-itertools
+{ stdenv, buildPythonPackage, dlib, python, pytest, more-itertools
 , sse4Support ? stdenv.hostPlatform.sse4_1Support
 , avxSupport ? stdenv.hostPlatform.avxSupport
 }:
diff --git a/pkgs/development/python-modules/dnspython/1.nix b/pkgs/development/python-modules/dnspython/1.nix
index 5ff02c043380..d4015f1f4ab6 100644
--- a/pkgs/development/python-modules/dnspython/1.nix
+++ b/pkgs/development/python-modules/dnspython/1.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pythonOlder
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/docutils/default.nix b/pkgs/development/python-modules/docutils/default.nix
index 292fc34e3281..529a09d3f046 100644
--- a/pkgs/development/python-modules/docutils/default.nix
+++ b/pkgs/development/python-modules/docutils/default.nix
@@ -3,7 +3,6 @@
 , fetchPypi
 , buildPythonPackage
 , isPy3k
-, isPy38
 , python
 }:
 
diff --git a/pkgs/development/python-modules/downloader-cli/default.nix b/pkgs/development/python-modules/downloader-cli/default.nix
index 608286c8bcf6..e0c25c77e53c 100644
--- a/pkgs/development/python-modules/downloader-cli/default.nix
+++ b/pkgs/development/python-modules/downloader-cli/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, urllib3, pytest }:
+{ lib, buildPythonPackage, fetchFromGitHub, urllib3 }:
 
 buildPythonPackage rec {
   pname = "downloader-cli";
diff --git a/pkgs/development/python-modules/ephem/default.nix b/pkgs/development/python-modules/ephem/default.nix
index 4a8085e0d72b..58c14699880e 100644
--- a/pkgs/development/python-modules/ephem/default.nix
+++ b/pkgs/development/python-modules/ephem/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, isPy3k
 , glibcLocales
 , pytest
 }:
diff --git a/pkgs/development/python-modules/etelemetry/default.nix b/pkgs/development/python-modules/etelemetry/default.nix
index 869c6ccba92c..ed093f182e32 100644
--- a/pkgs/development/python-modules/etelemetry/default.nix
+++ b/pkgs/development/python-modules/etelemetry/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27, ci-info, ci-py, requests, pytest }:
+{ lib, buildPythonPackage, fetchPypi, isPy27, ci-info, ci-py, requests }:
 
 buildPythonPackage rec {
   version = "0.2.1";
diff --git a/pkgs/development/python-modules/eth-hash/default.nix b/pkgs/development/python-modules/eth-hash/default.nix
index 618c39f3b734..622dd0b37353 100644
--- a/pkgs/development/python-modules/eth-hash/default.nix
+++ b/pkgs/development/python-modules/eth-hash/default.nix
@@ -1,6 +1,5 @@
 { lib, fetchPypi, buildPythonPackage, pythonOlder, pytest, pysha3, pycrypto
 , pycryptodome
-, eth-utils
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/extractcode/libarchive.nix b/pkgs/development/python-modules/extractcode/libarchive.nix
index 2cff60f3d811..efb314fa4c5b 100644
--- a/pkgs/development/python-modules/extractcode/libarchive.nix
+++ b/pkgs/development/python-modules/extractcode/libarchive.nix
@@ -10,7 +10,6 @@
 , zlib
 , zstd
 , plugincode
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/fastprogress/default.nix b/pkgs/development/python-modules/fastprogress/default.nix
index 9b43c05989f6..2164bc93f622 100644
--- a/pkgs/development/python-modules/fastprogress/default.nix
+++ b/pkgs/development/python-modules/fastprogress/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , numpy
-, pytest
 , pythonOlder
 }:
 
diff --git a/pkgs/development/python-modules/fasttext/default.nix b/pkgs/development/python-modules/fasttext/default.nix
index e478b3f9a4b6..c360c364d8b9 100644
--- a/pkgs/development/python-modules/fasttext/default.nix
+++ b/pkgs/development/python-modules/fasttext/default.nix
@@ -1,4 +1,4 @@
-{lib, buildPythonPackage, fetchFromGitHub, numpy, pkgs, pybind11 }:
+{lib, buildPythonPackage, numpy, pkgs, pybind11 }:
 
 buildPythonPackage rec {
   inherit (pkgs.fasttext) pname version src;
diff --git a/pkgs/development/python-modules/fire/default.nix b/pkgs/development/python-modules/fire/default.nix
index bf3be8a69072..252b180c4e06 100644
--- a/pkgs/development/python-modules/fire/default.nix
+++ b/pkgs/development/python-modules/fire/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch, six, hypothesis, mock
+{ lib, buildPythonPackage, fetchFromGitHub, six, hypothesis, mock
 , python-Levenshtein, pytest, termcolor, isPy27, enum34 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/flake8-debugger/default.nix b/pkgs/development/python-modules/flake8-debugger/default.nix
index 46c63ec00085..67f4ea529f10 100644
--- a/pkgs/development/python-modules/flake8-debugger/default.nix
+++ b/pkgs/development/python-modules/flake8-debugger/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchPypi, buildPythonPackage, pythonOlder, pythonAtLeast, isPy27
+{ lib, fetchPypi, buildPythonPackage, isPy27
 , flake8
 , pycodestyle
 , six
diff --git a/pkgs/development/python-modules/flit-core/default.nix b/pkgs/development/python-modules/flit-core/default.nix
index 7b2731595629..7cb9ed2c6c45 100644
--- a/pkgs/development/python-modules/flit-core/default.nix
+++ b/pkgs/development/python-modules/flit-core/default.nix
@@ -3,8 +3,6 @@
 , callPackage
 , flit
 , toml
-, pytestCheckHook
-, testpath
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/flit/default.nix b/pkgs/development/python-modules/flit/default.nix
index 38369dfd4d2f..0a6d1ba3158a 100644
--- a/pkgs/development/python-modules/flit/default.nix
+++ b/pkgs/development/python-modules/flit/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
-, isPy3k
 , docutils
 , requests
 , requests_download
diff --git a/pkgs/development/python-modules/freezegun/0.3.nix b/pkgs/development/python-modules/freezegun/0.3.nix
index c4444805009d..7f77616f2a4e 100644
--- a/pkgs/development/python-modules/freezegun/0.3.nix
+++ b/pkgs/development/python-modules/freezegun/0.3.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, isPy27
 , python-dateutil
 , six
 , mock
diff --git a/pkgs/development/python-modules/frozendict/default.nix b/pkgs/development/python-modules/frozendict/default.nix
index 4e486ae6016e..b25b78e0ccc3 100644
--- a/pkgs/development/python-modules/frozendict/default.nix
+++ b/pkgs/development/python-modules/frozendict/default.nix
@@ -3,7 +3,6 @@
 , fetchPypi
 , isPy3k
 , pytestCheckHook
-, setuptoolsBuildHook
 , python
 }:
 
diff --git a/pkgs/development/python-modules/gaphas/default.nix b/pkgs/development/python-modules/gaphas/default.nix
new file mode 100644
index 000000000000..a6351aeeadd7
--- /dev/null
+++ b/pkgs/development/python-modules/gaphas/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, poetry-core
+, gobject-introspection
+, gtk3
+, pycairo
+, pygobject3
+, typing-extensions
+}:
+
+buildPythonPackage rec {
+  pname = "gaphas";
+  version = "3.1.9";
+  disabled = pythonOlder "3.7";
+
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-S6cRsfqXYM4mSVSs2M8fET5ShFClKkGkod2w2y6F2gc=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  buildInputs = [ gobject-introspection gtk3 ];
+
+  propagatedBuildInputs = [
+    pycairo
+    pygobject3
+    typing-extensions
+  ];
+
+  pythonImportsCheck = [ "gaphas" ];
+
+  meta = with lib; {
+    description = "GTK+ based diagramming widget";
+    maintainers = with maintainers; [ wolfangaukang ];
+    homepage = "https://github.com/gaphor/gaphas";
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/python-modules/gbinder-python/default.nix b/pkgs/development/python-modules/gbinder-python/default.nix
index caa848a19a39..42832ff45144 100644
--- a/pkgs/development/python-modules/gbinder-python/default.nix
+++ b/pkgs/development/python-modules/gbinder-python/default.nix
@@ -1,5 +1,4 @@
-{ stdenv
-, lib
+{ lib
 , fetchFromGitHub
 , buildPythonPackage
 , cython
diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix
new file mode 100644
index 000000000000..87dca630a1b8
--- /dev/null
+++ b/pkgs/development/python-modules/generic/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "generic";
+  version = "1.0.1";
+  disabled = pythonOlder "3.7";
+
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-ex93I+ofo5lP6qoolZwzjxSspeqJimY3vpB32RLJ00k=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  pythonImportsCheck = [ "generic" ];
+
+  meta = with lib; {
+    description = "Generic programming (Multiple dispatch) library for Python";
+    maintainers = with maintainers; [ wolfangaukang ];
+    homepage = "https://github.com/gaphor/generic";
+    license = licenses.bsdOriginal;
+  };
+}
diff --git a/pkgs/development/python-modules/gevent-websocket/default.nix b/pkgs/development/python-modules/gevent-websocket/default.nix
index 24af4416ab3c..5e93fb32b9e7 100644
--- a/pkgs/development/python-modules/gevent-websocket/default.nix
+++ b/pkgs/development/python-modules/gevent-websocket/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, isPy3k
 , gevent
 , gunicorn
 }:
diff --git a/pkgs/development/python-modules/glcontext/default.nix b/pkgs/development/python-modules/glcontext/default.nix
index c5a06fb6499a..32fdae1b3f2c 100644
--- a/pkgs/development/python-modules/glcontext/default.nix
+++ b/pkgs/development/python-modules/glcontext/default.nix
@@ -4,8 +4,6 @@
 , isPy3k
 , libGL
 , libX11
-, pytestCheckHook
-, psutil
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/glom/default.nix b/pkgs/development/python-modules/glom/default.nix
index 89f0de474901..d30a0c7eb1cb 100644
--- a/pkgs/development/python-modules/glom/default.nix
+++ b/pkgs/development/python-modules/glom/default.nix
@@ -6,7 +6,6 @@
 , face
 , pytest
 , pyyaml
-, isPy37
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/gmpy2/default.nix b/pkgs/development/python-modules/gmpy2/default.nix
index 204415d75315..c4b0dbf200b3 100644
--- a/pkgs/development/python-modules/gmpy2/default.nix
+++ b/pkgs/development/python-modules/gmpy2/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , isPyPy
 , gmp
 , mpfr
diff --git a/pkgs/development/python-modules/gntp/default.nix b/pkgs/development/python-modules/gntp/default.nix
index cde1f9bb8ca6..364a59732e11 100644
--- a/pkgs/development/python-modules/gntp/default.nix
+++ b/pkgs/development/python-modules/gntp/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, nose }:
+{ lib, buildPythonPackage, fetchPypi }:
 
 buildPythonPackage rec {
   pname = "gntp";
diff --git a/pkgs/development/python-modules/google-api-core/default.nix b/pkgs/development/python-modules/google-api-core/default.nix
index b434a92923cb..ae6f465b1bf2 100644
--- a/pkgs/development/python-modules/google-api-core/default.nix
+++ b/pkgs/development/python-modules/google-api-core/default.nix
@@ -8,7 +8,6 @@
 , proto-plus
 , requests
 , mock
-, pytest
 , pytest-asyncio
 , pytestCheckHook
 }:
diff --git a/pkgs/development/python-modules/google-auth-httplib2/default.nix b/pkgs/development/python-modules/google-auth-httplib2/default.nix
index ceaec714176f..0109175ab85c 100644
--- a/pkgs/development/python-modules/google-auth-httplib2/default.nix
+++ b/pkgs/development/python-modules/google-auth-httplib2/default.nix
@@ -1,5 +1,4 @@
 { lib
-, isPy3k
 , buildPythonPackage
 , fetchPypi
 , flask
diff --git a/pkgs/development/python-modules/google-auth/default.nix b/pkgs/development/python-modules/google-auth/default.nix
index 69cd26625093..076d1e2da4f7 100644
--- a/pkgs/development/python-modules/google-auth/default.nix
+++ b/pkgs/development/python-modules/google-auth/default.nix
@@ -1,7 +1,6 @@
 { stdenv
 , lib
 , buildPythonPackage
-, fetchpatch
 , fetchPypi
 , pytestCheckHook
 , cachetools
diff --git a/pkgs/development/python-modules/google-cloud-appengine-logging/default.nix b/pkgs/development/python-modules/google-cloud-appengine-logging/default.nix
index 97ed622f5ff6..67296f667ab2 100644
--- a/pkgs/development/python-modules/google-cloud-appengine-logging/default.nix
+++ b/pkgs/development/python-modules/google-cloud-appengine-logging/default.nix
@@ -7,7 +7,6 @@
 , proto-plus
 , pytest-asyncio
 , pytestCheckHook
-, pythonOlder
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix b/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix
index 5d09d4fd8c71..32988e35deac 100644
--- a/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix
+++ b/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix
@@ -7,7 +7,6 @@
 , proto-plus
 , pytest-asyncio
 , pytestCheckHook
-, pythonOlder
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/google-cloud-core/default.nix b/pkgs/development/python-modules/google-cloud-core/default.nix
index 657fe314b94e..ef02d0671b05 100644
--- a/pkgs/development/python-modules/google-cloud-core/default.nix
+++ b/pkgs/development/python-modules/google-cloud-core/default.nix
@@ -1,11 +1,8 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pythonOlder
 , pytestCheckHook
-, python
 , google-api-core
-, grpcio
 , mock
 }:
 
diff --git a/pkgs/development/python-modules/google-cloud-iam-logging/default.nix b/pkgs/development/python-modules/google-cloud-iam-logging/default.nix
index 7b5484065922..47ca59ab2a21 100644
--- a/pkgs/development/python-modules/google-cloud-iam-logging/default.nix
+++ b/pkgs/development/python-modules/google-cloud-iam-logging/default.nix
@@ -7,7 +7,6 @@
 , proto-plus
 , pytest-asyncio
 , pytestCheckHook
-, pythonOlder
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/google-cloud-logging/default.nix b/pkgs/development/python-modules/google-cloud-logging/default.nix
index 4a897327c0ff..759230a2e857 100644
--- a/pkgs/development/python-modules/google-cloud-logging/default.nix
+++ b/pkgs/development/python-modules/google-cloud-logging/default.nix
@@ -12,7 +12,6 @@
 , proto-plus
 , pytestCheckHook
 , pytest-asyncio
-, webapp2
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/google-cloud-org-policy/default.nix b/pkgs/development/python-modules/google-cloud-org-policy/default.nix
index 7ef5038e271a..c0870c97f072 100644
--- a/pkgs/development/python-modules/google-cloud-org-policy/default.nix
+++ b/pkgs/development/python-modules/google-cloud-org-policy/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder, google-api-core, mock, proto-plus, protobuf, pytest-asyncio }:
+{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, google-api-core, mock, proto-plus, protobuf, pytest-asyncio }:
 
 buildPythonPackage rec {
   pname = "google-cloud-org-policy";
diff --git a/pkgs/development/python-modules/google-cloud-translate/default.nix b/pkgs/development/python-modules/google-cloud-translate/default.nix
index 22694071d300..c59f47e56bfc 100644
--- a/pkgs/development/python-modules/google-cloud-translate/default.nix
+++ b/pkgs/development/python-modules/google-cloud-translate/default.nix
@@ -5,7 +5,6 @@
 , google-api-core
 , google-cloud-core
 , google-cloud-testutils
-, grpcio
 , libcst
 , mock
 , proto-plus
diff --git a/pkgs/development/python-modules/graph-tool/2.x.x.nix b/pkgs/development/python-modules/graph-tool/2.x.x.nix
index 50d5f0f966b6..bcf1664b690e 100644
--- a/pkgs/development/python-modules/graph-tool/2.x.x.nix
+++ b/pkgs/development/python-modules/graph-tool/2.x.x.nix
@@ -2,8 +2,6 @@
 , pkg-config, boost, expat, scipy, cgal, gmp, mpfr
 , gobject-introspection, pygobject3, gtk3, matplotlib, ncurses
 , buildPythonPackage
-, fetchpatch
-, pythonAtLeast
 , lib
 }:
 
diff --git a/pkgs/development/python-modules/greenlet/default.nix b/pkgs/development/python-modules/greenlet/default.nix
index 6f42eeefa9f4..78ac1668b6f8 100644
--- a/pkgs/development/python-modules/greenlet/default.nix
+++ b/pkgs/development/python-modules/greenlet/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, six
 , isPyPy
 , python
 }:
diff --git a/pkgs/development/python-modules/gyp/default.nix b/pkgs/development/python-modules/gyp/default.nix
index 5be56c81257a..e98d844a33e3 100644
--- a/pkgs/development/python-modules/gyp/default.nix
+++ b/pkgs/development/python-modules/gyp/default.nix
@@ -1,7 +1,6 @@
 { lib, stdenv
 , buildPythonPackage
 , fetchFromGitiles
-, isPy3k
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/ha-av/default.nix b/pkgs/development/python-modules/ha-av/default.nix
index 2e24dde84b41..af5f5f31ab61 100644
--- a/pkgs/development/python-modules/ha-av/default.nix
+++ b/pkgs/development/python-modules/ha-av/default.nix
@@ -4,9 +4,6 @@
 , fetchPypi
 , pkg-config
 , ffmpeg
-, numpy
-, pytestCheckHook
-, python
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/hacking/default.nix b/pkgs/development/python-modules/hacking/default.nix
index 2c345691216d..d47449c2ca5e 100644
--- a/pkgs/development/python-modules/hacking/default.nix
+++ b/pkgs/development/python-modules/hacking/default.nix
@@ -4,9 +4,7 @@
 , pbr
 , flake8
 , stestr
-, eventlet
 , ddt
-, testtools
 , testscenarios
 }:
 
diff --git a/pkgs/development/python-modules/halo/default.nix b/pkgs/development/python-modules/halo/default.nix
index e167371b42a4..bd1d5f726363 100644
--- a/pkgs/development/python-modules/halo/default.nix
+++ b/pkgs/development/python-modules/halo/default.nix
@@ -4,7 +4,6 @@
 , isPy27
 , lib
 , log-symbols
-, pytestCheckHook
 , six
 , spinners
 , termcolor }:
diff --git a/pkgs/development/python-modules/headerparser/default.nix b/pkgs/development/python-modules/headerparser/default.nix
index 3ad265c217f7..b1a38170162b 100644
--- a/pkgs/development/python-modules/headerparser/default.nix
+++ b/pkgs/development/python-modules/headerparser/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, entry-points-txt
 , six
 }:
 
diff --git a/pkgs/development/python-modules/hid/default.nix b/pkgs/development/python-modules/hid/default.nix
index 8dc134c61c0f..ce6e1d58def3 100644
--- a/pkgs/development/python-modules/hid/default.nix
+++ b/pkgs/development/python-modules/hid/default.nix
@@ -1,5 +1,4 @@
 { lib
-, stdenv
 , buildPythonPackage
 , fetchPypi
 , hidapi
diff --git a/pkgs/development/python-modules/httpretty/default.nix b/pkgs/development/python-modules/httpretty/default.nix
index 78a529666139..67ece594071c 100644
--- a/pkgs/development/python-modules/httpretty/default.nix
+++ b/pkgs/development/python-modules/httpretty/default.nix
@@ -12,7 +12,6 @@
 , nose-randomly
 , six
 , mock
-, eventlet
 , pytest
 , freezegun
 }:
diff --git a/pkgs/development/python-modules/hydra-check/default.nix b/pkgs/development/python-modules/hydra-check/default.nix
index c01876d3f64c..458363713db2 100644
--- a/pkgs/development/python-modules/hydra-check/default.nix
+++ b/pkgs/development/python-modules/hydra-check/default.nix
@@ -5,9 +5,7 @@
 , docopt
 , requests
 , beautifulsoup4
-, black
 , mypy
-, flake8
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/hydrawiser/default.nix b/pkgs/development/python-modules/hydrawiser/default.nix
index feccc73707c2..3dfeff72609f 100644
--- a/pkgs/development/python-modules/hydrawiser/default.nix
+++ b/pkgs/development/python-modules/hydrawiser/default.nix
@@ -5,7 +5,6 @@
 , pytest-cov
 , pytestCheckHook
 , pythonOlder
-, pyyaml
 , requests
 , requests-mock
 }:
diff --git a/pkgs/development/python-modules/i3ipc/default.nix b/pkgs/development/python-modules/i3ipc/default.nix
index 37d5ccd8786f..3805d501305b 100644
--- a/pkgs/development/python-modules/i3ipc/default.nix
+++ b/pkgs/development/python-modules/i3ipc/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchFromGitHub
-, xorgserver, pytest, pytest-xvfb, i3, python, xlib, xdpyinfo
+, xorgserver, pytest, pytest-xvfb, i3, xlib, xdpyinfo
 , makeFontsConf, coreutils
 }:
 
diff --git a/pkgs/development/python-modules/ifcopenshell/default.nix b/pkgs/development/python-modules/ifcopenshell/default.nix
index 8448e273b01d..2c51ff2db4f1 100644
--- a/pkgs/development/python-modules/ifcopenshell/default.nix
+++ b/pkgs/development/python-modules/ifcopenshell/default.nix
@@ -1,7 +1,6 @@
 { lib, stdenv
 , buildPythonPackage
 , fetchFromGitHub
-, python
 , gcc10
 , cmake
 , boost17x
diff --git a/pkgs/development/python-modules/importlib-metadata/2.nix b/pkgs/development/python-modules/importlib-metadata/2.nix
index 71dcd950db2c..f50b2c07c1da 100644
--- a/pkgs/development/python-modules/importlib-metadata/2.nix
+++ b/pkgs/development/python-modules/importlib-metadata/2.nix
@@ -7,8 +7,6 @@
 , contextlib2
 , configparser
 , isPy3k
-, importlib-resources
-, packaging
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/intake-parquet/default.nix b/pkgs/development/python-modules/intake-parquet/default.nix
index 49d5e1ed4b93..5c5f598a4526 100644
--- a/pkgs/development/python-modules/intake-parquet/default.nix
+++ b/pkgs/development/python-modules/intake-parquet/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, pythonOlder
 , pandas
 , dask
 , fastparquet
diff --git a/pkgs/development/python-modules/ipykernel/default.nix b/pkgs/development/python-modules/ipykernel/default.nix
index 1c8ce638359a..dd84c0e65389 100644
--- a/pkgs/development/python-modules/ipykernel/default.nix
+++ b/pkgs/development/python-modules/ipykernel/default.nix
@@ -1,5 +1,4 @@
 { lib
-, stdenv
 , buildPythonPackage
 , callPackage
 , fetchPypi
@@ -8,7 +7,6 @@
 , jupyter-client
 , tornado
 , traitlets
-, pythonOlder
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/ipython/7.16.nix b/pkgs/development/python-modules/ipython/7.16.nix
index d0ca5eef7cde..1f62cc9bc18d 100644
--- a/pkgs/development/python-modules/ipython/7.16.nix
+++ b/pkgs/development/python-modules/ipython/7.16.nix
@@ -17,7 +17,6 @@
 , pexpect
 , appnope
 , backcall
-, fetchpatch
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/ipython/default.nix b/pkgs/development/python-modules/ipython/default.nix
index b8a13eb436c0..7b844228225b 100644
--- a/pkgs/development/python-modules/ipython/default.nix
+++ b/pkgs/development/python-modules/ipython/default.nix
@@ -18,7 +18,6 @@
 , pexpect
 , appnope
 , backcall
-, fetchpatch
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/ircstates/default.nix b/pkgs/development/python-modules/ircstates/default.nix
index c2813d828daa..49ddb8c0614e 100644
--- a/pkgs/development/python-modules/ircstates/default.nix
+++ b/pkgs/development/python-modules/ircstates/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , pythonOlder
 , irctokens
 , pendulum
diff --git a/pkgs/development/python-modules/jedi/default.nix b/pkgs/development/python-modules/jedi/default.nix
index 814c8acbf91f..ad94a3a3f7bc 100644
--- a/pkgs/development/python-modules/jedi/default.nix
+++ b/pkgs/development/python-modules/jedi/default.nix
@@ -3,7 +3,6 @@
 , buildPythonPackage
 , pythonOlder
 , fetchFromGitHub
-, fetchPypi
 , colorama
 , django
 , docopt
diff --git a/pkgs/development/python-modules/jenkins-job-builder/default.nix b/pkgs/development/python-modules/jenkins-job-builder/default.nix
index 5b3f68272fa2..f2b014ff5240 100644
--- a/pkgs/development/python-modules/jenkins-job-builder/default.nix
+++ b/pkgs/development/python-modules/jenkins-job-builder/default.nix
@@ -1,5 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, fasteners
+{ lib, buildPythonPackage, fetchPypi, fasteners
 , jinja2
 , pbr
 , python-jenkins
diff --git a/pkgs/development/python-modules/jsonschema/default.nix b/pkgs/development/python-modules/jsonschema/default.nix
index 583936255fde..b78165fc4f32 100644
--- a/pkgs/development/python-modules/jsonschema/default.nix
+++ b/pkgs/development/python-modules/jsonschema/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, python, isPy27
+{ lib, buildPythonPackage, fetchPypi, isPy27
 , attrs
 , functools32
 , importlib-metadata
diff --git a/pkgs/development/python-modules/jug/default.nix b/pkgs/development/python-modules/jug/default.nix
index 0750744885d3..3c805b4eca58 100644
--- a/pkgs/development/python-modules/jug/default.nix
+++ b/pkgs/development/python-modules/jug/default.nix
@@ -1,5 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, fetchpatch
-, nose, numpy
+{ lib, buildPythonPackage, fetchPypi, nose, numpy
 , bottle, pyyaml, redis, six
 , zlib
 , pytestCheckHook }:
diff --git a/pkgs/development/python-modules/jupyter-repo2docker/default.nix b/pkgs/development/python-modules/jupyter-repo2docker/default.nix
index 4e66e332b079..d515a43a5636 100644
--- a/pkgs/development/python-modules/jupyter-repo2docker/default.nix
+++ b/pkgs/development/python-modules/jupyter-repo2docker/default.nix
@@ -11,7 +11,6 @@
 , pkgs-docker
 , python-json-logger
 , pythonOlder
-, pyyaml
 , ruamel-yaml
 , semver
 , toml
diff --git a/pkgs/development/python-modules/kaldi-active-grammar/fork.nix b/pkgs/development/python-modules/kaldi-active-grammar/fork.nix
index ba14aec768cb..8f5a11f14c61 100644
--- a/pkgs/development/python-modules/kaldi-active-grammar/fork.nix
+++ b/pkgs/development/python-modules/kaldi-active-grammar/fork.nix
@@ -6,7 +6,6 @@
 , icu
 , pkg-config
 , fetchFromGitHub
-, git
 , python3
 , openblas
 , zlib
diff --git a/pkgs/development/python-modules/ldaptor/19.nix b/pkgs/development/python-modules/ldaptor/19.nix
index cca696f1dff0..42141371c534 100644
--- a/pkgs/development/python-modules/ldaptor/19.nix
+++ b/pkgs/development/python-modules/ldaptor/19.nix
@@ -8,7 +8,6 @@
 , service-identity
 , zope_interface
 , isPy3k
-, python
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/libarchive-c/default.nix b/pkgs/development/python-modules/libarchive-c/default.nix
index 7c33652c0ea5..92837ac77a10 100644
--- a/pkgs/development/python-modules/libarchive-c/default.nix
+++ b/pkgs/development/python-modules/libarchive-c/default.nix
@@ -1,7 +1,6 @@
 { lib
 , stdenv
 , buildPythonPackage
-, pythonAtLeast
 , fetchFromGitHub
 , libarchive
 , glibcLocales
diff --git a/pkgs/development/python-modules/liblzfse/default.nix b/pkgs/development/python-modules/liblzfse/default.nix
index 72159fa5f134..90533cc30206 100644
--- a/pkgs/development/python-modules/liblzfse/default.nix
+++ b/pkgs/development/python-modules/liblzfse/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , lzfse
-, pytestCheckHook
 }:
 buildPythonPackage rec {
   pname = "pyliblzfse";
diff --git a/pkgs/development/python-modules/linecache2/default.nix b/pkgs/development/python-modules/linecache2/default.nix
index 3c2238b0875d..4231ed43ad5b 100644
--- a/pkgs/development/python-modules/linecache2/default.nix
+++ b/pkgs/development/python-modules/linecache2/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , pbr
-, isPy3k
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/livestreamer/default.nix b/pkgs/development/python-modules/livestreamer/default.nix
index 66f2540bfc30..4dd4c35cc738 100644
--- a/pkgs/development/python-modules/livestreamer/default.nix
+++ b/pkgs/development/python-modules/livestreamer/default.nix
@@ -6,7 +6,6 @@
 , rtmpdump
 , pycrypto
 , requests
-, isPy27
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/log-symbols/default.nix b/pkgs/development/python-modules/log-symbols/default.nix
index f8cdce634ac9..819f771b91ee 100644
--- a/pkgs/development/python-modules/log-symbols/default.nix
+++ b/pkgs/development/python-modules/log-symbols/default.nix
@@ -2,7 +2,6 @@
 , colorama
 , fetchPypi
 , isPy27
-, pytestCheckHook
 , lib }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/m3u8/default.nix b/pkgs/development/python-modules/m3u8/default.nix
index decad482bef1..552a095e705f 100644
--- a/pkgs/development/python-modules/m3u8/default.nix
+++ b/pkgs/development/python-modules/m3u8/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, python, fetchFromGitHub, requests, iso8601, bottle, pytest, pytest-cov }:
+{ lib, buildPythonPackage, fetchFromGitHub, requests, iso8601, bottle, pytest, pytest-cov }:
 
 buildPythonPackage rec {
   pname = "m3u8";
diff --git a/pkgs/development/python-modules/markdown/3_1.nix b/pkgs/development/python-modules/markdown/3_1.nix
index eb9b2e59ec81..13ed2f1744a2 100644
--- a/pkgs/development/python-modules/markdown/3_1.nix
+++ b/pkgs/development/python-modules/markdown/3_1.nix
@@ -6,7 +6,6 @@
 , pyyaml
 , pythonOlder
 , importlib-metadata
-, isPy3k
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/meshlabxml/default.nix b/pkgs/development/python-modules/meshlabxml/default.nix
index c1091296d2e1..e0793f3ec978 100644
--- a/pkgs/development/python-modules/meshlabxml/default.nix
+++ b/pkgs/development/python-modules/meshlabxml/default.nix
@@ -1,7 +1,6 @@
 {
   buildPythonPackage,
   fetchPypi,
-  pythonOlder,
   lib,
 }:
 
diff --git a/pkgs/development/python-modules/mesonpep517/default.nix b/pkgs/development/python-modules/mesonpep517/default.nix
index 8805c2039034..5e33ae9c1033 100644
--- a/pkgs/development/python-modules/mesonpep517/default.nix
+++ b/pkgs/development/python-modules/mesonpep517/default.nix
@@ -3,9 +3,7 @@
 , fetchPypi
 , meson
 , ninja
-, intreehooks
 , toml
-, pythonOlder
 }:
 
 # TODO: offer meson as a Python package so we have dist-info folder.
diff --git a/pkgs/development/python-modules/metakernel/default.nix b/pkgs/development/python-modules/metakernel/default.nix
index eec3da25e0f2..b87b87a1e4b8 100644
--- a/pkgs/development/python-modules/metakernel/default.nix
+++ b/pkgs/development/python-modules/metakernel/default.nix
@@ -2,9 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , ipykernel
-, isPy27
-, mock
-, pytest
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/mlflow/default.nix b/pkgs/development/python-modules/mlflow/default.nix
index 6ef5788b8418..abd79d22dc16 100644
--- a/pkgs/development/python-modules/mlflow/default.nix
+++ b/pkgs/development/python-modules/mlflow/default.nix
@@ -20,7 +20,6 @@
 , sqlalchemy
 , gorilla
 , gunicorn
-, pytest
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/mohawk/default.nix b/pkgs/development/python-modules/mohawk/default.nix
index e260bb7b54a3..6616ba7d537b 100644
--- a/pkgs/development/python-modules/mohawk/default.nix
+++ b/pkgs/development/python-modules/mohawk/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, python, mock, nose, pytest, six }:
+{ lib, buildPythonPackage, fetchPypi, mock, nose, pytest, six }:
 
 with lib;
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/mox3/default.nix b/pkgs/development/python-modules/mox3/default.nix
index 593d845ad866..3aa8b02dc101 100644
--- a/pkgs/development/python-modules/mox3/default.nix
+++ b/pkgs/development/python-modules/mox3/default.nix
@@ -2,14 +2,12 @@
 , buildPythonPackage
 , fetchPypi
 , pythonOlder
-, python
 , subunit
 , testrepository
 , testtools
 , six
 , pbr
 , fixtures
-, isPy36
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/mutagen/1.43.nix b/pkgs/development/python-modules/mutagen/1.43.nix
index a7a7c7c66049..7f2e9f452b4d 100644
--- a/pkgs/development/python-modules/mutagen/1.43.nix
+++ b/pkgs/development/python-modules/mutagen/1.43.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , hypothesis
 , pycodestyle
 , pyflakes
diff --git a/pkgs/development/python-modules/mutagen/default.nix b/pkgs/development/python-modules/mutagen/default.nix
index df0872242a17..33fc3c02daeb 100644
--- a/pkgs/development/python-modules/mutagen/default.nix
+++ b/pkgs/development/python-modules/mutagen/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , isPy27
-, fetchpatch
 , flake8
 , hypothesis
 , pycodestyle
diff --git a/pkgs/development/python-modules/nevow/default.nix b/pkgs/development/python-modules/nevow/default.nix
index b608ae58fc70..37586ccfcb47 100644
--- a/pkgs/development/python-modules/nevow/default.nix
+++ b/pkgs/development/python-modules/nevow/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchpatch, fetchPypi, isPy3k, twisted }:
+{ lib, buildPythonPackage, fetchPypi, isPy3k, twisted }:
 
 buildPythonPackage rec {
   pname = "Nevow";
diff --git a/pkgs/development/python-modules/nitime/default.nix b/pkgs/development/python-modules/nitime/default.nix
index ccbf540f75f4..f9c84acef882 100644
--- a/pkgs/development/python-modules/nitime/default.nix
+++ b/pkgs/development/python-modules/nitime/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, python
 , fetchPypi
 , isPy27
 , pytestCheckHook
diff --git a/pkgs/development/python-modules/nltk/default.nix b/pkgs/development/python-modules/nltk/default.nix
index eb715c91e50d..346c8339dbe1 100644
--- a/pkgs/development/python-modules/nltk/default.nix
+++ b/pkgs/development/python-modules/nltk/default.nix
@@ -1,4 +1,4 @@
-{ fetchPypi, buildPythonPackage, lib, six, singledispatch ? null, isPy3k
+{ fetchPypi, buildPythonPackage, lib, singledispatch ? null, isPy3k
 , click
 , joblib
 , regex
diff --git a/pkgs/development/python-modules/numpy/default.nix b/pkgs/development/python-modules/numpy/default.nix
index 60f3bf1091ec..6119ee384229 100644
--- a/pkgs/development/python-modules/numpy/default.nix
+++ b/pkgs/development/python-modules/numpy/default.nix
@@ -8,7 +8,6 @@
 , blas
 , lapack
 , writeTextFile
-, isPyPy
 , cython
 , setuptoolsBuildHook
 , pythonOlder
diff --git a/pkgs/development/python-modules/ofxtools/default.nix b/pkgs/development/python-modules/ofxtools/default.nix
index a32b0b232949..0f0dfb057695 100644
--- a/pkgs/development/python-modules/ofxtools/default.nix
+++ b/pkgs/development/python-modules/ofxtools/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchFromGitHub
 , nose
-, python
 , pythonOlder
 }:
 
diff --git a/pkgs/development/python-modules/open-garage/default.nix b/pkgs/development/python-modules/open-garage/default.nix
index 87d524845751..0cb71a86fe57 100644
--- a/pkgs/development/python-modules/open-garage/default.nix
+++ b/pkgs/development/python-modules/open-garage/default.nix
@@ -8,15 +8,16 @@
 
 buildPythonPackage rec {
   pname = "open-garage";
-  version = "0.1.6";
+  version = "0.2.0";
+  format = "setuptools";
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "Danielhiversen";
     repo = "pyOpenGarage";
     rev = version;
-    sha256 = "sha256-vm51Fjej0OQ7LftisS/tsnxZxa5c/j7eGIROMsEcXNE=";
+    sha256 = "sha256-iJ7HcJhpTceFpHTUdNZOYDuxUWZGWPmZ9lxD3CyGvk8=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/openrazer/daemon.nix b/pkgs/development/python-modules/openrazer/daemon.nix
index 8dcb9a9925d1..2e44c3756e32 100644
--- a/pkgs/development/python-modules/openrazer/daemon.nix
+++ b/pkgs/development/python-modules/openrazer/daemon.nix
@@ -4,7 +4,6 @@
 , daemonize
 , dbus-python
 , fetchFromGitHub
-, fetchpatch
 , gobject-introspection
 , gtk3
 , makeWrapper
diff --git a/pkgs/development/python-modules/openrouteservice/default.nix b/pkgs/development/python-modules/openrouteservice/default.nix
index cae450a9af33..f5e1ab81fbf7 100644
--- a/pkgs/development/python-modules/openrouteservice/default.nix
+++ b/pkgs/development/python-modules/openrouteservice/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, requests, responses, pytestCheckHook }:
+{ lib, buildPythonPackage, fetchFromGitHub, responses, pytestCheckHook }:
 
 buildPythonPackage rec {
   pname = "openrouteservice";
diff --git a/pkgs/development/python-modules/openstacksdk/default.nix b/pkgs/development/python-modules/openstacksdk/default.nix
index 27940dde7670..db2043a6f929 100644
--- a/pkgs/development/python-modules/openstacksdk/default.nix
+++ b/pkgs/development/python-modules/openstacksdk/default.nix
@@ -14,7 +14,6 @@
 , pbr
 , pyyaml
 , requestsexceptions
-, stdenv
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/orvibo/default.nix b/pkgs/development/python-modules/orvibo/default.nix
index 17a3a7691112..8de932a82f0e 100644
--- a/pkgs/development/python-modules/orvibo/default.nix
+++ b/pkgs/development/python-modules/orvibo/default.nix
@@ -1,12 +1,6 @@
 { lib
 , buildPythonPackage
-, click
 , fetchFromGitHub
-, mock
-, pytest-runner
-, pytestCheckHook
-, requests
-, websocket-client
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/os-service-types/tests.nix b/pkgs/development/python-modules/os-service-types/tests.nix
index 33f641d14c58..4cb93d797476 100644
--- a/pkgs/development/python-modules/os-service-types/tests.nix
+++ b/pkgs/development/python-modules/os-service-types/tests.nix
@@ -1,5 +1,4 @@
-{ stdenv
-, buildPythonPackage
+{ buildPythonPackage
 , keystoneauth1
 , os-service-types
 , oslotest
diff --git a/pkgs/development/python-modules/oslo-config/tests.nix b/pkgs/development/python-modules/oslo-config/tests.nix
index 82400e67ea58..c94eb2941b77 100644
--- a/pkgs/development/python-modules/oslo-config/tests.nix
+++ b/pkgs/development/python-modules/oslo-config/tests.nix
@@ -1,5 +1,4 @@
-{ stdenv
-, buildPythonPackage
+{ buildPythonPackage
 , oslo-config
 , docutils
 , oslo-log
diff --git a/pkgs/development/python-modules/oslotest/tests.nix b/pkgs/development/python-modules/oslotest/tests.nix
index 3c07a35c17d8..542e9467d16f 100644
--- a/pkgs/development/python-modules/oslotest/tests.nix
+++ b/pkgs/development/python-modules/oslotest/tests.nix
@@ -1,5 +1,4 @@
-{ stdenv
-, buildPythonPackage
+{ buildPythonPackage
 , oslo-config
 , oslotest
 , stestr
diff --git a/pkgs/development/python-modules/p1monitor/default.nix b/pkgs/development/python-modules/p1monitor/default.nix
index 4a7ce2aec3f2..77a9b8ba512e 100644
--- a/pkgs/development/python-modules/p1monitor/default.nix
+++ b/pkgs/development/python-modules/p1monitor/default.nix
@@ -1,6 +1,5 @@
 { lib
 , aiohttp
-, aresponses
 , buildPythonPackage
 , fetchFromGitHub
 , poetry-core
diff --git a/pkgs/development/python-modules/packaging/2.nix b/pkgs/development/python-modules/packaging/2.nix
index a9b4e159469d..0f9e61859a16 100644
--- a/pkgs/development/python-modules/packaging/2.nix
+++ b/pkgs/development/python-modules/packaging/2.nix
@@ -5,7 +5,6 @@
 , six
 , pytestCheckHook
 , pretend
-, flit-core
 }:
 
 # We keep 20.4 because it uses setuptools instead of flit-core
diff --git a/pkgs/development/python-modules/pandas/default.nix b/pkgs/development/python-modules/pandas/default.nix
index 019429111308..6c2580877749 100644
--- a/pkgs/development/python-modules/pandas/default.nix
+++ b/pkgs/development/python-modules/pandas/default.nix
@@ -3,7 +3,6 @@
 , buildPythonPackage
 , fetchPypi
 , python
-, isPy38
 , beautifulsoup4
 , bottleneck
 , cython
diff --git a/pkgs/development/python-modules/parquet/default.nix b/pkgs/development/python-modules/parquet/default.nix
index ceaba917e832..3be0cce9fa4e 100644
--- a/pkgs/development/python-modules/parquet/default.nix
+++ b/pkgs/development/python-modules/parquet/default.nix
@@ -3,7 +3,6 @@
 , fetchFromGitHub
 , pytestCheckHook
 , python-snappy
-, pythonOlder
 , thriftpy2
 }:
 
diff --git a/pkgs/development/python-modules/parse-type/default.nix b/pkgs/development/python-modules/parse-type/default.nix
index 8faff81880cf..5cfb4b610ce7 100644
--- a/pkgs/development/python-modules/parse-type/default.nix
+++ b/pkgs/development/python-modules/parse-type/default.nix
@@ -3,7 +3,6 @@
 , fetchFromGitHub
 , parse
 , pytestCheckHook
-, pythonOlder
 , six
 }:
 
diff --git a/pkgs/development/python-modules/paste/default.nix b/pkgs/development/python-modules/paste/default.nix
index c3a082c6c230..53208a35839d 100644
--- a/pkgs/development/python-modules/paste/default.nix
+++ b/pkgs/development/python-modules/paste/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, six
 , pytestCheckHook
 }:
 
diff --git a/pkgs/development/python-modules/pastel/default.nix b/pkgs/development/python-modules/pastel/default.nix
index a8eb5396fa2c..39953306fbb1 100644
--- a/pkgs/development/python-modules/pastel/default.nix
+++ b/pkgs/development/python-modules/pastel/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, poetry, pytest }:
+{ lib, buildPythonPackage, fetchPypi, pytest }:
 
 buildPythonPackage rec {
   pname = "pastel";
diff --git a/pkgs/development/python-modules/pathy/default.nix b/pkgs/development/python-modules/pathy/default.nix
index 79cbba1d75cd..aba6fdccb327 100644
--- a/pkgs/development/python-modules/pathy/default.nix
+++ b/pkgs/development/python-modules/pathy/default.nix
@@ -3,9 +3,7 @@
 , fetchPypi
 , pytestCheckHook
 , typer
-, dataclasses
 , smart-open
-, pytest
 , mock
 , google-cloud-storage
 }:
diff --git a/pkgs/development/python-modules/pbr/tests.nix b/pkgs/development/python-modules/pbr/tests.nix
index a1c57684ce46..b31334589f5d 100644
--- a/pkgs/development/python-modules/pbr/tests.nix
+++ b/pkgs/development/python-modules/pbr/tests.nix
@@ -1,5 +1,4 @@
-{ stdenv
-, buildPythonPackage
+{ buildPythonPackage
 , git
 , gnupg
 , pbr
diff --git a/pkgs/development/python-modules/pc-ble-driver-py/default.nix b/pkgs/development/python-modules/pc-ble-driver-py/default.nix
index 53fbed59dc18..202e6fdaf6a8 100644
--- a/pkgs/development/python-modules/pc-ble-driver-py/default.nix
+++ b/pkgs/development/python-modules/pc-ble-driver-py/default.nix
@@ -11,7 +11,6 @@
 , scikit-build
 , setuptools
 , swig
-, udev
 , wrapt
 }:
 
diff --git a/pkgs/development/python-modules/pelican/default.nix b/pkgs/development/python-modules/pelican/default.nix
index 3f9d2e0ceb0a..e39993194a8c 100644
--- a/pkgs/development/python-modules/pelican/default.nix
+++ b/pkgs/development/python-modules/pelican/default.nix
@@ -7,7 +7,6 @@
 , fetchFromGitHub
 , git
 , glibcLocales
-, isPy27
 , jinja2
 , lxml
 , markdown
diff --git a/pkgs/development/python-modules/pendulum/default.nix b/pkgs/development/python-modules/pendulum/default.nix
index d432ca271dd7..cdc7ab035ed3 100644
--- a/pkgs/development/python-modules/pendulum/default.nix
+++ b/pkgs/development/python-modules/pendulum/default.nix
@@ -1,7 +1,6 @@
 { lib, fetchPypi, buildPythonPackage, pythonOlder
 , python-dateutil
 , importlib-metadata
-, poetry
 , poetry-core
 , pytzdata
 , typing
diff --git a/pkgs/development/python-modules/pexpect/default.nix b/pkgs/development/python-modules/pexpect/default.nix
index 60655708beae..40d61aec5c52 100644
--- a/pkgs/development/python-modules/pexpect/default.nix
+++ b/pkgs/development/python-modules/pexpect/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , ptyprocess
-, isPy3k
 }:
 
 buildPythonPackage (rec {
diff --git a/pkgs/development/python-modules/pip/20.nix b/pkgs/development/python-modules/pip/20.nix
index 6f859d365c59..e3666d6a7961 100644
--- a/pkgs/development/python-modules/pip/20.nix
+++ b/pkgs/development/python-modules/pip/20.nix
@@ -1,5 +1,4 @@
 { lib
-, python
 , buildPythonPackage
 , bootstrapped-pip
 , fetchFromGitHub
@@ -8,8 +7,6 @@
 , virtualenv
 , pretend
 , pytest
-, setuptools
-, wheel
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pip/default.nix b/pkgs/development/python-modules/pip/default.nix
index 50783f4eeb62..fc447bfb98a0 100644
--- a/pkgs/development/python-modules/pip/default.nix
+++ b/pkgs/development/python-modules/pip/default.nix
@@ -1,5 +1,4 @@
 { lib
-, python
 , buildPythonPackage
 , bootstrapped-pip
 , fetchFromGitHub
@@ -8,8 +7,6 @@
 , virtualenv
 , pretend
 , pytest
-, setuptools
-, wheel
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/plyer/default.nix b/pkgs/development/python-modules/plyer/default.nix
index 88dfd9a4a2bf..aed8b9395f06 100644
--- a/pkgs/development/python-modules/plyer/default.nix
+++ b/pkgs/development/python-modules/plyer/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch, keyring, mock, pytestCheckHook, stdenv }:
+{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch, keyring, mock, pytestCheckHook }:
 
 buildPythonPackage rec {
   pname = "plyer";
diff --git a/pkgs/development/python-modules/policyuniverse/default.nix b/pkgs/development/python-modules/policyuniverse/default.nix
index d8e102957b1b..ca66c777f5b0 100644
--- a/pkgs/development/python-modules/policyuniverse/default.nix
+++ b/pkgs/development/python-modules/policyuniverse/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pytestCheckHook
 , pythonOlder
 }:
 
diff --git a/pkgs/development/python-modules/protobuf/default.nix b/pkgs/development/python-modules/protobuf/default.nix
index e3e66294a8f5..db3b73d7462f 100644
--- a/pkgs/development/python-modules/protobuf/default.nix
+++ b/pkgs/development/python-modules/protobuf/default.nix
@@ -8,7 +8,6 @@
 , google-apputils ? null
 , six
 , pyext
-, libcxx
 , isPy27
 , disabled
 , doCheck ? true
diff --git a/pkgs/development/python-modules/publicsuffix/default.nix b/pkgs/development/python-modules/publicsuffix/default.nix
index 997bc31c8656..3f86abf0ea14 100644
--- a/pkgs/development/python-modules/publicsuffix/default.nix
+++ b/pkgs/development/python-modules/publicsuffix/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k }:
+{ lib, buildPythonPackage, fetchPypi }:
 
 buildPythonPackage rec {
   pname = "publicsuffix";
diff --git a/pkgs/development/python-modules/pxml/default.nix b/pkgs/development/python-modules/pxml/default.nix
index 21dc2f4abc4d..efa9e81b8de9 100644
--- a/pkgs/development/python-modules/pxml/default.nix
+++ b/pkgs/development/python-modules/pxml/default.nix
@@ -1,6 +1,5 @@
 { lib
 , pythonAtLeast
-, isPy27
 , buildPythonPackage
 , fetchPypi
 , blessings
diff --git a/pkgs/development/python-modules/py3exiv2/default.nix b/pkgs/development/python-modules/py3exiv2/default.nix
index 59d0cdb7299f..ef056d296b2e 100644
--- a/pkgs/development/python-modules/py3exiv2/default.nix
+++ b/pkgs/development/python-modules/py3exiv2/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, isPy3k, fetchPypi, stdenv, exiv2, boost, libcxx, substituteAll, python }:
+{ lib, buildPythonPackage, isPy3k, fetchPypi, stdenv, exiv2, boost, libcxx }:
 
 buildPythonPackage rec {
   pname = "py3exiv2";
diff --git a/pkgs/development/python-modules/pyathena/default.nix b/pkgs/development/python-modules/pyathena/default.nix
index c7a8599a048a..6bfd68286b7e 100644
--- a/pkgs/development/python-modules/pyathena/default.nix
+++ b/pkgs/development/python-modules/pyathena/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, sqlalchemy
 , boto3
 , botocore
 , pandas
diff --git a/pkgs/development/python-modules/pyefergy/default.nix b/pkgs/development/python-modules/pyefergy/default.nix
index bee03f253a06..007e605709c3 100644
--- a/pkgs/development/python-modules/pyefergy/default.nix
+++ b/pkgs/development/python-modules/pyefergy/default.nix
@@ -3,7 +3,6 @@
 , buildPythonPackage
 , fetchFromGitHub
 , iso4217
-, pytestCheckHook
 , pythonOlder
 , pytz
 }:
diff --git a/pkgs/development/python-modules/pyerfa/default.nix b/pkgs/development/python-modules/pyerfa/default.nix
index c67ce9a98064..b59aa56c48e9 100644
--- a/pkgs/development/python-modules/pyerfa/default.nix
+++ b/pkgs/development/python-modules/pyerfa/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, isPy3k
 , setuptools-scm
 , liberfa
 , packaging
diff --git a/pkgs/development/python-modules/pygobject/3.nix b/pkgs/development/python-modules/pygobject/3.nix
index fda11ef89e83..dec84b4eccff 100644
--- a/pkgs/development/python-modules/pygobject/3.nix
+++ b/pkgs/development/python-modules/pygobject/3.nix
@@ -7,7 +7,6 @@
 , gobject-introspection
 , pycairo
 , cairo
-, which
 , ncurses
 , meson
 , ninja
diff --git a/pkgs/development/python-modules/pygogo/default.nix b/pkgs/development/python-modules/pygogo/default.nix
index 89031c9610aa..8af5e856c41f 100644
--- a/pkgs/development/python-modules/pygogo/default.nix
+++ b/pkgs/development/python-modules/pygogo/default.nix
@@ -4,7 +4,6 @@
 , fetchFromGitHub
 , pkutils
   # Check Inputs
-, pytestCheckHook
 , nose
 }:
 
diff --git a/pkgs/development/python-modules/pykrakenapi/default.nix b/pkgs/development/python-modules/pykrakenapi/default.nix
index e3620e7de6ad..5a17e40be564 100644
--- a/pkgs/development/python-modules/pykrakenapi/default.nix
+++ b/pkgs/development/python-modules/pykrakenapi/default.nix
@@ -3,7 +3,6 @@
 , fetchFromGitHub
 , krakenex
 , pandas
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pymumble/default.nix b/pkgs/development/python-modules/pymumble/default.nix
index d708f5f229b5..35cbbc31bb02 100644
--- a/pkgs/development/python-modules/pymumble/default.nix
+++ b/pkgs/development/python-modules/pymumble/default.nix
@@ -1,6 +1,5 @@
 { buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , isPy27
 , lib
 , opuslib
diff --git a/pkgs/development/python-modules/pynrrd/default.nix b/pkgs/development/python-modules/pynrrd/default.nix
index 7a136176cf64..641cd6bd1280 100644
--- a/pkgs/development/python-modules/pynrrd/default.nix
+++ b/pkgs/development/python-modules/pynrrd/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchFromGitHub
 , numpy
-, pytest
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pynvim/default.nix b/pkgs/development/python-modules/pynvim/default.nix
index 67079a8c1d26..6ae98eff28d3 100644
--- a/pkgs/development/python-modules/pynvim/default.nix
+++ b/pkgs/development/python-modules/pynvim/default.nix
@@ -1,7 +1,6 @@
 { buildPythonPackage
 , fetchPypi
 , lib
-, nose
 , msgpack
 , greenlet
 , pythonOlder
diff --git a/pkgs/development/python-modules/pyocr/default.nix b/pkgs/development/python-modules/pyocr/default.nix
index df20d3bb6c47..b8f9564a4ffe 100644
--- a/pkgs/development/python-modules/pyocr/default.nix
+++ b/pkgs/development/python-modules/pyocr/default.nix
@@ -9,7 +9,6 @@
 , isPy3k
 , substituteAll
 , pytestCheckHook
-, tox
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyopenssl/default.nix b/pkgs/development/python-modules/pyopenssl/default.nix
index 6bc8c04ec30c..688731033a98 100644
--- a/pkgs/development/python-modules/pyopenssl/default.nix
+++ b/pkgs/development/python-modules/pyopenssl/default.nix
@@ -11,7 +11,6 @@
 , flaky
 , glibcLocales
 , six
-, fetchpatch
 }:
 
 let
diff --git a/pkgs/development/python-modules/pyqt/5.x.nix b/pkgs/development/python-modules/pyqt/5.x.nix
index ae737ca2e638..3b98b5738825 100644
--- a/pkgs/development/python-modules/pyqt/5.x.nix
+++ b/pkgs/development/python-modules/pyqt/5.x.nix
@@ -5,7 +5,6 @@
 , pkg-config
 , dbus
 , lndir
-, python
 , dbus-python
 , sip
 , pyqt-builder
diff --git a/pkgs/development/python-modules/pyqtgraph/default.nix b/pkgs/development/python-modules/pyqtgraph/default.nix
index 49401bf1f843..a66afe76fd4a 100644
--- a/pkgs/development/python-modules/pyqtgraph/default.nix
+++ b/pkgs/development/python-modules/pyqtgraph/default.nix
@@ -6,7 +6,6 @@
 , pyqt5
 , pyopengl
 , qt5
-, python
 , pytestCheckHook
 , freefont_ttf
 , makeFontsConf
diff --git a/pkgs/development/python-modules/pyramid/default.nix b/pkgs/development/python-modules/pyramid/default.nix
index 9da88fee1538..fb1feb767315 100644
--- a/pkgs/development/python-modules/pyramid/default.nix
+++ b/pkgs/development/python-modules/pyramid/default.nix
@@ -13,7 +13,6 @@
 , webob
 , zope_deprecation
 , zope_interface
-, isPy35
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyro4/default.nix b/pkgs/development/python-modules/pyro4/default.nix
index ffb8584f9411..867e42485975 100644
--- a/pkgs/development/python-modules/pyro4/default.nix
+++ b/pkgs/development/python-modules/pyro4/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , serpent
 , dill
 , cloudpickle
diff --git a/pkgs/development/python-modules/pyside2-tools/default.nix b/pkgs/development/python-modules/pyside2-tools/default.nix
index 20f1a572f1b4..66d0fa51f211 100644
--- a/pkgs/development/python-modules/pyside2-tools/default.nix
+++ b/pkgs/development/python-modules/pyside2-tools/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, wrapPython, python, fetchurl, lib, stdenv, cmake, qt5,
+{ wrapPython, python, lib, stdenv, cmake, qt5,
   shiboken2, pyside2 }:
 
 stdenv.mkDerivation {
diff --git a/pkgs/development/python-modules/pyside2/default.nix b/pkgs/development/python-modules/pyside2/default.nix
index c2786b647d62..bf16e1522dde 100644
--- a/pkgs/development/python-modules/pyside2/default.nix
+++ b/pkgs/development/python-modules/pyside2/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, python, fetchurl, lib, stdenv,
+{ python, fetchurl, lib, stdenv,
   cmake, ninja, qt5, shiboken2 }:
 
 stdenv.mkDerivation rec {
diff --git a/pkgs/development/python-modules/pyslurm/default.nix b/pkgs/development/python-modules/pyslurm/default.nix
index abb85930e40e..f25651dcf98b 100644
--- a/pkgs/development/python-modules/pyslurm/default.nix
+++ b/pkgs/development/python-modules/pyslurm/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchFromGitHub, fetchpatch, buildPythonPackage, cython, slurm }:
+{ lib, fetchFromGitHub, buildPythonPackage, cython, slurm }:
 
 buildPythonPackage rec {
   pname = "pyslurm";
diff --git a/pkgs/development/python-modules/pysnow/default.nix b/pkgs/development/python-modules/pysnow/default.nix
index d8d6b4f4401b..1c9fccb70687 100644
--- a/pkgs/development/python-modules/pysnow/default.nix
+++ b/pkgs/development/python-modules/pysnow/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, fetchPypi
 , fetchFromGitHub
 , poetry
 , brotli
diff --git a/pkgs/development/python-modules/pysparse/default.nix b/pkgs/development/python-modules/pysparse/default.nix
index fda5ad596088..02c1c36d0837 100644
--- a/pkgs/development/python-modules/pysparse/default.nix
+++ b/pkgs/development/python-modules/pysparse/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchFromGitHub
 , numpy
-, setuptools
 , blas
 , lapack
 , isPy27
diff --git a/pkgs/development/python-modules/pyspcwebgw/default.nix b/pkgs/development/python-modules/pyspcwebgw/default.nix
index 8c901f17747a..e1a04a9a469d 100644
--- a/pkgs/development/python-modules/pyspcwebgw/default.nix
+++ b/pkgs/development/python-modules/pyspcwebgw/default.nix
@@ -7,7 +7,6 @@
 , pytest-asyncio
 , pytestCheckHook
 , pythonOlder
-, requests
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pytest-arraydiff/default.nix b/pkgs/development/python-modules/pytest-arraydiff/default.nix
index 5c6f9cf2b852..bfbec757b1d7 100644
--- a/pkgs/development/python-modules/pytest-arraydiff/default.nix
+++ b/pkgs/development/python-modules/pytest-arraydiff/default.nix
@@ -4,7 +4,6 @@
 , numpy
 , six
 , pytest
-, astropy
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pytest-datadir/default.nix b/pkgs/development/python-modules/pytest-datadir/default.nix
index 26c22dfa388b..d53734618b3e 100644
--- a/pkgs/development/python-modules/pytest-datadir/default.nix
+++ b/pkgs/development/python-modules/pytest-datadir/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchFromGitHub
-, setuptools-scm, pytest, cmake
+, setuptools-scm, pytest
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pytest-freezegun/default.nix b/pkgs/development/python-modules/pytest-freezegun/default.nix
index 2fbc7a651c18..3ba67867a1aa 100644
--- a/pkgs/development/python-modules/pytest-freezegun/default.nix
+++ b/pkgs/development/python-modules/pytest-freezegun/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, isPy27
 , fetchFromGitHub
 , freezegun
 , pytest
diff --git a/pkgs/development/python-modules/pytest-mock/2.nix b/pkgs/development/python-modules/pytest-mock/2.nix
index ad1e7f0c3fd3..3ccaa7481d7d 100644
--- a/pkgs/development/python-modules/pytest-mock/2.nix
+++ b/pkgs/development/python-modules/pytest-mock/2.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , isPy3k
 , pytest
 , mock
diff --git a/pkgs/development/python-modules/pytest-repeat/default.nix b/pkgs/development/python-modules/pytest-repeat/default.nix
index 0652bcacbccd..1b3721282159 100644
--- a/pkgs/development/python-modules/pytest-repeat/default.nix
+++ b/pkgs/development/python-modules/pytest-repeat/default.nix
@@ -3,7 +3,6 @@
 , fetchPypi
 , setuptools-scm
 , pytest
-, fetchpatch
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/python-engineio/default.nix b/pkgs/development/python-modules/python-engineio/default.nix
index 33f74d932465..baf385bb7d78 100644
--- a/pkgs/development/python-modules/python-engineio/default.nix
+++ b/pkgs/development/python-modules/python-engineio/default.nix
@@ -10,7 +10,6 @@
 , pytestCheckHook
 , pythonOlder
 , requests
-, six
 , tornado
 , websocket-client
 }:
diff --git a/pkgs/development/python-modules/python-hpilo/default.nix b/pkgs/development/python-modules/python-hpilo/default.nix
index f151e3ffb4cd..c23f9eb4ac26 100644
--- a/pkgs/development/python-modules/python-hpilo/default.nix
+++ b/pkgs/development/python-modules/python-hpilo/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, utils
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/python-jsonrpc-server/default.nix b/pkgs/development/python-modules/python-jsonrpc-server/default.nix
index a6d0bf800ea6..a8cbec25a996 100644
--- a/pkgs/development/python-modules/python-jsonrpc-server/default.nix
+++ b/pkgs/development/python-modules/python-jsonrpc-server/default.nix
@@ -1,7 +1,6 @@
 { lib, buildPythonPackage, fetchFromGitHub, pythonOlder
 , pytestCheckHook, mock, pytest-cov, coverage
-, future, futures ? null, ujson, isPy38
-}:
+, future, futures ? null, ujson}:
 
 buildPythonPackage rec {
   pname = "python-jsonrpc-server";
diff --git a/pkgs/development/python-modules/python-pipedrive/default.nix b/pkgs/development/python-modules/python-pipedrive/default.nix
index d776002b2129..a8d96043d8d7 100644
--- a/pkgs/development/python-modules/python-pipedrive/default.nix
+++ b/pkgs/development/python-modules/python-pipedrive/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , httplib2
 }:
 
diff --git a/pkgs/development/python-modules/python-slugify/default.nix b/pkgs/development/python-modules/python-slugify/default.nix
index 14d15df16f68..5b7af8ad7360 100644
--- a/pkgs/development/python-modules/python-slugify/default.nix
+++ b/pkgs/development/python-modules/python-slugify/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , pytestCheckHook
-, python
 , pythonOlder
 , text-unidecode
 , unidecode
diff --git a/pkgs/development/python-modules/python-songpal/default.nix b/pkgs/development/python-modules/python-songpal/default.nix
index 180e5b3d833e..ba17dd81166d 100644
--- a/pkgs/development/python-modules/python-songpal/default.nix
+++ b/pkgs/development/python-modules/python-songpal/default.nix
@@ -9,7 +9,6 @@
 , attrs
 , click
 , importlib-metadata
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/python-string-utils/default.nix b/pkgs/development/python-modules/python-string-utils/default.nix
index d8d1b136fb3e..1185959f0c6f 100644
--- a/pkgs/development/python-modules/python-string-utils/default.nix
+++ b/pkgs/development/python-modules/python-string-utils/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pytest
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pythonocc-core/default.nix b/pkgs/development/python-modules/pythonocc-core/default.nix
index d1d06d22c641..9039c52a8a42 100644
--- a/pkgs/development/python-modules/pythonocc-core/default.nix
+++ b/pkgs/development/python-modules/pythonocc-core/default.nix
@@ -1,5 +1,4 @@
-{ lib, stdenv, python, fetchFromGitHub, cmake, swig, ninja
-, opencascade, smesh, freetype, libGL, libGLU, libX11
+{ lib, stdenv, python, fetchFromGitHub, cmake, swig, opencascade, smesh, freetype, libGL, libGLU, libX11
 , Cocoa }:
 
 stdenv.mkDerivation rec {
diff --git a/pkgs/development/python-modules/pytm/default.nix b/pkgs/development/python-modules/pytm/default.nix
index abae39aff062..a1567c9383ed 100644
--- a/pkgs/development/python-modules/pytm/default.nix
+++ b/pkgs/development/python-modules/pytm/default.nix
@@ -1,5 +1,4 @@
 { buildPythonPackage
-, fetchPypi
 , fetchFromGitHub
 , lib
 , pythonOlder
diff --git a/pkgs/development/python-modules/pytorch/default.nix b/pkgs/development/python-modules/pytorch/default.nix
index 05f88ca64721..564087769acd 100644
--- a/pkgs/development/python-modules/pytorch/default.nix
+++ b/pkgs/development/python-modules/pytorch/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchFromGitHub, fetchpatch, buildPythonPackage, python,
+{ stdenv, lib, fetchFromGitHub, buildPythonPackage, python,
   cudaSupport ? false, cudatoolkit, cudnn, nccl, magma,
   mklDnnSupport ? true, useSystemNccl ? true,
   MPISupport ? false, mpi,
diff --git a/pkgs/development/python-modules/pyvis/default.nix b/pkgs/development/python-modules/pyvis/default.nix
index a0a024c56ca7..498dba97b325 100644
--- a/pkgs/development/python-modules/pyvis/default.nix
+++ b/pkgs/development/python-modules/pyvis/default.nix
@@ -1,5 +1,4 @@
 { lib
-, isPy3k
 , fetchFromGitHub
 , fetchpatch
 , buildPythonPackage
diff --git a/pkgs/development/python-modules/pywbem/default.nix b/pkgs/development/python-modules/pywbem/default.nix
index be1d0607098f..c5203ac7890d 100644
--- a/pkgs/development/python-modules/pywbem/default.nix
+++ b/pkgs/development/python-modules/pywbem/default.nix
@@ -1,6 +1,5 @@
 { lib, buildPythonPackage, fetchPypi, libxml2
-, m2crypto, ply, pyyaml, six, pbr, pythonOlder, isPy37
-, nocasedict, nocaselist, yamlloader, requests-mock
+, m2crypto, ply, pyyaml, six, pbr, pythonOlder, nocasedict, nocaselist, yamlloader, requests-mock
 , httpretty, lxml, mock, pytest, requests, decorator, unittest2
 , FormEncode, testfixtures, pytz
 }:
diff --git a/pkgs/development/python-modules/pyxb/default.nix b/pkgs/development/python-modules/pyxb/default.nix
index 3be79736e555..de4c4e8b9689 100644
--- a/pkgs/development/python-modules/pyxb/default.nix
+++ b/pkgs/development/python-modules/pyxb/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyxdg/default.nix b/pkgs/development/python-modules/pyxdg/default.nix
index c0e8b8063ba0..0ad5777e6377 100644
--- a/pkgs/development/python-modules/pyxdg/default.nix
+++ b/pkgs/development/python-modules/pyxdg/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitLab
-, nose
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/qimage2ndarray/default.nix b/pkgs/development/python-modules/qimage2ndarray/default.nix
index 3949361a0a8c..0bb9ed2199a2 100644
--- a/pkgs/development/python-modules/qimage2ndarray/default.nix
+++ b/pkgs/development/python-modules/qimage2ndarray/default.nix
@@ -1,4 +1,4 @@
-{ lib, pkgs, buildPythonPackage, fetchPypi, isPy3k
+{ lib, buildPythonPackage, fetchPypi, isPy3k
 , numpy
 , pyqt5
 }:
diff --git a/pkgs/development/python-modules/qmk-dotty-dict/default.nix b/pkgs/development/python-modules/qmk-dotty-dict/default.nix
index c67d911a3eda..07b684beb7c7 100644
--- a/pkgs/development/python-modules/qmk-dotty-dict/default.nix
+++ b/pkgs/development/python-modules/qmk-dotty-dict/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, fetchPypi, lib, pytest, setuptools-scm }:
+{ buildPythonPackage, fetchPypi, lib, setuptools-scm }:
 
 buildPythonPackage rec {
   pname = "qmk_dotty_dict";
diff --git a/pkgs/development/python-modules/rfc3339-validator/default.nix b/pkgs/development/python-modules/rfc3339-validator/default.nix
index 6294eee7f346..d821d672a294 100644
--- a/pkgs/development/python-modules/rfc3339-validator/default.nix
+++ b/pkgs/development/python-modules/rfc3339-validator/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, fetchpatch
 , fetchPypi
 , pytestCheckHook
 , hypothesis
diff --git a/pkgs/development/python-modules/rpyc/default.nix b/pkgs/development/python-modules/rpyc/default.nix
index e549a00c8948..e56aed2aeb7c 100644
--- a/pkgs/development/python-modules/rpyc/default.nix
+++ b/pkgs/development/python-modules/rpyc/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, nose
 , plumbum
 , pytestCheckHook
 }:
diff --git a/pkgs/development/python-modules/rsa/default.nix b/pkgs/development/python-modules/rsa/default.nix
index 247fd2a2a7f8..b4668e3d2eaf 100644
--- a/pkgs/development/python-modules/rsa/default.nix
+++ b/pkgs/development/python-modules/rsa/default.nix
@@ -6,7 +6,6 @@
 , mock
 , isPy3k
 , pythonOlder
-, poetry
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/ruffus/default.nix b/pkgs/development/python-modules/ruffus/default.nix
index a425c077343f..714ffebd8a4e 100644
--- a/pkgs/development/python-modules/ruffus/default.nix
+++ b/pkgs/development/python-modules/ruffus/default.nix
@@ -3,7 +3,6 @@
 , fetchFromGitHub
 , hostname
 , pytest
-, python
 , lib, stdenv
 }:
 
diff --git a/pkgs/development/python-modules/sanic/default.nix b/pkgs/development/python-modules/sanic/default.nix
index ae15567a29cd..a3b21168b228 100644
--- a/pkgs/development/python-modules/sanic/default.nix
+++ b/pkgs/development/python-modules/sanic/default.nix
@@ -5,7 +5,6 @@
 , buildPythonPackage
 , doCheck ? true
 , fetchFromGitHub
-, fetchpatch
 , gunicorn
 , httptools
 , multidict
diff --git a/pkgs/development/python-modules/scikit-build/default.nix b/pkgs/development/python-modules/scikit-build/default.nix
index 749e07ef840e..bc72f76bf223 100644
--- a/pkgs/development/python-modules/scikit-build/default.nix
+++ b/pkgs/development/python-modules/scikit-build/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , distro
 , packaging
 , setuptools
diff --git a/pkgs/development/python-modules/scikit-hep-testdata/default.nix b/pkgs/development/python-modules/scikit-hep-testdata/default.nix
index c3cb38fbe6a6..0f76efe2ea59 100644
--- a/pkgs/development/python-modules/scikit-hep-testdata/default.nix
+++ b/pkgs/development/python-modules/scikit-hep-testdata/default.nix
@@ -5,7 +5,6 @@
 , importlib-resources
 , pyyaml
 , requests
-, pytestCheckHook
 , setuptools-scm
 }:
 
diff --git a/pkgs/development/python-modules/scikits-odes/default.nix b/pkgs/development/python-modules/scikits-odes/default.nix
index f8f48793e902..c96cf1b2ddd4 100644
--- a/pkgs/development/python-modules/scikits-odes/default.nix
+++ b/pkgs/development/python-modules/scikits-odes/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, fetchurl
 , cython
 , enum34
 , gfortran
diff --git a/pkgs/development/python-modules/scrapy/default.nix b/pkgs/development/python-modules/scrapy/default.nix
index dd06a04e080a..dc05f5579817 100644
--- a/pkgs/development/python-modules/scrapy/default.nix
+++ b/pkgs/development/python-modules/scrapy/default.nix
@@ -13,11 +13,9 @@
 , jmespath
 , lxml
 , parsel
-, pillow
 , protego
 , pydispatcher
 , pyopenssl
-, pytest-twisted
 , pytestCheckHook
 , pythonOlder
 , queuelib
diff --git a/pkgs/development/python-modules/seahub/default.nix b/pkgs/development/python-modules/seahub/default.nix
index 3ed0d9acfedc..81728dfe7864 100644
--- a/pkgs/development/python-modules/seahub/default.nix
+++ b/pkgs/development/python-modules/seahub/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchFromGitHub, python3Packages, makeWrapper }:
+{ lib, fetchFromGitHub, python3Packages, makeWrapper }:
 
 python3Packages.buildPythonPackage rec {
   pname = "seahub";
diff --git a/pkgs/development/python-modules/seqeval/default.nix b/pkgs/development/python-modules/seqeval/default.nix
index 9ed516e4d5c3..73ad00332bf8 100644
--- a/pkgs/development/python-modules/seqeval/default.nix
+++ b/pkgs/development/python-modules/seqeval/default.nix
@@ -3,7 +3,6 @@
 , fetchFromGitHub
 , numpy
 , scikit-learn
-, perl
 , pytestCheckHook
 }:
 
diff --git a/pkgs/development/python-modules/setuptools-scm/tests.nix b/pkgs/development/python-modules/setuptools-scm/tests.nix
index 174b54aca9cd..b90797abf7eb 100644
--- a/pkgs/development/python-modules/setuptools-scm/tests.nix
+++ b/pkgs/development/python-modules/setuptools-scm/tests.nix
@@ -1,5 +1,4 @@
-{ lib
-, buildPythonPackage
+{ buildPythonPackage
 , setuptools-scm
 , pytestCheckHook
 , git
diff --git a/pkgs/development/python-modules/setuptools/44.0.nix b/pkgs/development/python-modules/setuptools/44.0.nix
index 40265dc639b9..ca70a1061512 100644
--- a/pkgs/development/python-modules/setuptools/44.0.nix
+++ b/pkgs/development/python-modules/setuptools/44.0.nix
@@ -2,9 +2,6 @@
 , buildPythonPackage
 , fetchFromGitHub
 , python
-, wrapPython
-, unzip
-, callPackage
 , bootstrapped-pip
 , lib
 , pipInstallHook
diff --git a/pkgs/development/python-modules/setuptools/default.nix b/pkgs/development/python-modules/setuptools/default.nix
index 62e7fb686c4a..e748334b5ad1 100644
--- a/pkgs/development/python-modules/setuptools/default.nix
+++ b/pkgs/development/python-modules/setuptools/default.nix
@@ -1,11 +1,7 @@
 { stdenv
-, fetchurl
 , buildPythonPackage
 , fetchFromGitHub
 , python
-, wrapPython
-, unzip
-, callPackage
 , bootstrapped-pip
 , lib
 , pipInstallHook
diff --git a/pkgs/development/python-modules/shapely/default.nix b/pkgs/development/python-modules/shapely/default.nix
index 7cf75e12cb54..818cce6a5670 100644
--- a/pkgs/development/python-modules/shapely/default.nix
+++ b/pkgs/development/python-modules/shapely/default.nix
@@ -8,7 +8,6 @@
 , pytestCheckHook
 , cython
 , numpy
-, fetchpatch
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/shiboken2/default.nix b/pkgs/development/python-modules/shiboken2/default.nix
index 23836addd0ca..11461a9545cd 100644
--- a/pkgs/development/python-modules/shiboken2/default.nix
+++ b/pkgs/development/python-modules/shiboken2/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, python, fetchurl, lib, stdenv, pyside2
+{ python, lib, stdenv, pyside2
 , cmake, qt5, llvmPackages }:
 
 stdenv.mkDerivation {
diff --git a/pkgs/development/python-modules/simple-salesforce/default.nix b/pkgs/development/python-modules/simple-salesforce/default.nix
index ee0d273c1869..d2b36af12a3b 100644
--- a/pkgs/development/python-modules/simple-salesforce/default.nix
+++ b/pkgs/development/python-modules/simple-salesforce/default.nix
@@ -3,8 +3,6 @@
 , buildPythonPackage
 , authlib
 , requests
-, mock
-, isPy27
 , nose
 , pytz
 , responses
diff --git a/pkgs/development/python-modules/spacy/legacy.nix b/pkgs/development/python-modules/spacy/legacy.nix
index 9bb37e9beb18..b09983aeae3d 100644
--- a/pkgs/development/python-modules/spacy/legacy.nix
+++ b/pkgs/development/python-modules/spacy/legacy.nix
@@ -1,7 +1,6 @@
 { lib
 , fetchPypi
 , buildPythonPackage
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/spglib/default.nix b/pkgs/development/python-modules/spglib/default.nix
index a050aadb4b20..e1d87bba03e3 100644
--- a/pkgs/development/python-modules/spglib/default.nix
+++ b/pkgs/development/python-modules/spglib/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, fetchpatch, numpy, nose, pyyaml }:
+{ lib, buildPythonPackage, fetchPypi, numpy, nose, pyyaml }:
 
 buildPythonPackage rec {
   pname = "spglib";
diff --git a/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix b/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix
index 94799dc6a4b8..dcb96f317d4e 100644
--- a/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix
@@ -1,5 +1,4 @@
 { lib
-, substituteAll
 , buildPythonPackage
 , fetchPypi
 , sphinx
diff --git a/pkgs/development/python-modules/spyder/default.nix b/pkgs/development/python-modules/spyder/default.nix
index 85a1293ab95f..25389f2784ed 100644
--- a/pkgs/development/python-modules/spyder/default.nix
+++ b/pkgs/development/python-modules/spyder/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchPypi, isPy27, makeDesktopItem, intervaltree,
-  jedi, pycodestyle, psutil, pyflakes, rope, numpy, scipy, matplotlib, pylint,
+  jedi, pycodestyle, psutil, rope, numpy, scipy, matplotlib, pylint,
   keyring, numpydoc, qtconsole, qtawesome, nbconvert, mccabe, pyopengl,
   cloudpickle, pygments, spyder-kernels, qtpy, pyzmq, chardet, qdarkstyle,
   watchdog, python-language-server, pyqtwebengine, atomicwrites, pyxdg,
diff --git a/pkgs/development/python-modules/sqlalchemy-citext/default.nix b/pkgs/development/python-modules/sqlalchemy-citext/default.nix
index 8fc03d788af9..9ec70d67f864 100644
--- a/pkgs/development/python-modules/sqlalchemy-citext/default.nix
+++ b/pkgs/development/python-modules/sqlalchemy-citext/default.nix
@@ -3,7 +3,6 @@
 , fetchPypi
 , psycopg2
 , sqlalchemy
-, python
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sqlalchemy-i18n/default.nix b/pkgs/development/python-modules/sqlalchemy-i18n/default.nix
index b3038c5d242e..83d813b3dbd9 100644
--- a/pkgs/development/python-modules/sqlalchemy-i18n/default.nix
+++ b/pkgs/development/python-modules/sqlalchemy-i18n/default.nix
@@ -3,7 +3,6 @@
 , buildPythonPackage
 , sqlalchemy
 , sqlalchemy-utils
-, psycopg2
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/starlette/default.nix b/pkgs/development/python-modules/starlette/default.nix
index e8c130692125..a9fbc74f4479 100644
--- a/pkgs/development/python-modules/starlette/default.nix
+++ b/pkgs/development/python-modules/starlette/default.nix
@@ -2,7 +2,6 @@
 , stdenv
 , buildPythonPackage
 , fetchFromGitHub
-, isPy27
 , aiofiles
 , anyio
 , contextlib2
diff --git a/pkgs/development/python-modules/stdiomask/default.nix b/pkgs/development/python-modules/stdiomask/default.nix
index 8ef59074fc00..1ad09c22da8e 100644
--- a/pkgs/development/python-modules/stdiomask/default.nix
+++ b/pkgs/development/python-modules/stdiomask/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/stdlib-list/default.nix b/pkgs/development/python-modules/stdlib-list/default.nix
index d654d2588066..fb46ee24cd50 100644
--- a/pkgs/development/python-modules/stdlib-list/default.nix
+++ b/pkgs/development/python-modules/stdlib-list/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , isPy27
 , fetchPypi
-, python
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/supervisor/default.nix b/pkgs/development/python-modules/supervisor/default.nix
index a7153b07750f..dc722e947d09 100644
--- a/pkgs/development/python-modules/supervisor/default.nix
+++ b/pkgs/development/python-modules/supervisor/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, buildPythonPackage, isPy3k, fetchPypi
+{ stdenv, lib, buildPythonPackage, fetchPypi
 , mock
 , pytest
 , setuptools
diff --git a/pkgs/development/python-modules/svgwrite/default.nix b/pkgs/development/python-modules/svgwrite/default.nix
index 4d30db35cce0..5b1e863c7785 100644
--- a/pkgs/development/python-modules/svgwrite/default.nix
+++ b/pkgs/development/python-modules/svgwrite/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, isPy3k
 , pythonOlder
 , pytest
 }:
diff --git a/pkgs/development/python-modules/swagger-spec-validator/default.nix b/pkgs/development/python-modules/swagger-spec-validator/default.nix
index bdb78096aef2..71c9cf16780e 100644
--- a/pkgs/development/python-modules/swagger-spec-validator/default.nix
+++ b/pkgs/development/python-modules/swagger-spec-validator/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pyyaml, jsonschema, six, pytest, mock, isPy3k }:
+{ lib, buildPythonPackage, fetchFromGitHub, pyyaml, jsonschema, six, pytest, mock }:
 
 buildPythonPackage rec {
   pname = "swagger-spec-validator";
diff --git a/pkgs/development/python-modules/swspotify/default.nix b/pkgs/development/python-modules/swspotify/default.nix
index 85cd2ed7c168..df2c00ad7c0f 100644
--- a/pkgs/development/python-modules/swspotify/default.nix
+++ b/pkgs/development/python-modules/swspotify/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, buildPythonPackage, fetchFromGitHub, poetry-core, requests
+{ lib, stdenv, buildPythonPackage, fetchFromGitHub, requests
 , pytestCheckHook, flask, flask-cors, dbus-python, mock, isPy27 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sympy/1_5.nix b/pkgs/development/python-modules/sympy/1_5.nix
index 00125f43bfc3..59c9ab878550 100644
--- a/pkgs/development/python-modules/sympy/1_5.nix
+++ b/pkgs/development/python-modules/sympy/1_5.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , glibcLocales
 , mpmath
 }:
diff --git a/pkgs/development/python-modules/sympy/default.nix b/pkgs/development/python-modules/sympy/default.nix
index fcaa0bc27711..7d6206f04c80 100644
--- a/pkgs/development/python-modules/sympy/default.nix
+++ b/pkgs/development/python-modules/sympy/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , glibcLocales
 , mpmath
 }:
diff --git a/pkgs/development/python-modules/tables/default.nix b/pkgs/development/python-modules/tables/default.nix
index 34e9ef087a9b..245e619e89e0 100644
--- a/pkgs/development/python-modules/tables/default.nix
+++ b/pkgs/development/python-modules/tables/default.nix
@@ -1,10 +1,8 @@
 { lib
 , fetchPypi
-, fetchurl
 , fetchpatch
 , buildPythonPackage
 , pythonOlder
-, python
 , bzip2
 , c-blosc
 , cython
diff --git a/pkgs/development/python-modules/telethon/default.nix b/pkgs/development/python-modules/telethon/default.nix
index c4479ca63201..ad65b48ae73c 100644
--- a/pkgs/development/python-modules/telethon/default.nix
+++ b/pkgs/development/python-modules/telethon/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, openssl, async_generator, rsa, pyaes, pythonOlder }:
+{ lib, buildPythonPackage, fetchPypi, openssl, rsa, pyaes, pythonOlder }:
 
 buildPythonPackage rec {
   pname = "telethon";
diff --git a/pkgs/development/python-modules/tensorflow/bin.nix b/pkgs/development/python-modules/tensorflow/bin.nix
index 8d8690d3e5c5..aae4406d0d79 100644
--- a/pkgs/development/python-modules/tensorflow/bin.nix
+++ b/pkgs/development/python-modules/tensorflow/bin.nix
@@ -2,8 +2,7 @@
 , lib
 , fetchurl
 , buildPythonPackage
-, isPy3k, pythonOlder, pythonAtLeast, isPy38
-, astor
+, isPy3k, pythonOlder, pythonAtLeast, astor
 , gast
 , google-pasta
 , wrapt
@@ -25,7 +24,6 @@
 , cudnn ? null
 , zlib
 , python
-, symlinkJoin
 , keras-applications
 , keras-preprocessing
 , addOpenGLRunpath
diff --git a/pkgs/development/python-modules/tensorflow/default.nix b/pkgs/development/python-modules/tensorflow/default.nix
index e6c103651e36..6db4090e34ab 100644
--- a/pkgs/development/python-modules/tensorflow/default.nix
+++ b/pkgs/development/python-modules/tensorflow/default.nix
@@ -1,10 +1,10 @@
 { stdenv, bazel_3, buildBazelPackage, isPy3k, lib, fetchFromGitHub, symlinkJoin
 , addOpenGLRunpath, fetchpatch
 # Python deps
-, buildPythonPackage, pythonOlder, pythonAtLeast, python
+, buildPythonPackage, pythonOlder, python
 # Python libraries
 , numpy, tensorflow-tensorboard_2, absl-py
-, future, setuptools, wheel, keras-preprocessing, google-pasta
+, setuptools, wheel, keras-preprocessing, google-pasta
 , opt-einsum, astunparse, h5py
 , termcolor, grpcio, six, wrapt, protobuf, tensorflow-estimator_2
 , dill, flatbuffers-python, tblib, typing-extensions
diff --git a/pkgs/development/python-modules/testfixtures/default.nix b/pkgs/development/python-modules/testfixtures/default.nix
index be217a16b07a..99be9957a5ef 100644
--- a/pkgs/development/python-modules/testfixtures/default.nix
+++ b/pkgs/development/python-modules/testfixtures/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, fetchpatch
 , fetchPypi
 , isPy27
 , mock
diff --git a/pkgs/development/python-modules/textfsm/default.nix b/pkgs/development/python-modules/textfsm/default.nix
index fed2f7c3e3fe..ae9bda2b8b84 100644
--- a/pkgs/development/python-modules/textfsm/default.nix
+++ b/pkgs/development/python-modules/textfsm/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , six
 , future
 , pytestCheckHook
diff --git a/pkgs/development/python-modules/thinc/default.nix b/pkgs/development/python-modules/thinc/default.nix
index f2a70500a5fa..d2123d207eb1 100644
--- a/pkgs/development/python-modules/thinc/default.nix
+++ b/pkgs/development/python-modules/thinc/default.nix
@@ -15,7 +15,6 @@
 , mock
 , murmurhash
 , numpy
-, pathlib
 , plac
 , pythonOlder
 , preshed
diff --git a/pkgs/development/python-modules/tld/default.nix b/pkgs/development/python-modules/tld/default.nix
index 875ab959a783..178ce54c8846 100644
--- a/pkgs/development/python-modules/tld/default.nix
+++ b/pkgs/development/python-modules/tld/default.nix
@@ -5,7 +5,6 @@
 , fetchPypi
 , pytest-cov
 , pytestCheckHook
-, six
 , tox
 }:
 
diff --git a/pkgs/development/python-modules/todoist/default.nix b/pkgs/development/python-modules/todoist/default.nix
index 397d21a83854..d4797bdfad35 100644
--- a/pkgs/development/python-modules/todoist/default.nix
+++ b/pkgs/development/python-modules/todoist/default.nix
@@ -1,5 +1,5 @@
 { lib, fetchPypi, buildPythonPackage
-, requests, fetchpatch, pythonOlder, typing
+, requests, pythonOlder, typing
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/toggl-cli/default.nix b/pkgs/development/python-modules/toggl-cli/default.nix
index fb39831a0d18..54f7e6ddf9ca 100644
--- a/pkgs/development/python-modules/toggl-cli/default.nix
+++ b/pkgs/development/python-modules/toggl-cli/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, pythonAtLeast, pythonOlder, click
+{ lib, buildPythonPackage, fetchPypi, pythonOlder, click
 , click-completion, factory_boy, faker, inquirer, notify-py, pbr, pendulum
 , ptable, pytestCheckHook, pytest-cov, pytest-mock, requests, twine
 , validate-email }:
diff --git a/pkgs/development/python-modules/traitlets/default.nix b/pkgs/development/python-modules/traitlets/default.nix
index 23412d0a6940..9c09a206f4d3 100644
--- a/pkgs/development/python-modules/traitlets/default.nix
+++ b/pkgs/development/python-modules/traitlets/default.nix
@@ -6,7 +6,6 @@
 , mock
 , ipython_genutils
 , decorator
-, enum34
 , pythonOlder
 , six
 }:
diff --git a/pkgs/development/python-modules/traits/default.nix b/pkgs/development/python-modules/traits/default.nix
index 2d88fb3221aa..d0c8f26f8aae 100644
--- a/pkgs/development/python-modules/traits/default.nix
+++ b/pkgs/development/python-modules/traits/default.nix
@@ -3,7 +3,6 @@
 , fetchPypi
 , isPy27
 , python
-, pytest
 , numpy
 }:
 
diff --git a/pkgs/development/python-modules/tweepy/default.nix b/pkgs/development/python-modules/tweepy/default.nix
index ee5c8582948d..7892975a45d9 100644
--- a/pkgs/development/python-modules/tweepy/default.nix
+++ b/pkgs/development/python-modules/tweepy/default.nix
@@ -1,20 +1,48 @@
-{ lib, buildPythonPackage, fetchPypi, requests, six, requests_oauthlib }:
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, oauthlib
+, requests
+, pythonOlder
+, vcrpy
+, pytestCheckHook
+, requests_oauthlib
+}:
 
 buildPythonPackage rec {
   pname = "tweepy";
-  version = "4.0.1";
+  version = "4.3.0";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "3bbb14a0ddef1ca8c9e8686ab2f647163afa02a6bab83507335ce647e9653a90";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-lS/98DRpJH1UGGNzwqVVUJOeul+BX+I3e+ysmC0oL3I=";
   };
 
-  doCheck = false;
-  propagatedBuildInputs = [ requests six requests_oauthlib ];
+  propagatedBuildInputs = [
+    aiohttp
+    oauthlib
+    requests
+    requests_oauthlib
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    vcrpy
+  ];
+
+  pythonImportsCheck = [
+    "tweepy"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/tweepy/tweepy";
-    description = "Twitter library for python";
+    description = "Twitter library for Python";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
   };
diff --git a/pkgs/development/python-modules/twill/default.nix b/pkgs/development/python-modules/twill/default.nix
index 36a7edcf7de8..febb0f87d440 100644
--- a/pkgs/development/python-modules/twill/default.nix
+++ b/pkgs/development/python-modules/twill/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, nose
+{ lib, buildPythonPackage, fetchPypi, nose
 , lxml
 , requests
 , pyparsing
diff --git a/pkgs/development/python-modules/txtorcon/default.nix b/pkgs/development/python-modules/txtorcon/default.nix
index 23fa4735ef70..42568bbca111 100644
--- a/pkgs/development/python-modules/txtorcon/default.nix
+++ b/pkgs/development/python-modules/txtorcon/default.nix
@@ -1,6 +1,6 @@
 { lib, python, buildPythonPackage, pythonOlder, fetchPypi, isPy3k, incremental, ipaddress, twisted
 , automat, zope_interface, idna, pyopenssl, service-identity, pytest, mock, lsof
-, GeoIP, isPy27}:
+, GeoIP}:
 
 buildPythonPackage rec {
   pname = "txtorcon";
diff --git a/pkgs/development/python-modules/typecode/libmagic.nix b/pkgs/development/python-modules/typecode/libmagic.nix
index 9b652e664e52..5668b62e200f 100644
--- a/pkgs/development/python-modules/typecode/libmagic.nix
+++ b/pkgs/development/python-modules/typecode/libmagic.nix
@@ -4,7 +4,6 @@
 , plugincode
 , file
 , zlib
-, pytest
 }:
 buildPythonPackage rec {
   pname = "typecode-libmagic";
diff --git a/pkgs/development/python-modules/typing-inspect/default.nix b/pkgs/development/python-modules/typing-inspect/default.nix
index 4f09d6002d5c..1e5303b7b09e 100644
--- a/pkgs/development/python-modules/typing-inspect/default.nix
+++ b/pkgs/development/python-modules/typing-inspect/default.nix
@@ -3,7 +3,6 @@
 , fetchPypi
 , typing-extensions
 , mypy-extensions
-, isPy39
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/urllib3/2.nix b/pkgs/development/python-modules/urllib3/2.nix
index f1eea4c31d8d..a52e68eac5e3 100644
--- a/pkgs/development/python-modules/urllib3/2.nix
+++ b/pkgs/development/python-modules/urllib3/2.nix
@@ -13,7 +13,6 @@
 , pytest-freezegun
 , pytest-timeout
 , pytestCheckHook
-, pythonOlder
 , tornado
 , trustme
 }:
diff --git a/pkgs/development/python-modules/urllib3/default.nix b/pkgs/development/python-modules/urllib3/default.nix
index cf7afaa173e2..91bc6e68eb36 100644
--- a/pkgs/development/python-modules/urllib3/default.nix
+++ b/pkgs/development/python-modules/urllib3/default.nix
@@ -12,7 +12,6 @@
 , pytest-freezegun
 , pytest-timeout
 , pytestCheckHook
-, pythonOlder
 , tornado
 , trustme
 }:
diff --git a/pkgs/development/python-modules/uvicorn/default.nix b/pkgs/development/python-modules/uvicorn/default.nix
index 22e291c4b598..57c6bf925357 100644
--- a/pkgs/development/python-modules/uvicorn/default.nix
+++ b/pkgs/development/python-modules/uvicorn/default.nix
@@ -9,7 +9,6 @@
 , httptools
 , python-dotenv
 , pyyaml
-, requests
 , typing-extensions
 , uvloop
 , watchgod
diff --git a/pkgs/development/python-modules/vcver/default.nix b/pkgs/development/python-modules/vcver/default.nix
index 7277c61264f3..503a8f7df7e0 100644
--- a/pkgs/development/python-modules/vcver/default.nix
+++ b/pkgs/development/python-modules/vcver/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchFromGitHub
 , packaging
-, python
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/vdirsyncer/default.nix b/pkgs/development/python-modules/vdirsyncer/default.nix
index cdd8ff02b97e..edb61ccb7034 100644
--- a/pkgs/development/python-modules/vdirsyncer/default.nix
+++ b/pkgs/development/python-modules/vdirsyncer/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , pythonOlder
 , click
 , click-log
diff --git a/pkgs/development/python-modules/vowpalwabbit/default.nix b/pkgs/development/python-modules/vowpalwabbit/default.nix
index 1a1c6a33acb3..4cd6fb1128cd 100644
--- a/pkgs/development/python-modules/vowpalwabbit/default.nix
+++ b/pkgs/development/python-modules/vowpalwabbit/default.nix
@@ -6,7 +6,6 @@
 , python
 , zlib
 , ncurses
-, pytest
 , docutils
 , pygments
 , numpy
diff --git a/pkgs/development/python-modules/vsts-cd-manager/default.nix b/pkgs/development/python-modules/vsts-cd-manager/default.nix
index 5946fec05b75..b1de4105668a 100644
--- a/pkgs/development/python-modules/vsts-cd-manager/default.nix
+++ b/pkgs/development/python-modules/vsts-cd-manager/default.nix
@@ -1,5 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, msrest
+{ lib, buildPythonPackage, fetchPypi, msrest
 , mock
 }:
 
diff --git a/pkgs/development/python-modules/werkzeug/1.nix b/pkgs/development/python-modules/werkzeug/1.nix
index faa07b496237..c03cc6935d2f 100644
--- a/pkgs/development/python-modules/werkzeug/1.nix
+++ b/pkgs/development/python-modules/werkzeug/1.nix
@@ -2,7 +2,6 @@
 , itsdangerous, hypothesis
 , pytestCheckHook, requests
 , pytest-timeout
-, isPy3k
  }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/wfuzz/default.nix b/pkgs/development/python-modules/wfuzz/default.nix
index f42df0054952..e037757691c7 100644
--- a/pkgs/development/python-modules/wfuzz/default.nix
+++ b/pkgs/development/python-modules/wfuzz/default.nix
@@ -1,14 +1,12 @@
 { buildPythonPackage
 , chardet
 , colorama
-, configparser
 , fetchFromGitHub
 , future
 , isPy27
 , lib
 , mock
 , netaddr
-, pkgs
 , pycurl
 , pyparsing
 , pytest
diff --git a/pkgs/development/python-modules/winsspi/default.nix b/pkgs/development/python-modules/winsspi/default.nix
index 02156ba17e50..ea880234c0bf 100644
--- a/pkgs/development/python-modules/winsspi/default.nix
+++ b/pkgs/development/python-modules/winsspi/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , minikerberos
-, pythonAtLeast
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/worldengine/default.nix b/pkgs/development/python-modules/worldengine/default.nix
index 13ce4bc873d6..fed9a3c9007f 100644
--- a/pkgs/development/python-modules/worldengine/default.nix
+++ b/pkgs/development/python-modules/worldengine/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, pythonOlder
 , isPy27
 , fetchFromGitHub
 , noise
diff --git a/pkgs/development/python-modules/xgboost/default.nix b/pkgs/development/python-modules/xgboost/default.nix
index 1045b86a4441..3717ca2473c3 100644
--- a/pkgs/development/python-modules/xgboost/default.nix
+++ b/pkgs/development/python-modules/xgboost/default.nix
@@ -6,7 +6,6 @@
 , scikit-learn
 , stdenv
 , xgboost
-, substituteAll
 , pandas
 , matplotlib
 , graphviz
diff --git a/pkgs/development/python-modules/yarl/default.nix b/pkgs/development/python-modules/yarl/default.nix
index a5aab308eab6..0e15f138daaf 100644
--- a/pkgs/development/python-modules/yarl/default.nix
+++ b/pkgs/development/python-modules/yarl/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , pythonOlder
 , idna
 , multidict
diff --git a/pkgs/development/python-modules/yq/default.nix b/pkgs/development/python-modules/yq/default.nix
index a9225d435437..78177488081e 100644
--- a/pkgs/development/python-modules/yq/default.nix
+++ b/pkgs/development/python-modules/yq/default.nix
@@ -1,5 +1,4 @@
 { lib
-, nixosTests
 , buildPythonPackage
 , fetchPypi
 , substituteAll
diff --git a/pkgs/development/python-modules/zipp/1.nix b/pkgs/development/python-modules/zipp/1.nix
index ab9603926770..82f100aaa0d1 100644
--- a/pkgs/development/python-modules/zipp/1.nix
+++ b/pkgs/development/python-modules/zipp/1.nix
@@ -5,7 +5,6 @@
 , pytest
 , pytest-flake8
 , more-itertools
-, toml
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/zope_lifecycleevent/default.nix b/pkgs/development/python-modules/zope_lifecycleevent/default.nix
index 809d8252cb2e..1b3e288ba255 100644
--- a/pkgs/development/python-modules/zope_lifecycleevent/default.nix
+++ b/pkgs/development/python-modules/zope_lifecycleevent/default.nix
@@ -4,7 +4,6 @@
 , isPy3k
 , zope_event
 , zope_component
-, zope_interface
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/tools/dstp/default.nix b/pkgs/development/tools/dstp/default.nix
new file mode 100644
index 000000000000..89661612b4ee
--- /dev/null
+++ b/pkgs/development/tools/dstp/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildGo117Module, fetchFromGitHub }:
+
+buildGo117Module rec {
+  pname = "dstp";
+  version = "0.3.0";
+
+  src = fetchFromGitHub {
+    owner = "ycd";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1pxzaz2a261lsnbdbr9km1214a4jzq2wgkdfvf9g966gsa4nqfl6";
+  };
+
+  vendorSha256 = "1n1kx4zcskndikjl44vwmckr6x5cv6cacwdwfwjjsf6aqgagpld8";
+
+  # Tests require network connection, but is not allowed by nix
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Run common networking tests against your site";
+    homepage = "https://github.com/ycd/dstp";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jlesquembre ];
+  };
+}
diff --git a/pkgs/development/tools/kubeprompt/default.nix b/pkgs/development/tools/kubeprompt/default.nix
index 7b60e870958e..3624a45f9340 100644
--- a/pkgs/development/tools/kubeprompt/default.nix
+++ b/pkgs/development/tools/kubeprompt/default.nix
@@ -2,17 +2,18 @@
 
 buildGoModule rec {
   pname = "kubeprompt";
-  version = "0.3.0";
+  version = "0.4.0";
 
   src = fetchFromGitHub {
     owner = "jlesquembre";
     repo = pname;
     rev = version;
-    sha256 = "1a0xi31bd7n2zrx2z4srhvixlbj028h63dlrjzqxgmgn2w6akbz2";
+    sha256 = "0ib61af6fwsl35gmid9jj0fp8zxgzrw4qk32r03hxzkh9g7r3kla";
   };
 
   ldflags = [
-    "-w" "-s"
+    "-w"
+    "-s"
     "-X github.com/jlesquembre/kubeprompt/pkg/version.Version=${version}"
   ];
 
diff --git a/pkgs/misc/emulators/sameboy/default.nix b/pkgs/misc/emulators/sameboy/default.nix
index db300274f908..f1e41e77eafd 100644
--- a/pkgs/misc/emulators/sameboy/default.nix
+++ b/pkgs/misc/emulators/sameboy/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "sameboy";
-  version = "0.14.5";
+  version = "0.14.6";
 
   src = fetchFromGitHub {
     owner = "LIJI32";
     repo = "SameBoy";
     rev = "v${version}";
-    sha256 = "sha256-o2aH9rfga4f4yrf6r01wnrC0foYtD5EwdKFUPf2KGWM=";
+    sha256 = "sha256-KNAT36XLVtlFT3AKPTqP+GvgfOj0Y2SQ9PNVQv2HVwY=";
   };
 
   enableParallelBuilding = true;
diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix
index 703fe2387119..d88d18b85caf 100644
--- a/pkgs/os-specific/linux/nvidia-x11/default.nix
+++ b/pkgs/os-specific/linux/nvidia-x11/default.nix
@@ -51,10 +51,10 @@ rec {
 
   # Last one supporting Kepler architecture
   legacy_470 = generic {
-      version = "470.82.00";
-      sha256_64bit = "sha256:0i35frgil917ig1s2qsgqww58h66gabnxz3q39vcl3rlwb0pmgfh";
-      settingsSha256 = "sha256:1kacgifzqqi2zjq62m404w99iv168j5a4xg7xbfnll62vzx7yr5j";
-      persistencedSha256 = "sha256:06qsjp0n872b37wvhnwaddn1nrwn668zskmkcmpx33bv1940apsk";
+      version = "470.86";
+      sha256_64bit = "sha256:0krwcxc0j19vjnk8sv6mx1lin2rm8hcfhc2hg266846jvcws1dsg";
+      settingsSha256 = "sha256:1lnj5hwmfkzs664fxlhljqy323394s1i7qzlpsjyrpm07sa93bky";
+      persistencedSha256 = "sha256:0apj764zc81ayb8nm9bf7cdicfinarv0gfijy2dxynbwz2xdlyvq";
   };
 
   # Last one supporting x86
diff --git a/pkgs/os-specific/linux/rtl88xxau-aircrack/default.nix b/pkgs/os-specific/linux/rtl88xxau-aircrack/default.nix
index 5254c8aea2c2..cc8f4ed611f8 100644
--- a/pkgs/os-specific/linux/rtl88xxau-aircrack/default.nix
+++ b/pkgs/os-specific/linux/rtl88xxau-aircrack/default.nix
@@ -1,7 +1,7 @@
 { lib, stdenv, fetchFromGitHub, fetchpatch, kernel }:
 
 let
-  rev = "3a64331a1c809bbbc21eca63b825970f213ec5ac";
+  rev = "307d694076b056588c652c2bdaa543a89eb255d9";
 in
 stdenv.mkDerivation rec {
   pname = "rtl88xxau-aircrack";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     owner = "aircrack-ng";
     repo = "rtl8812au";
     inherit rev;
-    sha256 = "sha256-goaN80imfCeUwiHokJd10CFKskE3iL5BO/xOQk6PtHE=";
+    sha256 = "sha256-iSJnKWc+LxGHUhb/wbFSMh7w6Oi9v4v5V+R+LI96X7w=";
   };
 
   buildInputs = kernel.moduleBuildDependencies;
@@ -20,14 +20,6 @@ stdenv.mkDerivation rec {
 
   NIX_CFLAGS_COMPILE="-Wno-error=incompatible-pointer-types";
 
-  # Fix build for 5.12 kernels
-  patches = [
-    (fetchpatch {
-      url = "https://github.com/aircrack-ng/rtl8812au/commit/9b4c60a89c2a55f36454b950a86246b6b86a9681.patch";
-      sha256 = "sha256-HPhTLstqAePF3H6WeM9Fu4/8UjNL+9xl4L8xq3NOWuM=";
-    })
-  ];
-
   prePatch = ''
     substituteInPlace ./Makefile \
       --replace /lib/modules/ "${kernel.dev}/lib/modules/" \
@@ -48,6 +40,5 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Only;
     maintainers = [ maintainers.jethro ];
     platforms = [ "x86_64-linux" "i686-linux" ];
-    broken = kernel.kernelAtLeast "5.15";
   };
 }
diff --git a/pkgs/servers/heisenbridge/default.nix b/pkgs/servers/heisenbridge/default.nix
index 2e3f415ff5dd..c03b0ba8846d 100644
--- a/pkgs/servers/heisenbridge/default.nix
+++ b/pkgs/servers/heisenbridge/default.nix
@@ -2,13 +2,13 @@
 
 python3Packages.buildPythonPackage rec {
   pname = "heisenbridge";
-  version = "1.5.0";
+  version = "1.6.0";
 
   # Use the release tarball because it has the version set correctly using the
   # version.txt file.
   src = fetchurl {
     url = "https://github.com/hifi/heisenbridge/releases/download/v${version}/heisenbridge-${version}.tar.gz";
-    sha256 = "sha256-hg0PnWbec/iQbv4eRVy6JDt/OJ+EOzN+o6VrUGL4YtE=";
+    sha256 = "sha256-NhHMReY48lg1FhJlCRjRiSpy+9bDLtIV+j+zX8GZcL4=";
   };
 
   propagatedBuildInputs = with python3Packages; [
diff --git a/pkgs/servers/mjolnir/default.nix b/pkgs/servers/mjolnir/default.nix
new file mode 100644
index 000000000000..f6444ef386ac
--- /dev/null
+++ b/pkgs/servers/mjolnir/default.nix
@@ -0,0 +1,86 @@
+{ lib
+, nixosTests
+, stdenv
+, fetchFromGitHub
+, makeWrapper
+, nodejs
+, pkgs
+}:
+
+stdenv.mkDerivation rec {
+  pname = "mjolnir";
+  version = "1.1.20";
+
+  src = fetchFromGitHub {
+    owner = "matrix-org";
+    repo = "mjolnir";
+    rev = "v${version}";
+    sha256 = "yfMBnNriSpwitR4u664iz+8uWp/3iSTymyFajMBP5xg=";
+  };
+
+  nativeBuildInputs = [
+    nodejs
+    makeWrapper
+  ];
+
+  buildPhase =
+    let
+      nodeDependencies = ((import ./node-composition.nix {
+        inherit pkgs nodejs;
+        inherit (stdenv.hostPlatform) system;
+      }).nodeDependencies.override (old: {
+        # access to path '/nix/store/...-source' is forbidden in restricted mode
+        src = src;
+        dontNpmInstall = true;
+      }));
+    in
+    ''
+      runHook preBuild
+
+      ln -s ${nodeDependencies}/lib/node_modules .
+      export PATH="${nodeDependencies}/bin:$PATH"
+      npm run build
+
+      runHook postBuild
+    '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share
+    cp -a . $out/share/mjolnir
+
+    makeWrapper ${nodejs}/bin/node $out/bin/mjolnir \
+      --add-flags $out/share/mjolnir/lib/index.js
+
+    runHook postInstall
+  '';
+
+  passthru = {
+    tests = {
+      inherit (nixosTests) mjolnir;
+    };
+    updateScript = ./update.sh;
+  };
+
+  meta = with lib; {
+    description = "A moderation tool for Matrix";
+    homepage = "https://github.com/matrix-org/mjolnir";
+    longDescription = ''
+      As an all-in-one moderation tool, it can protect your server from
+      malicious invites, spam messages, and whatever else you don't want.
+      In addition to server-level protection, Mjolnir is great for communities
+      wanting to protect their rooms without having to use their personal
+      accounts for moderation.
+
+      The bot by default includes support for bans, redactions, anti-spam,
+      server ACLs, room directory changes, room alias transfers, account
+      deactivation, room shutdown, and more.
+
+      A Synapse module is also available to apply the same rulesets the bot
+      uses across an entire homeserver.
+    '';
+    license = licenses.asl20;
+    maintainers = with maintainers; [ jojosch ];
+  };
+}
diff --git a/pkgs/servers/mjolnir/node-composition.nix b/pkgs/servers/mjolnir/node-composition.nix
new file mode 100644
index 000000000000..ef810f1b06e7
--- /dev/null
+++ b/pkgs/servers/mjolnir/node-composition.nix
@@ -0,0 +1,17 @@
+# This file has been generated by node2nix 1.9.0. Do not edit!
+
+{pkgs ? import <nixpkgs> {
+    inherit system;
+  }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-12_x"}:
+
+let
+  nodeEnv = import ./node-env.nix {
+    inherit (pkgs) stdenv lib python2 runCommand writeTextFile;
+    inherit pkgs nodejs;
+    libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
+  };
+in
+import ./node-deps.nix {
+  inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit;
+  inherit nodeEnv;
+}
diff --git a/pkgs/servers/mjolnir/node-deps.nix b/pkgs/servers/mjolnir/node-deps.nix
new file mode 100644
index 000000000000..30c8a33277e4
--- /dev/null
+++ b/pkgs/servers/mjolnir/node-deps.nix
@@ -0,0 +1,3037 @@
+# This file has been generated by node2nix 1.9.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}:
+
+let
+  sources = {
+    "@babel/code-frame-7.14.5" = {
+      name = "_at_babel_slash_code-frame";
+      packageName = "@babel/code-frame";
+      version = "7.14.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz";
+        sha512 = "9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==";
+      };
+    };
+    "@babel/helper-validator-identifier-7.15.7" = {
+      name = "_at_babel_slash_helper-validator-identifier";
+      packageName = "@babel/helper-validator-identifier";
+      version = "7.15.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz";
+        sha512 = "K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==";
+      };
+    };
+    "@babel/highlight-7.14.5" = {
+      name = "_at_babel_slash_highlight";
+      packageName = "@babel/highlight";
+      version = "7.14.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz";
+        sha512 = "qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==";
+      };
+    };
+    "@jest/types-27.1.1" = {
+      name = "_at_jest_slash_types";
+      packageName = "@jest/types";
+      version = "27.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@jest/types/-/types-27.1.1.tgz";
+        sha512 = "yqJPDDseb0mXgKqmNqypCsb85C22K1aY5+LUxh7syIM9n/b0AsaltxNy+o6tt29VcfGDpYEve175bm3uOhcehA==";
+      };
+    };
+    "@types/body-parser-1.19.1" = {
+      name = "_at_types_slash_body-parser";
+      packageName = "@types/body-parser";
+      version = "1.19.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz";
+        sha512 = "a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==";
+      };
+    };
+    "@types/connect-3.4.35" = {
+      name = "_at_types_slash_connect";
+      packageName = "@types/connect";
+      version = "3.4.35";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz";
+        sha512 = "cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==";
+      };
+    };
+    "@types/express-4.17.13" = {
+      name = "_at_types_slash_express";
+      packageName = "@types/express";
+      version = "4.17.13";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz";
+        sha512 = "6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==";
+      };
+    };
+    "@types/express-serve-static-core-4.17.24" = {
+      name = "_at_types_slash_express-serve-static-core";
+      packageName = "@types/express-serve-static-core";
+      version = "4.17.24";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz";
+        sha512 = "3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==";
+      };
+    };
+    "@types/istanbul-lib-coverage-2.0.3" = {
+      name = "_at_types_slash_istanbul-lib-coverage";
+      packageName = "@types/istanbul-lib-coverage";
+      version = "2.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz";
+        sha512 = "sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==";
+      };
+    };
+    "@types/istanbul-lib-report-3.0.0" = {
+      name = "_at_types_slash_istanbul-lib-report";
+      packageName = "@types/istanbul-lib-report";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz";
+        sha512 = "plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==";
+      };
+    };
+    "@types/istanbul-reports-3.0.1" = {
+      name = "_at_types_slash_istanbul-reports";
+      packageName = "@types/istanbul-reports";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz";
+        sha512 = "c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==";
+      };
+    };
+    "@types/json5-0.0.29" = {
+      name = "_at_types_slash_json5";
+      packageName = "@types/json5";
+      version = "0.0.29";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz";
+        sha1 = "ee28707ae94e11d2b827bcbe5270bcea7f3e71ee";
+      };
+    };
+    "@types/mime-1.3.2" = {
+      name = "_at_types_slash_mime";
+      packageName = "@types/mime";
+      version = "1.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz";
+        sha512 = "YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==";
+      };
+    };
+    "@types/mocha-9.0.0" = {
+      name = "_at_types_slash_mocha";
+      packageName = "@types/mocha";
+      version = "9.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz";
+        sha512 = "scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==";
+      };
+    };
+    "@types/node-11.15.54" = {
+      name = "_at_types_slash_node";
+      packageName = "@types/node";
+      version = "11.15.54";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/node/-/node-11.15.54.tgz";
+        sha512 = "1RWYiq+5UfozGsU6MwJyFX6BtktcT10XRjvcAQmskCtMcW3tPske88lM/nHv7BQG1w9KBXI1zPGuu5PnNCX14g==";
+      };
+    };
+    "@types/qs-6.9.7" = {
+      name = "_at_types_slash_qs";
+      packageName = "@types/qs";
+      version = "6.9.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz";
+        sha512 = "FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==";
+      };
+    };
+    "@types/range-parser-1.2.4" = {
+      name = "_at_types_slash_range-parser";
+      packageName = "@types/range-parser";
+      version = "1.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz";
+        sha512 = "EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==";
+      };
+    };
+    "@types/serve-static-1.13.10" = {
+      name = "_at_types_slash_serve-static";
+      packageName = "@types/serve-static";
+      version = "1.13.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz";
+        sha512 = "nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==";
+      };
+    };
+    "@types/stack-utils-2.0.1" = {
+      name = "_at_types_slash_stack-utils";
+      packageName = "@types/stack-utils";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz";
+        sha512 = "Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==";
+      };
+    };
+    "@types/yargs-16.0.4" = {
+      name = "_at_types_slash_yargs";
+      packageName = "@types/yargs";
+      version = "16.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz";
+        sha512 = "T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==";
+      };
+    };
+    "@types/yargs-parser-20.2.1" = {
+      name = "_at_types_slash_yargs-parser";
+      packageName = "@types/yargs-parser";
+      version = "20.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz";
+        sha512 = "7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==";
+      };
+    };
+    "@ungap/promise-all-settled-1.1.2" = {
+      name = "_at_ungap_slash_promise-all-settled";
+      packageName = "@ungap/promise-all-settled";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz";
+        sha512 = "sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==";
+      };
+    };
+    "accepts-1.3.7" = {
+      name = "accepts";
+      packageName = "accepts";
+      version = "1.3.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz";
+        sha512 = "Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==";
+      };
+    };
+    "ajv-6.12.6" = {
+      name = "ajv";
+      packageName = "ajv";
+      version = "6.12.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz";
+        sha512 = "j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==";
+      };
+    };
+    "ansi-colors-4.1.1" = {
+      name = "ansi-colors";
+      packageName = "ansi-colors";
+      version = "4.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz";
+        sha512 = "JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==";
+      };
+    };
+    "ansi-regex-3.0.0" = {
+      name = "ansi-regex";
+      packageName = "ansi-regex";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz";
+        sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
+      };
+    };
+    "ansi-regex-5.0.1" = {
+      name = "ansi-regex";
+      packageName = "ansi-regex";
+      version = "5.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz";
+        sha512 = "quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==";
+      };
+    };
+    "ansi-styles-3.2.1" = {
+      name = "ansi-styles";
+      packageName = "ansi-styles";
+      version = "3.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz";
+        sha512 = "VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==";
+      };
+    };
+    "ansi-styles-4.3.0" = {
+      name = "ansi-styles";
+      packageName = "ansi-styles";
+      version = "4.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz";
+        sha512 = "zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==";
+      };
+    };
+    "ansi-styles-5.2.0" = {
+      name = "ansi-styles";
+      packageName = "ansi-styles";
+      version = "5.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz";
+        sha512 = "Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==";
+      };
+    };
+    "anymatch-3.1.2" = {
+      name = "anymatch";
+      packageName = "anymatch";
+      version = "3.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz";
+        sha512 = "P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==";
+      };
+    };
+    "argparse-1.0.10" = {
+      name = "argparse";
+      packageName = "argparse";
+      version = "1.0.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz";
+        sha512 = "o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==";
+      };
+    };
+    "argparse-2.0.1" = {
+      name = "argparse";
+      packageName = "argparse";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz";
+        sha512 = "8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==";
+      };
+    };
+    "array-flatten-1.1.1" = {
+      name = "array-flatten";
+      packageName = "array-flatten";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz";
+        sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
+      };
+    };
+    "arrify-1.0.1" = {
+      name = "arrify";
+      packageName = "arrify";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz";
+        sha1 = "898508da2226f380df904728456849c1501a4b0d";
+      };
+    };
+    "asn1-0.2.4" = {
+      name = "asn1";
+      packageName = "asn1";
+      version = "0.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz";
+        sha512 = "jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==";
+      };
+    };
+    "assert-plus-1.0.0" = {
+      name = "assert-plus";
+      packageName = "assert-plus";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
+        sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
+      };
+    };
+    "asynckit-0.4.0" = {
+      name = "asynckit";
+      packageName = "asynckit";
+      version = "0.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
+        sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
+      };
+    };
+    "aws-sign2-0.7.0" = {
+      name = "aws-sign2";
+      packageName = "aws-sign2";
+      version = "0.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
+        sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
+      };
+    };
+    "aws4-1.11.0" = {
+      name = "aws4";
+      packageName = "aws4";
+      version = "1.11.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz";
+        sha512 = "xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==";
+      };
+    };
+    "balanced-match-1.0.2" = {
+      name = "balanced-match";
+      packageName = "balanced-match";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz";
+        sha512 = "3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==";
+      };
+    };
+    "basic-auth-2.0.1" = {
+      name = "basic-auth";
+      packageName = "basic-auth";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz";
+        sha512 = "NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==";
+      };
+    };
+    "bcrypt-pbkdf-1.0.2" = {
+      name = "bcrypt-pbkdf";
+      packageName = "bcrypt-pbkdf";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
+        sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
+      };
+    };
+    "binary-extensions-2.2.0" = {
+      name = "binary-extensions";
+      packageName = "binary-extensions";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz";
+        sha512 = "jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==";
+      };
+    };
+    "bluebird-3.7.2" = {
+      name = "bluebird";
+      packageName = "bluebird";
+      version = "3.7.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz";
+        sha512 = "XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==";
+      };
+    };
+    "body-parser-1.19.0" = {
+      name = "body-parser";
+      packageName = "body-parser";
+      version = "1.19.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz";
+        sha512 = "dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==";
+      };
+    };
+    "brace-expansion-1.1.11" = {
+      name = "brace-expansion";
+      packageName = "brace-expansion";
+      version = "1.1.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
+        sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
+      };
+    };
+    "braces-3.0.2" = {
+      name = "braces";
+      packageName = "braces";
+      version = "3.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz";
+        sha512 = "b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==";
+      };
+    };
+    "browser-stdout-1.3.1" = {
+      name = "browser-stdout";
+      packageName = "browser-stdout";
+      version = "1.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz";
+        sha512 = "qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==";
+      };
+    };
+    "buffer-from-1.1.2" = {
+      name = "buffer-from";
+      packageName = "buffer-from";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz";
+        sha512 = "E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==";
+      };
+    };
+    "builtin-modules-1.1.1" = {
+      name = "builtin-modules";
+      packageName = "builtin-modules";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz";
+        sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f";
+      };
+    };
+    "bytes-3.1.0" = {
+      name = "bytes";
+      packageName = "bytes";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz";
+        sha512 = "zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==";
+      };
+    };
+    "camelcase-6.2.0" = {
+      name = "camelcase";
+      packageName = "camelcase";
+      version = "6.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz";
+        sha512 = "c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==";
+      };
+    };
+    "caseless-0.12.0" = {
+      name = "caseless";
+      packageName = "caseless";
+      version = "0.12.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
+        sha1 = "1b681c21ff84033c826543090689420d187151dc";
+      };
+    };
+    "chalk-2.4.2" = {
+      name = "chalk";
+      packageName = "chalk";
+      version = "2.4.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz";
+        sha512 = "Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==";
+      };
+    };
+    "chalk-4.1.2" = {
+      name = "chalk";
+      packageName = "chalk";
+      version = "4.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz";
+        sha512 = "oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==";
+      };
+    };
+    "chokidar-3.5.2" = {
+      name = "chokidar";
+      packageName = "chokidar";
+      version = "3.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz";
+        sha512 = "ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==";
+      };
+    };
+    "cliui-7.0.4" = {
+      name = "cliui";
+      packageName = "cliui";
+      version = "7.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz";
+        sha512 = "OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==";
+      };
+    };
+    "color-convert-1.9.3" = {
+      name = "color-convert";
+      packageName = "color-convert";
+      version = "1.9.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz";
+        sha512 = "QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==";
+      };
+    };
+    "color-convert-2.0.1" = {
+      name = "color-convert";
+      packageName = "color-convert";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz";
+        sha512 = "RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==";
+      };
+    };
+    "color-name-1.1.3" = {
+      name = "color-name";
+      packageName = "color-name";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz";
+        sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
+      };
+    };
+    "color-name-1.1.4" = {
+      name = "color-name";
+      packageName = "color-name";
+      version = "1.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz";
+        sha512 = "dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==";
+      };
+    };
+    "colorette-1.4.0" = {
+      name = "colorette";
+      packageName = "colorette";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz";
+        sha512 = "Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==";
+      };
+    };
+    "combined-stream-1.0.8" = {
+      name = "combined-stream";
+      packageName = "combined-stream";
+      version = "1.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
+        sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
+      };
+    };
+    "commander-2.20.3" = {
+      name = "commander";
+      packageName = "commander";
+      version = "2.20.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz";
+        sha512 = "GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==";
+      };
+    };
+    "concat-map-0.0.1" = {
+      name = "concat-map";
+      packageName = "concat-map";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
+        sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
+      };
+    };
+    "config-3.3.6" = {
+      name = "config";
+      packageName = "config";
+      version = "3.3.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/config/-/config-3.3.6.tgz";
+        sha512 = "Hj5916C5HFawjYJat1epbyY2PlAgLpBtDUlr0MxGLgo3p5+7kylyvnRY18PqJHgnNWXcdd0eWDemT7eYWuFgwg==";
+      };
+    };
+    "content-disposition-0.5.3" = {
+      name = "content-disposition";
+      packageName = "content-disposition";
+      version = "0.5.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz";
+        sha512 = "ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==";
+      };
+    };
+    "content-type-1.0.4" = {
+      name = "content-type";
+      packageName = "content-type";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz";
+        sha512 = "hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==";
+      };
+    };
+    "cookie-0.4.0" = {
+      name = "cookie";
+      packageName = "cookie";
+      version = "0.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz";
+        sha512 = "+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==";
+      };
+    };
+    "cookie-signature-1.0.6" = {
+      name = "cookie-signature";
+      packageName = "cookie-signature";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz";
+        sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
+      };
+    };
+    "core-util-is-1.0.2" = {
+      name = "core-util-is";
+      packageName = "core-util-is";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
+        sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+      };
+    };
+    "dashdash-1.14.1" = {
+      name = "dashdash";
+      packageName = "dashdash";
+      version = "1.14.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
+        sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
+      };
+    };
+    "debug-2.6.9" = {
+      name = "debug";
+      packageName = "debug";
+      version = "2.6.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
+        sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
+      };
+    };
+    "debug-4.3.1" = {
+      name = "debug";
+      packageName = "debug";
+      version = "4.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz";
+        sha512 = "doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==";
+      };
+    };
+    "decamelize-4.0.0" = {
+      name = "decamelize";
+      packageName = "decamelize";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz";
+        sha512 = "9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==";
+      };
+    };
+    "deepmerge-4.2.2" = {
+      name = "deepmerge";
+      packageName = "deepmerge";
+      version = "4.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz";
+        sha512 = "FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==";
+      };
+    };
+    "delayed-stream-1.0.0" = {
+      name = "delayed-stream";
+      packageName = "delayed-stream";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
+        sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
+      };
+    };
+    "depd-1.1.2" = {
+      name = "depd";
+      packageName = "depd";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz";
+        sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
+      };
+    };
+    "depd-2.0.0" = {
+      name = "depd";
+      packageName = "depd";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz";
+        sha512 = "g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==";
+      };
+    };
+    "destroy-1.0.4" = {
+      name = "destroy";
+      packageName = "destroy";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz";
+        sha1 = "978857442c44749e4206613e37946205826abd80";
+      };
+    };
+    "diff-3.5.0" = {
+      name = "diff";
+      packageName = "diff";
+      version = "3.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz";
+        sha512 = "A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==";
+      };
+    };
+    "diff-4.0.2" = {
+      name = "diff";
+      packageName = "diff";
+      version = "4.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz";
+        sha512 = "58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==";
+      };
+    };
+    "diff-5.0.0" = {
+      name = "diff";
+      packageName = "diff";
+      version = "5.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz";
+        sha512 = "/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==";
+      };
+    };
+    "diff-sequences-27.0.6" = {
+      name = "diff-sequences";
+      packageName = "diff-sequences";
+      version = "27.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz";
+        sha512 = "ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==";
+      };
+    };
+    "dom-serializer-1.3.2" = {
+      name = "dom-serializer";
+      packageName = "dom-serializer";
+      version = "1.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz";
+        sha512 = "5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==";
+      };
+    };
+    "domelementtype-2.2.0" = {
+      name = "domelementtype";
+      packageName = "domelementtype";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz";
+        sha512 = "DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==";
+      };
+    };
+    "domhandler-3.3.0" = {
+      name = "domhandler";
+      packageName = "domhandler";
+      version = "3.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz";
+        sha512 = "J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==";
+      };
+    };
+    "domhandler-4.2.2" = {
+      name = "domhandler";
+      packageName = "domhandler";
+      version = "4.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz";
+        sha512 = "PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==";
+      };
+    };
+    "domutils-2.8.0" = {
+      name = "domutils";
+      packageName = "domutils";
+      version = "2.8.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz";
+        sha512 = "w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==";
+      };
+    };
+    "ecc-jsbn-0.1.2" = {
+      name = "ecc-jsbn";
+      packageName = "ecc-jsbn";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
+        sha1 = "3a83a904e54353287874c564b7549386849a98c9";
+      };
+    };
+    "ee-first-1.1.1" = {
+      name = "ee-first";
+      packageName = "ee-first";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz";
+        sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
+      };
+    };
+    "emoji-regex-8.0.0" = {
+      name = "emoji-regex";
+      packageName = "emoji-regex";
+      version = "8.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz";
+        sha512 = "MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==";
+      };
+    };
+    "encodeurl-1.0.2" = {
+      name = "encodeurl";
+      packageName = "encodeurl";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz";
+        sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
+      };
+    };
+    "entities-2.2.0" = {
+      name = "entities";
+      packageName = "entities";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz";
+        sha512 = "p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==";
+      };
+    };
+    "escalade-3.1.1" = {
+      name = "escalade";
+      packageName = "escalade";
+      version = "3.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz";
+        sha512 = "k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==";
+      };
+    };
+    "escape-html-1.0.3" = {
+      name = "escape-html";
+      packageName = "escape-html";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz";
+        sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
+      };
+    };
+    "escape-string-regexp-1.0.5" = {
+      name = "escape-string-regexp";
+      packageName = "escape-string-regexp";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
+        sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
+      };
+    };
+    "escape-string-regexp-2.0.0" = {
+      name = "escape-string-regexp";
+      packageName = "escape-string-regexp";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz";
+        sha512 = "UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==";
+      };
+    };
+    "escape-string-regexp-4.0.0" = {
+      name = "escape-string-regexp";
+      packageName = "escape-string-regexp";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz";
+        sha512 = "TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==";
+      };
+    };
+    "esprima-4.0.1" = {
+      name = "esprima";
+      packageName = "esprima";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz";
+        sha512 = "eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==";
+      };
+    };
+    "etag-1.8.1" = {
+      name = "etag";
+      packageName = "etag";
+      version = "1.8.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz";
+        sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
+      };
+    };
+    "expect-27.2.1" = {
+      name = "expect";
+      packageName = "expect";
+      version = "27.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/expect/-/expect-27.2.1.tgz";
+        sha512 = "ekOA2mBtT2phxcoPVHCXIzbJxCvRXhx2fr7m28IgGdZxUOh8UvxvoRz1FcPlfgZMpE92biHB6woIcAKXqR28hA==";
+      };
+    };
+    "express-4.17.1" = {
+      name = "express";
+      packageName = "express";
+      version = "4.17.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/express/-/express-4.17.1.tgz";
+        sha512 = "mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==";
+      };
+    };
+    "extend-3.0.2" = {
+      name = "extend";
+      packageName = "extend";
+      version = "3.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
+        sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
+      };
+    };
+    "extsprintf-1.3.0" = {
+      name = "extsprintf";
+      packageName = "extsprintf";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
+        sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
+      };
+    };
+    "fast-deep-equal-3.1.3" = {
+      name = "fast-deep-equal";
+      packageName = "fast-deep-equal";
+      version = "3.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz";
+        sha512 = "f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==";
+      };
+    };
+    "fast-json-stable-stringify-2.1.0" = {
+      name = "fast-json-stable-stringify";
+      packageName = "fast-json-stable-stringify";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
+        sha512 = "lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==";
+      };
+    };
+    "fill-range-7.0.1" = {
+      name = "fill-range";
+      packageName = "fill-range";
+      version = "7.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz";
+        sha512 = "qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==";
+      };
+    };
+    "finalhandler-1.1.2" = {
+      name = "finalhandler";
+      packageName = "finalhandler";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz";
+        sha512 = "aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==";
+      };
+    };
+    "find-up-5.0.0" = {
+      name = "find-up";
+      packageName = "find-up";
+      version = "5.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz";
+        sha512 = "78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==";
+      };
+    };
+    "flat-5.0.2" = {
+      name = "flat";
+      packageName = "flat";
+      version = "5.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz";
+        sha512 = "b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==";
+      };
+    };
+    "forever-agent-0.6.1" = {
+      name = "forever-agent";
+      packageName = "forever-agent";
+      version = "0.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
+        sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
+      };
+    };
+    "form-data-2.3.3" = {
+      name = "form-data";
+      packageName = "form-data";
+      version = "2.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz";
+        sha512 = "1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==";
+      };
+    };
+    "forwarded-0.2.0" = {
+      name = "forwarded";
+      packageName = "forwarded";
+      version = "0.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz";
+        sha512 = "buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==";
+      };
+    };
+    "fresh-0.5.2" = {
+      name = "fresh";
+      packageName = "fresh";
+      version = "0.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz";
+        sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
+      };
+    };
+    "fs.realpath-1.0.0" = {
+      name = "fs.realpath";
+      packageName = "fs.realpath";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
+        sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
+      };
+    };
+    "fsevents-2.3.2" = {
+      name = "fsevents";
+      packageName = "fsevents";
+      version = "2.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz";
+        sha512 = "xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==";
+      };
+    };
+    "function-bind-1.1.1" = {
+      name = "function-bind";
+      packageName = "function-bind";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz";
+        sha512 = "yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==";
+      };
+    };
+    "get-caller-file-2.0.5" = {
+      name = "get-caller-file";
+      packageName = "get-caller-file";
+      version = "2.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz";
+        sha512 = "DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==";
+      };
+    };
+    "getpass-0.1.7" = {
+      name = "getpass";
+      packageName = "getpass";
+      version = "0.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
+        sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
+      };
+    };
+    "glob-7.1.7" = {
+      name = "glob";
+      packageName = "glob";
+      version = "7.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz";
+        sha512 = "OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==";
+      };
+    };
+    "glob-parent-5.1.2" = {
+      name = "glob-parent";
+      packageName = "glob-parent";
+      version = "5.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz";
+        sha512 = "AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==";
+      };
+    };
+    "glob-to-regexp-0.4.1" = {
+      name = "glob-to-regexp";
+      packageName = "glob-to-regexp";
+      version = "0.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz";
+        sha512 = "lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==";
+      };
+    };
+    "graceful-fs-4.2.8" = {
+      name = "graceful-fs";
+      packageName = "graceful-fs";
+      version = "4.2.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz";
+        sha512 = "qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==";
+      };
+    };
+    "growl-1.10.5" = {
+      name = "growl";
+      packageName = "growl";
+      version = "1.10.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz";
+        sha512 = "qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==";
+      };
+    };
+    "har-schema-2.0.0" = {
+      name = "har-schema";
+      packageName = "har-schema";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
+        sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
+      };
+    };
+    "har-validator-5.1.5" = {
+      name = "har-validator";
+      packageName = "har-validator";
+      version = "5.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz";
+        sha512 = "nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==";
+      };
+    };
+    "has-1.0.3" = {
+      name = "has";
+      packageName = "has";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has/-/has-1.0.3.tgz";
+        sha512 = "f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==";
+      };
+    };
+    "has-flag-3.0.0" = {
+      name = "has-flag";
+      packageName = "has-flag";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz";
+        sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
+      };
+    };
+    "has-flag-4.0.0" = {
+      name = "has-flag";
+      packageName = "has-flag";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz";
+        sha512 = "EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==";
+      };
+    };
+    "hash.js-1.1.7" = {
+      name = "hash.js";
+      packageName = "hash.js";
+      version = "1.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz";
+        sha512 = "taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==";
+      };
+    };
+    "he-1.2.0" = {
+      name = "he";
+      packageName = "he";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/he/-/he-1.2.0.tgz";
+        sha512 = "F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==";
+      };
+    };
+    "html-to-text-6.0.0" = {
+      name = "html-to-text";
+      packageName = "html-to-text";
+      version = "6.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/html-to-text/-/html-to-text-6.0.0.tgz";
+        sha512 = "r0KNC5aqCAItsjlgtirW6RW25c92Ee3ybQj8z//4Sl4suE3HIPqM4deGpYCUJULLjtVPEP1+Ma+1ZeX1iMsCiA==";
+      };
+    };
+    "htmlencode-0.0.4" = {
+      name = "htmlencode";
+      packageName = "htmlencode";
+      version = "0.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/htmlencode/-/htmlencode-0.0.4.tgz";
+        sha1 = "f7e2d6afbe18a87a78e63ba3308e753766740e3f";
+      };
+    };
+    "htmlparser2-4.1.0" = {
+      name = "htmlparser2";
+      packageName = "htmlparser2";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz";
+        sha512 = "4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==";
+      };
+    };
+    "htmlparser2-6.1.0" = {
+      name = "htmlparser2";
+      packageName = "htmlparser2";
+      version = "6.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz";
+        sha512 = "gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==";
+      };
+    };
+    "http-errors-1.7.2" = {
+      name = "http-errors";
+      packageName = "http-errors";
+      version = "1.7.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz";
+        sha512 = "uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==";
+      };
+    };
+    "http-signature-1.2.0" = {
+      name = "http-signature";
+      packageName = "http-signature";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
+        sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
+      };
+    };
+    "iconv-lite-0.4.24" = {
+      name = "iconv-lite";
+      packageName = "iconv-lite";
+      version = "0.4.24";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz";
+        sha512 = "v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==";
+      };
+    };
+    "inflight-1.0.6" = {
+      name = "inflight";
+      packageName = "inflight";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
+        sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
+      };
+    };
+    "inherits-2.0.3" = {
+      name = "inherits";
+      packageName = "inherits";
+      version = "2.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
+        sha1 = "633c2c83e3da42a502f52466022480f4208261de";
+      };
+    };
+    "ipaddr.js-1.9.1" = {
+      name = "ipaddr.js";
+      packageName = "ipaddr.js";
+      version = "1.9.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz";
+        sha512 = "0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==";
+      };
+    };
+    "is-binary-path-2.1.0" = {
+      name = "is-binary-path";
+      packageName = "is-binary-path";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz";
+        sha512 = "ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==";
+      };
+    };
+    "is-core-module-2.6.0" = {
+      name = "is-core-module";
+      packageName = "is-core-module";
+      version = "2.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz";
+        sha512 = "wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==";
+      };
+    };
+    "is-extglob-2.1.1" = {
+      name = "is-extglob";
+      packageName = "is-extglob";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz";
+        sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
+      };
+    };
+    "is-fullwidth-code-point-2.0.0" = {
+      name = "is-fullwidth-code-point";
+      packageName = "is-fullwidth-code-point";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
+        sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
+      };
+    };
+    "is-fullwidth-code-point-3.0.0" = {
+      name = "is-fullwidth-code-point";
+      packageName = "is-fullwidth-code-point";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz";
+        sha512 = "zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==";
+      };
+    };
+    "is-glob-4.0.1" = {
+      name = "is-glob";
+      packageName = "is-glob";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz";
+        sha512 = "5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==";
+      };
+    };
+    "is-number-7.0.0" = {
+      name = "is-number";
+      packageName = "is-number";
+      version = "7.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz";
+        sha512 = "41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==";
+      };
+    };
+    "is-plain-obj-2.1.0" = {
+      name = "is-plain-obj";
+      packageName = "is-plain-obj";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz";
+        sha512 = "YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==";
+      };
+    };
+    "is-plain-object-5.0.0" = {
+      name = "is-plain-object";
+      packageName = "is-plain-object";
+      version = "5.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz";
+        sha512 = "VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==";
+      };
+    };
+    "is-promise-2.2.2" = {
+      name = "is-promise";
+      packageName = "is-promise";
+      version = "2.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz";
+        sha512 = "+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==";
+      };
+    };
+    "is-typedarray-1.0.0" = {
+      name = "is-typedarray";
+      packageName = "is-typedarray";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
+        sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
+      };
+    };
+    "is-unicode-supported-0.1.0" = {
+      name = "is-unicode-supported";
+      packageName = "is-unicode-supported";
+      version = "0.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz";
+        sha512 = "knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==";
+      };
+    };
+    "isexe-2.0.0" = {
+      name = "isexe";
+      packageName = "isexe";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz";
+        sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
+      };
+    };
+    "isstream-0.1.2" = {
+      name = "isstream";
+      packageName = "isstream";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
+        sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
+      };
+    };
+    "jest-diff-27.2.0" = {
+      name = "jest-diff";
+      packageName = "jest-diff";
+      version = "27.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.0.tgz";
+        sha512 = "QSO9WC6btFYWtRJ3Hac0sRrkspf7B01mGrrQEiCW6TobtViJ9RWL0EmOs/WnBsZDsI/Y2IoSHZA2x6offu0sYw==";
+      };
+    };
+    "jest-get-type-27.0.6" = {
+      name = "jest-get-type";
+      packageName = "jest-get-type";
+      version = "27.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz";
+        sha512 = "XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==";
+      };
+    };
+    "jest-matcher-utils-27.2.0" = {
+      name = "jest-matcher-utils";
+      packageName = "jest-matcher-utils";
+      version = "27.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.0.tgz";
+        sha512 = "F+LG3iTwJ0gPjxBX6HCyrARFXq6jjiqhwBQeskkJQgSLeF1j6ui1RTV08SR7O51XTUhtc8zqpDj8iCG4RGmdKw==";
+      };
+    };
+    "jest-message-util-27.2.0" = {
+      name = "jest-message-util";
+      packageName = "jest-message-util";
+      version = "27.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.0.tgz";
+        sha512 = "y+sfT/94CiP8rKXgwCOzO1mUazIEdEhrLjuiu+RKmCP+8O/TJTSne9dqQRbFIHBtlR2+q7cddJlWGir8UATu5w==";
+      };
+    };
+    "jest-regex-util-27.0.6" = {
+      name = "jest-regex-util";
+      packageName = "jest-regex-util";
+      version = "27.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz";
+        sha512 = "SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==";
+      };
+    };
+    "js-tokens-4.0.0" = {
+      name = "js-tokens";
+      packageName = "js-tokens";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz";
+        sha512 = "RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==";
+      };
+    };
+    "js-yaml-3.14.1" = {
+      name = "js-yaml";
+      packageName = "js-yaml";
+      version = "3.14.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz";
+        sha512 = "okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==";
+      };
+    };
+    "js-yaml-4.1.0" = {
+      name = "js-yaml";
+      packageName = "js-yaml";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz";
+        sha512 = "wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==";
+      };
+    };
+    "jsbn-0.1.1" = {
+      name = "jsbn";
+      packageName = "jsbn";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
+        sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
+      };
+    };
+    "json-schema-0.2.3" = {
+      name = "json-schema";
+      packageName = "json-schema";
+      version = "0.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
+        sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
+      };
+    };
+    "json-schema-traverse-0.4.1" = {
+      name = "json-schema-traverse";
+      packageName = "json-schema-traverse";
+      version = "0.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
+        sha512 = "xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==";
+      };
+    };
+    "json-stringify-safe-5.0.1" = {
+      name = "json-stringify-safe";
+      packageName = "json-stringify-safe";
+      version = "5.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
+        sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
+      };
+    };
+    "json5-1.0.1" = {
+      name = "json5";
+      packageName = "json5";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz";
+        sha512 = "aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==";
+      };
+    };
+    "json5-2.2.0" = {
+      name = "json5";
+      packageName = "json5";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz";
+        sha512 = "f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==";
+      };
+    };
+    "jsprim-1.4.1" = {
+      name = "jsprim";
+      packageName = "jsprim";
+      version = "1.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
+        sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
+      };
+    };
+    "klona-2.0.4" = {
+      name = "klona";
+      packageName = "klona";
+      version = "2.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz";
+        sha512 = "ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==";
+      };
+    };
+    "locate-path-6.0.0" = {
+      name = "locate-path";
+      packageName = "locate-path";
+      version = "6.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz";
+        sha512 = "iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==";
+      };
+    };
+    "lodash-4.17.21" = {
+      name = "lodash";
+      packageName = "lodash";
+      version = "4.17.21";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz";
+        sha512 = "v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==";
+      };
+    };
+    "log-symbols-4.1.0" = {
+      name = "log-symbols";
+      packageName = "log-symbols";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz";
+        sha512 = "8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==";
+      };
+    };
+    "lowdb-1.0.0" = {
+      name = "lowdb";
+      packageName = "lowdb";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz";
+        sha512 = "2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==";
+      };
+    };
+    "lru-cache-6.0.0" = {
+      name = "lru-cache";
+      packageName = "lru-cache";
+      version = "6.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz";
+        sha512 = "Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==";
+      };
+    };
+    "make-error-1.3.6" = {
+      name = "make-error";
+      packageName = "make-error";
+      version = "1.3.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz";
+        sha512 = "s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==";
+      };
+    };
+    "matrix-bot-sdk-0.5.19" = {
+      name = "matrix-bot-sdk";
+      packageName = "matrix-bot-sdk";
+      version = "0.5.19";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/matrix-bot-sdk/-/matrix-bot-sdk-0.5.19.tgz";
+        sha512 = "RIPyvQPkOVp2yTKeDgp5rcn6z/DiKdHb6E8c69K+utai8ypRGtfDRj0PGqP+1XzqC9Wb1OFrESCUB5t0ffdC9g==";
+      };
+    };
+    "media-typer-0.3.0" = {
+      name = "media-typer";
+      packageName = "media-typer";
+      version = "0.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz";
+        sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
+      };
+    };
+    "merge-descriptors-1.0.1" = {
+      name = "merge-descriptors";
+      packageName = "merge-descriptors";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
+        sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
+      };
+    };
+    "methods-1.1.2" = {
+      name = "methods";
+      packageName = "methods";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz";
+        sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
+      };
+    };
+    "micromatch-4.0.4" = {
+      name = "micromatch";
+      packageName = "micromatch";
+      version = "4.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz";
+        sha512 = "pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==";
+      };
+    };
+    "mime-1.6.0" = {
+      name = "mime";
+      packageName = "mime";
+      version = "1.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz";
+        sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==";
+      };
+    };
+    "mime-db-1.49.0" = {
+      name = "mime-db";
+      packageName = "mime-db";
+      version = "1.49.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz";
+        sha512 = "CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==";
+      };
+    };
+    "mime-types-2.1.32" = {
+      name = "mime-types";
+      packageName = "mime-types";
+      version = "2.1.32";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz";
+        sha512 = "hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==";
+      };
+    };
+    "minimalistic-assert-1.0.1" = {
+      name = "minimalistic-assert";
+      packageName = "minimalistic-assert";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz";
+        sha512 = "UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==";
+      };
+    };
+    "minimatch-3.0.4" = {
+      name = "minimatch";
+      packageName = "minimatch";
+      version = "3.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
+        sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
+      };
+    };
+    "minimist-1.2.5" = {
+      name = "minimist";
+      packageName = "minimist";
+      version = "1.2.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz";
+        sha512 = "FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==";
+      };
+    };
+    "mkdirp-0.5.5" = {
+      name = "mkdirp";
+      packageName = "mkdirp";
+      version = "0.5.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz";
+        sha512 = "NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==";
+      };
+    };
+    "mkdirp-1.0.4" = {
+      name = "mkdirp";
+      packageName = "mkdirp";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz";
+        sha512 = "vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==";
+      };
+    };
+    "mocha-9.1.1" = {
+      name = "mocha";
+      packageName = "mocha";
+      version = "9.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mocha/-/mocha-9.1.1.tgz";
+        sha512 = "0wE74YMgOkCgBUj8VyIDwmLUjTsS13WV1Pg7l0SHea2qzZzlq7MDnfbPsHKcELBRk3+izEVkRofjmClpycudCA==";
+      };
+    };
+    "morgan-1.10.0" = {
+      name = "morgan";
+      packageName = "morgan";
+      version = "1.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz";
+        sha512 = "AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==";
+      };
+    };
+    "ms-2.0.0" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
+        sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
+      };
+    };
+    "ms-2.1.1" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz";
+        sha512 = "tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==";
+      };
+    };
+    "ms-2.1.2" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
+        sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
+      };
+    };
+    "ms-2.1.3" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz";
+        sha512 = "6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==";
+      };
+    };
+    "nanoid-3.1.23" = {
+      name = "nanoid";
+      packageName = "nanoid";
+      version = "3.1.23";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz";
+        sha512 = "FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==";
+      };
+    };
+    "nanoid-3.1.25" = {
+      name = "nanoid";
+      packageName = "nanoid";
+      version = "3.1.25";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz";
+        sha512 = "rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==";
+      };
+    };
+    "negotiator-0.6.2" = {
+      name = "negotiator";
+      packageName = "negotiator";
+      version = "0.6.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz";
+        sha512 = "hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==";
+      };
+    };
+    "normalize-path-3.0.0" = {
+      name = "normalize-path";
+      packageName = "normalize-path";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz";
+        sha512 = "6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==";
+      };
+    };
+    "oauth-sign-0.9.0" = {
+      name = "oauth-sign";
+      packageName = "oauth-sign";
+      version = "0.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz";
+        sha512 = "fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==";
+      };
+    };
+    "on-finished-2.3.0" = {
+      name = "on-finished";
+      packageName = "on-finished";
+      version = "2.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz";
+        sha1 = "20f1336481b083cd75337992a16971aa2d906947";
+      };
+    };
+    "on-headers-1.0.2" = {
+      name = "on-headers";
+      packageName = "on-headers";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz";
+        sha512 = "pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==";
+      };
+    };
+    "once-1.4.0" = {
+      name = "once";
+      packageName = "once";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
+        sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
+      };
+    };
+    "p-limit-3.1.0" = {
+      name = "p-limit";
+      packageName = "p-limit";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz";
+        sha512 = "TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==";
+      };
+    };
+    "p-locate-5.0.0" = {
+      name = "p-locate";
+      packageName = "p-locate";
+      version = "5.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz";
+        sha512 = "LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==";
+      };
+    };
+    "parse-srcset-1.0.2" = {
+      name = "parse-srcset";
+      packageName = "parse-srcset";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz";
+        sha1 = "f2bd221f6cc970a938d88556abc589caaaa2bde1";
+      };
+    };
+    "parseurl-1.3.3" = {
+      name = "parseurl";
+      packageName = "parseurl";
+      version = "1.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz";
+        sha512 = "CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==";
+      };
+    };
+    "path-exists-4.0.0" = {
+      name = "path-exists";
+      packageName = "path-exists";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz";
+        sha512 = "ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==";
+      };
+    };
+    "path-is-absolute-1.0.1" = {
+      name = "path-is-absolute";
+      packageName = "path-is-absolute";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
+        sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
+      };
+    };
+    "path-parse-1.0.7" = {
+      name = "path-parse";
+      packageName = "path-parse";
+      version = "1.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz";
+        sha512 = "LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==";
+      };
+    };
+    "path-to-regexp-0.1.7" = {
+      name = "path-to-regexp";
+      packageName = "path-to-regexp";
+      version = "0.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
+        sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
+      };
+    };
+    "performance-now-2.1.0" = {
+      name = "performance-now";
+      packageName = "performance-now";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
+        sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
+      };
+    };
+    "picomatch-2.3.0" = {
+      name = "picomatch";
+      packageName = "picomatch";
+      version = "2.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz";
+        sha512 = "lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==";
+      };
+    };
+    "pify-3.0.0" = {
+      name = "pify";
+      packageName = "pify";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz";
+        sha1 = "e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176";
+      };
+    };
+    "postcss-8.3.6" = {
+      name = "postcss";
+      packageName = "postcss";
+      version = "8.3.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz";
+        sha512 = "wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==";
+      };
+    };
+    "pretty-format-27.2.0" = {
+      name = "pretty-format";
+      packageName = "pretty-format";
+      version = "27.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.0.tgz";
+        sha512 = "KyJdmgBkMscLqo8A7K77omgLx5PWPiXJswtTtFV7XgVZv2+qPk6UivpXXO+5k6ZEbWIbLoKdx1pZ6ldINzbwTA==";
+      };
+    };
+    "proxy-addr-2.0.7" = {
+      name = "proxy-addr";
+      packageName = "proxy-addr";
+      version = "2.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz";
+        sha512 = "llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==";
+      };
+    };
+    "psl-1.8.0" = {
+      name = "psl";
+      packageName = "psl";
+      version = "1.8.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz";
+        sha512 = "RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==";
+      };
+    };
+    "punycode-2.1.1" = {
+      name = "punycode";
+      packageName = "punycode";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz";
+        sha512 = "XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==";
+      };
+    };
+    "qs-6.5.2" = {
+      name = "qs";
+      packageName = "qs";
+      version = "6.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz";
+        sha512 = "N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==";
+      };
+    };
+    "qs-6.7.0" = {
+      name = "qs";
+      packageName = "qs";
+      version = "6.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz";
+        sha512 = "VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==";
+      };
+    };
+    "randombytes-2.1.0" = {
+      name = "randombytes";
+      packageName = "randombytes";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz";
+        sha512 = "vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==";
+      };
+    };
+    "range-parser-1.2.1" = {
+      name = "range-parser";
+      packageName = "range-parser";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz";
+        sha512 = "Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==";
+      };
+    };
+    "raw-body-2.4.0" = {
+      name = "raw-body";
+      packageName = "raw-body";
+      version = "2.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz";
+        sha512 = "4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==";
+      };
+    };
+    "react-is-17.0.2" = {
+      name = "react-is";
+      packageName = "react-is";
+      version = "17.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz";
+        sha512 = "w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==";
+      };
+    };
+    "readdirp-3.6.0" = {
+      name = "readdirp";
+      packageName = "readdirp";
+      version = "3.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz";
+        sha512 = "hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==";
+      };
+    };
+    "request-2.88.2" = {
+      name = "request";
+      packageName = "request";
+      version = "2.88.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/request/-/request-2.88.2.tgz";
+        sha512 = "MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==";
+      };
+    };
+    "request-promise-4.2.6" = {
+      name = "request-promise";
+      packageName = "request-promise";
+      version = "4.2.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz";
+        sha512 = "HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==";
+      };
+    };
+    "request-promise-core-1.1.4" = {
+      name = "request-promise-core";
+      packageName = "request-promise-core";
+      version = "1.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz";
+        sha512 = "TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==";
+      };
+    };
+    "require-directory-2.1.1" = {
+      name = "require-directory";
+      packageName = "require-directory";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz";
+        sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
+      };
+    };
+    "resolve-1.20.0" = {
+      name = "resolve";
+      packageName = "resolve";
+      version = "1.20.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz";
+        sha512 = "wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==";
+      };
+    };
+    "safe-buffer-5.1.2" = {
+      name = "safe-buffer";
+      packageName = "safe-buffer";
+      version = "5.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
+        sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
+      };
+    };
+    "safer-buffer-2.1.2" = {
+      name = "safer-buffer";
+      packageName = "safer-buffer";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
+        sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
+      };
+    };
+    "sanitize-html-2.5.1" = {
+      name = "sanitize-html";
+      packageName = "sanitize-html";
+      version = "2.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.5.1.tgz";
+        sha512 = "hUITPitQk+eFNLtr4dEkaaiAJndG2YE87IOpcfBSL1XdklWgwcNDJdr9Ppe8QKL/C3jFt1xH/Mbj20e0GZQOfg==";
+      };
+    };
+    "semver-5.7.1" = {
+      name = "semver";
+      packageName = "semver";
+      version = "5.7.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz";
+        sha512 = "sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==";
+      };
+    };
+    "send-0.17.1" = {
+      name = "send";
+      packageName = "send";
+      version = "0.17.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/send/-/send-0.17.1.tgz";
+        sha512 = "BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==";
+      };
+    };
+    "serialize-javascript-6.0.0" = {
+      name = "serialize-javascript";
+      packageName = "serialize-javascript";
+      version = "6.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz";
+        sha512 = "Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==";
+      };
+    };
+    "serve-static-1.14.1" = {
+      name = "serve-static";
+      packageName = "serve-static";
+      version = "1.14.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz";
+        sha512 = "JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==";
+      };
+    };
+    "setprototypeof-1.1.1" = {
+      name = "setprototypeof";
+      packageName = "setprototypeof";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz";
+        sha512 = "JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==";
+      };
+    };
+    "slash-3.0.0" = {
+      name = "slash";
+      packageName = "slash";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz";
+        sha512 = "g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==";
+      };
+    };
+    "source-map-0.6.1" = {
+      name = "source-map";
+      packageName = "source-map";
+      version = "0.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz";
+        sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==";
+      };
+    };
+    "source-map-js-0.6.2" = {
+      name = "source-map-js";
+      packageName = "source-map-js";
+      version = "0.6.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz";
+        sha512 = "/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==";
+      };
+    };
+    "source-map-support-0.5.20" = {
+      name = "source-map-support";
+      packageName = "source-map-support";
+      version = "0.5.20";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz";
+        sha512 = "n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==";
+      };
+    };
+    "sprintf-js-1.0.3" = {
+      name = "sprintf-js";
+      packageName = "sprintf-js";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz";
+        sha1 = "04e6926f662895354f3dd015203633b857297e2c";
+      };
+    };
+    "sshpk-1.16.1" = {
+      name = "sshpk";
+      packageName = "sshpk";
+      version = "1.16.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
+        sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
+      };
+    };
+    "stack-utils-2.0.5" = {
+      name = "stack-utils";
+      packageName = "stack-utils";
+      version = "2.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz";
+        sha512 = "xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==";
+      };
+    };
+    "statuses-1.5.0" = {
+      name = "statuses";
+      packageName = "statuses";
+      version = "1.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz";
+        sha1 = "161c7dac177659fd9811f43771fa99381478628c";
+      };
+    };
+    "stealthy-require-1.1.1" = {
+      name = "stealthy-require";
+      packageName = "stealthy-require";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz";
+        sha1 = "35b09875b4ff49f26a777e509b3090a3226bf24b";
+      };
+    };
+    "steno-0.4.4" = {
+      name = "steno";
+      packageName = "steno";
+      version = "0.4.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz";
+        sha1 = "071105bdfc286e6615c0403c27e9d7b5dcb855cb";
+      };
+    };
+    "string-width-2.1.1" = {
+      name = "string-width";
+      packageName = "string-width";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz";
+        sha512 = "nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==";
+      };
+    };
+    "string-width-4.2.2" = {
+      name = "string-width";
+      packageName = "string-width";
+      version = "4.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz";
+        sha512 = "XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==";
+      };
+    };
+    "strip-ansi-4.0.0" = {
+      name = "strip-ansi";
+      packageName = "strip-ansi";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz";
+        sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
+      };
+    };
+    "strip-ansi-6.0.0" = {
+      name = "strip-ansi";
+      packageName = "strip-ansi";
+      version = "6.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz";
+        sha512 = "AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==";
+      };
+    };
+    "strip-bom-3.0.0" = {
+      name = "strip-bom";
+      packageName = "strip-bom";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz";
+        sha1 = "2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3";
+      };
+    };
+    "strip-json-comments-3.1.1" = {
+      name = "strip-json-comments";
+      packageName = "strip-json-comments";
+      version = "3.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz";
+        sha512 = "6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==";
+      };
+    };
+    "supports-color-5.5.0" = {
+      name = "supports-color";
+      packageName = "supports-color";
+      version = "5.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz";
+        sha512 = "QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==";
+      };
+    };
+    "supports-color-7.2.0" = {
+      name = "supports-color";
+      packageName = "supports-color";
+      version = "7.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz";
+        sha512 = "qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==";
+      };
+    };
+    "supports-color-8.1.1" = {
+      name = "supports-color";
+      packageName = "supports-color";
+      version = "8.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz";
+        sha512 = "MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==";
+      };
+    };
+    "to-regex-range-5.0.1" = {
+      name = "to-regex-range";
+      packageName = "to-regex-range";
+      version = "5.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz";
+        sha512 = "65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==";
+      };
+    };
+    "toidentifier-1.0.0" = {
+      name = "toidentifier";
+      packageName = "toidentifier";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz";
+        sha512 = "yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==";
+      };
+    };
+    "tough-cookie-2.5.0" = {
+      name = "tough-cookie";
+      packageName = "tough-cookie";
+      version = "2.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz";
+        sha512 = "nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==";
+      };
+    };
+    "ts-mocha-8.0.0" = {
+      name = "ts-mocha";
+      packageName = "ts-mocha";
+      version = "8.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ts-mocha/-/ts-mocha-8.0.0.tgz";
+        sha512 = "Kou1yxTlubLnD5C3unlCVO7nh0HERTezjoVhVw/M5S1SqoUec0WgllQvPk3vzPMc6by8m6xD1uR1yRf8lnVUbA==";
+      };
+    };
+    "ts-node-7.0.1" = {
+      name = "ts-node";
+      packageName = "ts-node";
+      version = "7.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz";
+        sha512 = "BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==";
+      };
+    };
+    "tsconfig-paths-3.11.0" = {
+      name = "tsconfig-paths";
+      packageName = "tsconfig-paths";
+      version = "3.11.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz";
+        sha512 = "7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==";
+      };
+    };
+    "tslib-1.14.1" = {
+      name = "tslib";
+      packageName = "tslib";
+      version = "1.14.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz";
+        sha512 = "Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==";
+      };
+    };
+    "tslint-6.1.3" = {
+      name = "tslint";
+      packageName = "tslint";
+      version = "6.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz";
+        sha512 = "IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==";
+      };
+    };
+    "tsutils-2.29.0" = {
+      name = "tsutils";
+      packageName = "tsutils";
+      version = "2.29.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz";
+        sha512 = "g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==";
+      };
+    };
+    "tunnel-agent-0.6.0" = {
+      name = "tunnel-agent";
+      packageName = "tunnel-agent";
+      version = "0.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
+        sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
+      };
+    };
+    "tweetnacl-0.14.5" = {
+      name = "tweetnacl";
+      packageName = "tweetnacl";
+      version = "0.14.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
+        sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
+      };
+    };
+    "type-is-1.6.18" = {
+      name = "type-is";
+      packageName = "type-is";
+      version = "1.6.18";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz";
+        sha512 = "TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==";
+      };
+    };
+    "typescript-4.4.3" = {
+      name = "typescript";
+      packageName = "typescript";
+      version = "4.4.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz";
+        sha512 = "4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==";
+      };
+    };
+    "unpipe-1.0.0" = {
+      name = "unpipe";
+      packageName = "unpipe";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz";
+        sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
+      };
+    };
+    "uri-js-4.4.1" = {
+      name = "uri-js";
+      packageName = "uri-js";
+      version = "4.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz";
+        sha512 = "7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==";
+      };
+    };
+    "utils-merge-1.0.1" = {
+      name = "utils-merge";
+      packageName = "utils-merge";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz";
+        sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
+      };
+    };
+    "uuid-3.4.0" = {
+      name = "uuid";
+      packageName = "uuid";
+      version = "3.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz";
+        sha512 = "HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==";
+      };
+    };
+    "vary-1.1.2" = {
+      name = "vary";
+      packageName = "vary";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz";
+        sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
+      };
+    };
+    "verror-1.10.0" = {
+      name = "verror";
+      packageName = "verror";
+      version = "1.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
+        sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
+      };
+    };
+    "which-2.0.2" = {
+      name = "which";
+      packageName = "which";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/which/-/which-2.0.2.tgz";
+        sha512 = "BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==";
+      };
+    };
+    "wide-align-1.1.3" = {
+      name = "wide-align";
+      packageName = "wide-align";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz";
+        sha512 = "QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==";
+      };
+    };
+    "workerpool-6.1.5" = {
+      name = "workerpool";
+      packageName = "workerpool";
+      version = "6.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz";
+        sha512 = "XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==";
+      };
+    };
+    "wrap-ansi-7.0.0" = {
+      name = "wrap-ansi";
+      packageName = "wrap-ansi";
+      version = "7.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz";
+        sha512 = "YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==";
+      };
+    };
+    "wrappy-1.0.2" = {
+      name = "wrappy";
+      packageName = "wrappy";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
+        sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
+      };
+    };
+    "y18n-5.0.8" = {
+      name = "y18n";
+      packageName = "y18n";
+      version = "5.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz";
+        sha512 = "0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==";
+      };
+    };
+    "yallist-4.0.0" = {
+      name = "yallist";
+      packageName = "yallist";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz";
+        sha512 = "3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==";
+      };
+    };
+    "yargs-16.2.0" = {
+      name = "yargs";
+      packageName = "yargs";
+      version = "16.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz";
+        sha512 = "D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==";
+      };
+    };
+    "yargs-parser-20.2.4" = {
+      name = "yargs-parser";
+      packageName = "yargs-parser";
+      version = "20.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz";
+        sha512 = "WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==";
+      };
+    };
+    "yargs-unparser-2.0.0" = {
+      name = "yargs-unparser";
+      packageName = "yargs-unparser";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz";
+        sha512 = "7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==";
+      };
+    };
+    "yn-2.0.0" = {
+      name = "yn";
+      packageName = "yn";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz";
+        sha1 = "e5adabc8acf408f6385fc76495684c88e6af689a";
+      };
+    };
+    "yocto-queue-0.1.0" = {
+      name = "yocto-queue";
+      packageName = "yocto-queue";
+      version = "0.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz";
+        sha512 = "rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==";
+      };
+    };
+  };
+  args = {
+    name = "mjolnir";
+    packageName = "mjolnir";
+    version = "1.1.20";
+    src = ../../../../../../../nix/store/hc66j9i16g2n08v0laiyydqch4szfygn-source;
+    dependencies = [
+      sources."@babel/code-frame-7.14.5"
+      sources."@babel/helper-validator-identifier-7.15.7"
+      (sources."@babel/highlight-7.14.5" // {
+        dependencies = [
+          sources."ansi-styles-3.2.1"
+          sources."chalk-2.4.2"
+          sources."color-convert-1.9.3"
+          sources."color-name-1.1.3"
+          sources."escape-string-regexp-1.0.5"
+          sources."has-flag-3.0.0"
+          sources."supports-color-5.5.0"
+        ];
+      })
+      sources."@jest/types-27.1.1"
+      sources."@types/body-parser-1.19.1"
+      sources."@types/connect-3.4.35"
+      sources."@types/express-4.17.13"
+      sources."@types/express-serve-static-core-4.17.24"
+      sources."@types/istanbul-lib-coverage-2.0.3"
+      sources."@types/istanbul-lib-report-3.0.0"
+      sources."@types/istanbul-reports-3.0.1"
+      sources."@types/json5-0.0.29"
+      sources."@types/mime-1.3.2"
+      sources."@types/mocha-9.0.0"
+      sources."@types/node-11.15.54"
+      sources."@types/qs-6.9.7"
+      sources."@types/range-parser-1.2.4"
+      sources."@types/serve-static-1.13.10"
+      sources."@types/stack-utils-2.0.1"
+      sources."@types/yargs-16.0.4"
+      sources."@types/yargs-parser-20.2.1"
+      sources."@ungap/promise-all-settled-1.1.2"
+      sources."accepts-1.3.7"
+      sources."ajv-6.12.6"
+      sources."ansi-colors-4.1.1"
+      sources."ansi-regex-5.0.1"
+      sources."ansi-styles-4.3.0"
+      sources."anymatch-3.1.2"
+      sources."argparse-2.0.1"
+      sources."array-flatten-1.1.1"
+      sources."arrify-1.0.1"
+      sources."asn1-0.2.4"
+      sources."assert-plus-1.0.0"
+      sources."asynckit-0.4.0"
+      sources."aws-sign2-0.7.0"
+      sources."aws4-1.11.0"
+      sources."balanced-match-1.0.2"
+      sources."basic-auth-2.0.1"
+      sources."bcrypt-pbkdf-1.0.2"
+      sources."binary-extensions-2.2.0"
+      sources."bluebird-3.7.2"
+      sources."body-parser-1.19.0"
+      sources."brace-expansion-1.1.11"
+      sources."braces-3.0.2"
+      sources."browser-stdout-1.3.1"
+      sources."buffer-from-1.1.2"
+      sources."builtin-modules-1.1.1"
+      sources."bytes-3.1.0"
+      sources."camelcase-6.2.0"
+      sources."caseless-0.12.0"
+      sources."chalk-4.1.2"
+      sources."chokidar-3.5.2"
+      (sources."cliui-7.0.4" // {
+        dependencies = [
+          sources."is-fullwidth-code-point-3.0.0"
+          sources."string-width-4.2.2"
+          sources."strip-ansi-6.0.0"
+        ];
+      })
+      sources."color-convert-2.0.1"
+      sources."color-name-1.1.4"
+      sources."colorette-1.4.0"
+      sources."combined-stream-1.0.8"
+      sources."commander-2.20.3"
+      sources."concat-map-0.0.1"
+      sources."config-3.3.6"
+      sources."content-disposition-0.5.3"
+      sources."content-type-1.0.4"
+      sources."cookie-0.4.0"
+      sources."cookie-signature-1.0.6"
+      sources."core-util-is-1.0.2"
+      sources."dashdash-1.14.1"
+      sources."debug-2.6.9"
+      sources."decamelize-4.0.0"
+      sources."deepmerge-4.2.2"
+      sources."delayed-stream-1.0.0"
+      sources."depd-1.1.2"
+      sources."destroy-1.0.4"
+      sources."diff-5.0.0"
+      sources."diff-sequences-27.0.6"
+      (sources."dom-serializer-1.3.2" // {
+        dependencies = [
+          sources."domhandler-4.2.2"
+        ];
+      })
+      sources."domelementtype-2.2.0"
+      sources."domhandler-3.3.0"
+      (sources."domutils-2.8.0" // {
+        dependencies = [
+          sources."domhandler-4.2.2"
+        ];
+      })
+      sources."ecc-jsbn-0.1.2"
+      sources."ee-first-1.1.1"
+      sources."emoji-regex-8.0.0"
+      sources."encodeurl-1.0.2"
+      sources."entities-2.2.0"
+      sources."escalade-3.1.1"
+      sources."escape-html-1.0.3"
+      sources."escape-string-regexp-4.0.0"
+      sources."esprima-4.0.1"
+      sources."etag-1.8.1"
+      (sources."expect-27.2.1" // {
+        dependencies = [
+          sources."ansi-styles-5.2.0"
+        ];
+      })
+      sources."express-4.17.1"
+      sources."extend-3.0.2"
+      sources."extsprintf-1.3.0"
+      sources."fast-deep-equal-3.1.3"
+      sources."fast-json-stable-stringify-2.1.0"
+      sources."fill-range-7.0.1"
+      sources."finalhandler-1.1.2"
+      sources."find-up-5.0.0"
+      sources."flat-5.0.2"
+      sources."forever-agent-0.6.1"
+      sources."form-data-2.3.3"
+      sources."forwarded-0.2.0"
+      sources."fresh-0.5.2"
+      sources."fs.realpath-1.0.0"
+      sources."fsevents-2.3.2"
+      sources."function-bind-1.1.1"
+      sources."get-caller-file-2.0.5"
+      sources."getpass-0.1.7"
+      sources."glob-7.1.7"
+      sources."glob-parent-5.1.2"
+      sources."glob-to-regexp-0.4.1"
+      sources."graceful-fs-4.2.8"
+      sources."growl-1.10.5"
+      sources."har-schema-2.0.0"
+      sources."har-validator-5.1.5"
+      sources."has-1.0.3"
+      sources."has-flag-4.0.0"
+      sources."hash.js-1.1.7"
+      sources."he-1.2.0"
+      sources."html-to-text-6.0.0"
+      sources."htmlencode-0.0.4"
+      sources."htmlparser2-4.1.0"
+      sources."http-errors-1.7.2"
+      sources."http-signature-1.2.0"
+      sources."iconv-lite-0.4.24"
+      sources."inflight-1.0.6"
+      sources."inherits-2.0.3"
+      sources."ipaddr.js-1.9.1"
+      sources."is-binary-path-2.1.0"
+      sources."is-core-module-2.6.0"
+      sources."is-extglob-2.1.1"
+      sources."is-fullwidth-code-point-2.0.0"
+      sources."is-glob-4.0.1"
+      sources."is-number-7.0.0"
+      sources."is-plain-obj-2.1.0"
+      sources."is-plain-object-5.0.0"
+      sources."is-promise-2.2.2"
+      sources."is-typedarray-1.0.0"
+      sources."is-unicode-supported-0.1.0"
+      sources."isexe-2.0.0"
+      sources."isstream-0.1.2"
+      sources."jest-diff-27.2.0"
+      sources."jest-get-type-27.0.6"
+      sources."jest-matcher-utils-27.2.0"
+      sources."jest-message-util-27.2.0"
+      sources."jest-regex-util-27.0.6"
+      sources."js-tokens-4.0.0"
+      sources."js-yaml-4.1.0"
+      sources."jsbn-0.1.1"
+      sources."json-schema-0.2.3"
+      sources."json-schema-traverse-0.4.1"
+      sources."json-stringify-safe-5.0.1"
+      sources."json5-2.2.0"
+      sources."jsprim-1.4.1"
+      sources."klona-2.0.4"
+      sources."locate-path-6.0.0"
+      sources."lodash-4.17.21"
+      sources."log-symbols-4.1.0"
+      sources."lowdb-1.0.0"
+      sources."lru-cache-6.0.0"
+      sources."make-error-1.3.6"
+      sources."matrix-bot-sdk-0.5.19"
+      sources."media-typer-0.3.0"
+      sources."merge-descriptors-1.0.1"
+      sources."methods-1.1.2"
+      sources."micromatch-4.0.4"
+      sources."mime-1.6.0"
+      sources."mime-db-1.49.0"
+      sources."mime-types-2.1.32"
+      sources."minimalistic-assert-1.0.1"
+      sources."minimatch-3.0.4"
+      sources."minimist-1.2.5"
+      sources."mkdirp-1.0.4"
+      (sources."mocha-9.1.1" // {
+        dependencies = [
+          (sources."debug-4.3.1" // {
+            dependencies = [
+              sources."ms-2.1.2"
+            ];
+          })
+          sources."ms-2.1.3"
+          sources."nanoid-3.1.23"
+          sources."supports-color-8.1.1"
+        ];
+      })
+      (sources."morgan-1.10.0" // {
+        dependencies = [
+          sources."depd-2.0.0"
+        ];
+      })
+      sources."ms-2.0.0"
+      sources."nanoid-3.1.25"
+      sources."negotiator-0.6.2"
+      sources."normalize-path-3.0.0"
+      sources."oauth-sign-0.9.0"
+      sources."on-finished-2.3.0"
+      sources."on-headers-1.0.2"
+      sources."once-1.4.0"
+      sources."p-limit-3.1.0"
+      sources."p-locate-5.0.0"
+      sources."parse-srcset-1.0.2"
+      sources."parseurl-1.3.3"
+      sources."path-exists-4.0.0"
+      sources."path-is-absolute-1.0.1"
+      sources."path-parse-1.0.7"
+      sources."path-to-regexp-0.1.7"
+      sources."performance-now-2.1.0"
+      sources."picomatch-2.3.0"
+      sources."pify-3.0.0"
+      sources."postcss-8.3.6"
+      (sources."pretty-format-27.2.0" // {
+        dependencies = [
+          sources."ansi-styles-5.2.0"
+        ];
+      })
+      sources."proxy-addr-2.0.7"
+      sources."psl-1.8.0"
+      sources."punycode-2.1.1"
+      sources."qs-6.7.0"
+      sources."randombytes-2.1.0"
+      sources."range-parser-1.2.1"
+      sources."raw-body-2.4.0"
+      sources."react-is-17.0.2"
+      sources."readdirp-3.6.0"
+      (sources."request-2.88.2" // {
+        dependencies = [
+          sources."qs-6.5.2"
+        ];
+      })
+      sources."request-promise-4.2.6"
+      sources."request-promise-core-1.1.4"
+      sources."require-directory-2.1.1"
+      sources."resolve-1.20.0"
+      sources."safe-buffer-5.1.2"
+      sources."safer-buffer-2.1.2"
+      (sources."sanitize-html-2.5.1" // {
+        dependencies = [
+          sources."domhandler-4.2.2"
+          sources."htmlparser2-6.1.0"
+        ];
+      })
+      sources."semver-5.7.1"
+      (sources."send-0.17.1" // {
+        dependencies = [
+          sources."ms-2.1.1"
+        ];
+      })
+      sources."serialize-javascript-6.0.0"
+      sources."serve-static-1.14.1"
+      sources."setprototypeof-1.1.1"
+      sources."slash-3.0.0"
+      sources."source-map-0.6.1"
+      sources."source-map-js-0.6.2"
+      sources."source-map-support-0.5.20"
+      sources."sprintf-js-1.0.3"
+      sources."sshpk-1.16.1"
+      (sources."stack-utils-2.0.5" // {
+        dependencies = [
+          sources."escape-string-regexp-2.0.0"
+        ];
+      })
+      sources."statuses-1.5.0"
+      sources."stealthy-require-1.1.1"
+      sources."steno-0.4.4"
+      sources."string-width-2.1.1"
+      (sources."strip-ansi-4.0.0" // {
+        dependencies = [
+          sources."ansi-regex-3.0.0"
+        ];
+      })
+      sources."strip-bom-3.0.0"
+      sources."strip-json-comments-3.1.1"
+      sources."supports-color-7.2.0"
+      sources."to-regex-range-5.0.1"
+      sources."toidentifier-1.0.0"
+      sources."tough-cookie-2.5.0"
+      sources."ts-mocha-8.0.0"
+      (sources."ts-node-7.0.1" // {
+        dependencies = [
+          sources."diff-3.5.0"
+          sources."mkdirp-0.5.5"
+        ];
+      })
+      (sources."tsconfig-paths-3.11.0" // {
+        dependencies = [
+          sources."json5-1.0.1"
+        ];
+      })
+      sources."tslib-1.14.1"
+      (sources."tslint-6.1.3" // {
+        dependencies = [
+          sources."ansi-styles-3.2.1"
+          sources."argparse-1.0.10"
+          sources."chalk-2.4.2"
+          sources."color-convert-1.9.3"
+          sources."color-name-1.1.3"
+          sources."diff-4.0.2"
+          sources."escape-string-regexp-1.0.5"
+          sources."has-flag-3.0.0"
+          sources."js-yaml-3.14.1"
+          sources."mkdirp-0.5.5"
+          sources."supports-color-5.5.0"
+        ];
+      })
+      sources."tsutils-2.29.0"
+      sources."tunnel-agent-0.6.0"
+      sources."tweetnacl-0.14.5"
+      sources."type-is-1.6.18"
+      sources."typescript-4.4.3"
+      sources."unpipe-1.0.0"
+      sources."uri-js-4.4.1"
+      sources."utils-merge-1.0.1"
+      sources."uuid-3.4.0"
+      sources."vary-1.1.2"
+      sources."verror-1.10.0"
+      sources."which-2.0.2"
+      sources."wide-align-1.1.3"
+      sources."workerpool-6.1.5"
+      (sources."wrap-ansi-7.0.0" // {
+        dependencies = [
+          sources."is-fullwidth-code-point-3.0.0"
+          sources."string-width-4.2.2"
+          sources."strip-ansi-6.0.0"
+        ];
+      })
+      sources."wrappy-1.0.2"
+      sources."y18n-5.0.8"
+      sources."yallist-4.0.0"
+      (sources."yargs-16.2.0" // {
+        dependencies = [
+          sources."is-fullwidth-code-point-3.0.0"
+          sources."string-width-4.2.2"
+          sources."strip-ansi-6.0.0"
+        ];
+      })
+      sources."yargs-parser-20.2.4"
+      sources."yargs-unparser-2.0.0"
+      sources."yn-2.0.0"
+      sources."yocto-queue-0.1.0"
+    ];
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "A moderation tool for Matrix";
+      license = "Apache-2.0";
+    };
+    production = false;
+    bypassCache = true;
+    reconstructLock = true;
+  };
+in
+{
+  args = args;
+  sources = sources;
+  tarball = nodeEnv.buildNodeSourceDist args;
+  package = nodeEnv.buildNodePackage args;
+  shell = nodeEnv.buildNodeShell args;
+  nodeDependencies = nodeEnv.buildNodeDependencies (lib.overrideExisting args {
+    src = stdenv.mkDerivation {
+      name = args.name + "-package-json";
+      src = nix-gitignore.gitignoreSourcePure [
+        "*"
+        "!package.json"
+        "!package-lock.json"
+      ] args.src;
+      dontBuild = true;
+      installPhase = "mkdir -p $out; cp -r ./* $out;";
+    };
+  });
+}
diff --git a/pkgs/servers/mjolnir/node-env.nix b/pkgs/servers/mjolnir/node-env.nix
new file mode 100644
index 000000000000..21089c4d5459
--- /dev/null
+++ b/pkgs/servers/mjolnir/node-env.nix
@@ -0,0 +1,573 @@
+# This file originates from node2nix
+
+{lib, stdenv, nodejs, python2, pkgs, libtool, runCommand, writeTextFile}:
+
+let
+  # Workaround to cope with utillinux in Nixpkgs 20.09 and util-linux in Nixpkgs master
+  utillinux = if pkgs ? utillinux then pkgs.utillinux else pkgs.util-linux;
+
+  python = if nodejs ? python then nodejs.python else python2;
+
+  # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
+  tarWrapper = runCommand "tarWrapper" {} ''
+    mkdir -p $out/bin
+
+    cat > $out/bin/tar <<EOF
+    #! ${stdenv.shell} -e
+    $(type -p tar) "\$@" --warning=no-unknown-keyword --delay-directory-restore
+    EOF
+
+    chmod +x $out/bin/tar
+  '';
+
+  # Function that generates a TGZ file from a NPM project
+  buildNodeSourceDist =
+    { name, version, src, ... }:
+
+    stdenv.mkDerivation {
+      name = "node-tarball-${name}-${version}";
+      inherit src;
+      buildInputs = [ nodejs ];
+      buildPhase = ''
+        export HOME=$TMPDIR
+        tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts)
+      '';
+      installPhase = ''
+        mkdir -p $out/tarballs
+        mv $tgzFile $out/tarballs
+        mkdir -p $out/nix-support
+        echo "file source-dist $out/tarballs/$tgzFile" >> $out/nix-support/hydra-build-products
+      '';
+    };
+
+  includeDependencies = {dependencies}:
+    lib.optionalString (dependencies != [])
+      (lib.concatMapStrings (dependency:
+        ''
+          # Bundle the dependencies of the package
+          mkdir -p node_modules
+          cd node_modules
+
+          # Only include dependencies if they don't exist. They may also be bundled in the package.
+          if [ ! -e "${dependency.name}" ]
+          then
+              ${composePackage dependency}
+          fi
+
+          cd ..
+        ''
+      ) dependencies);
+
+  # Recursively composes the dependencies of a package
+  composePackage = { name, packageName, src, dependencies ? [], ... }@args:
+    builtins.addErrorContext "while evaluating node package '${packageName}'" ''
+      DIR=$(pwd)
+      cd $TMPDIR
+
+      unpackFile ${src}
+
+      # Make the base dir in which the target dependency resides first
+      mkdir -p "$(dirname "$DIR/${packageName}")"
+
+      if [ -f "${src}" ]
+      then
+          # Figure out what directory has been unpacked
+          packageDir="$(find . -maxdepth 1 -type d | tail -1)"
+
+          # Restore write permissions to make building work
+          find "$packageDir" -type d -exec chmod u+x {} \;
+          chmod -R u+w "$packageDir"
+
+          # Move the extracted tarball into the output folder
+          mv "$packageDir" "$DIR/${packageName}"
+      elif [ -d "${src}" ]
+      then
+          # Get a stripped name (without hash) of the source directory.
+          # On old nixpkgs it's already set internally.
+          if [ -z "$strippedName" ]
+          then
+              strippedName="$(stripHash ${src})"
+          fi
+
+          # Restore write permissions to make building work
+          chmod -R u+w "$strippedName"
+
+          # Move the extracted directory into the output folder
+          mv "$strippedName" "$DIR/${packageName}"
+      fi
+
+      # Unset the stripped name to not confuse the next unpack step
+      unset strippedName
+
+      # Include the dependencies of the package
+      cd "$DIR/${packageName}"
+      ${includeDependencies { inherit dependencies; }}
+      cd ..
+      ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+    '';
+
+  pinpointDependencies = {dependencies, production}:
+    let
+      pinpointDependenciesFromPackageJSON = writeTextFile {
+        name = "pinpointDependencies.js";
+        text = ''
+          var fs = require('fs');
+          var path = require('path');
+
+          function resolveDependencyVersion(location, name) {
+              if(location == process.env['NIX_STORE']) {
+                  return null;
+              } else {
+                  var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");
+
+                  if(fs.existsSync(dependencyPackageJSON)) {
+                      var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));
+
+                      if(dependencyPackageObj.name == name) {
+                          return dependencyPackageObj.version;
+                      }
+                  } else {
+                      return resolveDependencyVersion(path.resolve(location, ".."), name);
+                  }
+              }
+          }
+
+          function replaceDependencies(dependencies) {
+              if(typeof dependencies == "object" && dependencies !== null) {
+                  for(var dependency in dependencies) {
+                      var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);
+
+                      if(resolvedVersion === null) {
+                          process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
+                      } else {
+                          dependencies[dependency] = resolvedVersion;
+                      }
+                  }
+              }
+          }
+
+          /* Read the package.json configuration */
+          var packageObj = JSON.parse(fs.readFileSync('./package.json'));
+
+          /* Pinpoint all dependencies */
+          replaceDependencies(packageObj.dependencies);
+          if(process.argv[2] == "development") {
+              replaceDependencies(packageObj.devDependencies);
+          }
+          replaceDependencies(packageObj.optionalDependencies);
+
+          /* Write the fixed package.json file */
+          fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
+        '';
+      };
+    in
+    ''
+      node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"}
+
+      ${lib.optionalString (dependencies != [])
+        ''
+          if [ -d node_modules ]
+          then
+              cd node_modules
+              ${lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
+              cd ..
+          fi
+        ''}
+    '';
+
+  # Recursively traverses all dependencies of a package and pinpoints all
+  # dependencies in the package.json file to the versions that are actually
+  # being used.
+
+  pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
+    ''
+      if [ -d "${packageName}" ]
+      then
+          cd "${packageName}"
+          ${pinpointDependencies { inherit dependencies production; }}
+          cd ..
+          ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+      fi
+    '';
+
+  # Extract the Node.js source code which is used to compile packages with
+  # native bindings
+  nodeSources = runCommand "node-sources" {} ''
+    tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
+    mv node-* $out
+  '';
+
+  # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty)
+  addIntegrityFieldsScript = writeTextFile {
+    name = "addintegrityfields.js";
+    text = ''
+      var fs = require('fs');
+      var path = require('path');
+
+      function augmentDependencies(baseDir, dependencies) {
+          for(var dependencyName in dependencies) {
+              var dependency = dependencies[dependencyName];
+
+              // Open package.json and augment metadata fields
+              var packageJSONDir = path.join(baseDir, "node_modules", dependencyName);
+              var packageJSONPath = path.join(packageJSONDir, "package.json");
+
+              if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored
+                  console.log("Adding metadata fields to: "+packageJSONPath);
+                  var packageObj = JSON.parse(fs.readFileSync(packageJSONPath));
+
+                  if(dependency.integrity) {
+                      packageObj["_integrity"] = dependency.integrity;
+                  } else {
+                      packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads.
+                  }
+
+                  if(dependency.resolved) {
+                      packageObj["_resolved"] = dependency.resolved; // Adopt the resolved property if one has been provided
+                  } else {
+                      packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
+                  }
+
+                  if(dependency.from !== undefined) { // Adopt from property if one has been provided
+                      packageObj["_from"] = dependency.from;
+                  }
+
+                  fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
+              }
+
+              // Augment transitive dependencies
+              if(dependency.dependencies !== undefined) {
+                  augmentDependencies(packageJSONDir, dependency.dependencies);
+              }
+          }
+      }
+
+      if(fs.existsSync("./package-lock.json")) {
+          var packageLock = JSON.parse(fs.readFileSync("./package-lock.json"));
+
+          if(![1, 2].includes(packageLock.lockfileVersion)) {
+             process.stderr.write("Sorry, I only understand lock file versions 1 and 2!\n");
+             process.exit(1);
+          }
+
+          if(packageLock.dependencies !== undefined) {
+              augmentDependencies(".", packageLock.dependencies);
+          }
+      }
+    '';
+  };
+
+  # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes
+  reconstructPackageLock = writeTextFile {
+    name = "addintegrityfields.js";
+    text = ''
+      var fs = require('fs');
+      var path = require('path');
+
+      var packageObj = JSON.parse(fs.readFileSync("package.json"));
+
+      var lockObj = {
+          name: packageObj.name,
+          version: packageObj.version,
+          lockfileVersion: 1,
+          requires: true,
+          dependencies: {}
+      };
+
+      function augmentPackageJSON(filePath, dependencies) {
+          var packageJSON = path.join(filePath, "package.json");
+          if(fs.existsSync(packageJSON)) {
+              var packageObj = JSON.parse(fs.readFileSync(packageJSON));
+              dependencies[packageObj.name] = {
+                  version: packageObj.version,
+                  integrity: "sha1-000000000000000000000000000=",
+                  dependencies: {}
+              };
+              processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies);
+          }
+      }
+
+      function processDependencies(dir, dependencies) {
+          if(fs.existsSync(dir)) {
+              var files = fs.readdirSync(dir);
+
+              files.forEach(function(entry) {
+                  var filePath = path.join(dir, entry);
+                  var stats = fs.statSync(filePath);
+
+                  if(stats.isDirectory()) {
+                      if(entry.substr(0, 1) == "@") {
+                          // When we encounter a namespace folder, augment all packages belonging to the scope
+                          var pkgFiles = fs.readdirSync(filePath);
+
+                          pkgFiles.forEach(function(entry) {
+                              if(stats.isDirectory()) {
+                                  var pkgFilePath = path.join(filePath, entry);
+                                  augmentPackageJSON(pkgFilePath, dependencies);
+                              }
+                          });
+                      } else {
+                          augmentPackageJSON(filePath, dependencies);
+                      }
+                  }
+              });
+          }
+      }
+
+      processDependencies("node_modules", lockObj.dependencies);
+
+      fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2));
+    '';
+  };
+
+  prepareAndInvokeNPM = {packageName, bypassCache, reconstructLock, npmFlags, production}:
+    let
+      forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
+    in
+    ''
+        # Pinpoint the versions of all dependencies to the ones that are actually being used
+        echo "pinpointing versions of dependencies..."
+        source $pinpointDependenciesScriptPath
+
+        # Patch the shebangs of the bundled modules to prevent them from
+        # calling executables outside the Nix store as much as possible
+        patchShebangs .
+
+        # Deploy the Node.js package by running npm install. Since the
+        # dependencies have been provided already by ourselves, it should not
+        # attempt to install them again, which is good, because we want to make
+        # it Nix's responsibility. If it needs to install any dependencies
+        # anyway (e.g. because the dependency parameters are
+        # incomplete/incorrect), it fails.
+        #
+        # The other responsibilities of NPM are kept -- version checks, build
+        # steps, postprocessing etc.
+
+        export HOME=$TMPDIR
+        cd "${packageName}"
+        runHook preRebuild
+
+        ${lib.optionalString bypassCache ''
+          ${lib.optionalString reconstructLock ''
+            if [ -f package-lock.json ]
+            then
+                echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!"
+                echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!"
+                rm package-lock.json
+            else
+                echo "No package-lock.json file found, reconstructing..."
+            fi
+
+            node ${reconstructPackageLock}
+          ''}
+
+          node ${addIntegrityFieldsScript}
+        ''}
+
+        npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild
+
+        if [ "''${dontNpmInstall-}" != "1" ]
+        then
+            # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
+            rm -f npm-shrinkwrap.json
+
+            npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} install
+        fi
+    '';
+
+  # Builds and composes an NPM package including all its dependencies
+  buildNodePackage =
+    { name
+    , packageName
+    , version
+    , dependencies ? []
+    , buildInputs ? []
+    , production ? true
+    , npmFlags ? ""
+    , dontNpmInstall ? false
+    , bypassCache ? false
+    , reconstructLock ? false
+    , preRebuild ? ""
+    , dontStrip ? true
+    , unpackPhase ? "true"
+    , buildPhase ? "true"
+    , meta ? {}
+    , ... }@args:
+
+    let
+      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" "meta" ];
+    in
+    stdenv.mkDerivation ({
+      name = "${name}-${version}";
+      buildInputs = [ tarWrapper python nodejs ]
+        ++ lib.optional (stdenv.isLinux) utillinux
+        ++ lib.optional (stdenv.isDarwin) libtool
+        ++ buildInputs;
+
+      inherit nodejs;
+
+      inherit dontStrip; # Stripping may fail a build for some package deployments
+      inherit dontNpmInstall preRebuild unpackPhase buildPhase;
+
+      compositionScript = composePackage args;
+      pinpointDependenciesScript = pinpointDependenciesOfPackage args;
+
+      passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
+
+      installPhase = ''
+        # Create and enter a root node_modules/ folder
+        mkdir -p $out/lib/node_modules
+        cd $out/lib/node_modules
+
+        # Compose the package and all its dependencies
+        source $compositionScriptPath
+
+        ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
+
+        # Create symlink to the deployed executable folder, if applicable
+        if [ -d "$out/lib/node_modules/.bin" ]
+        then
+            ln -s $out/lib/node_modules/.bin $out/bin
+        fi
+
+        # Create symlinks to the deployed manual page folders, if applicable
+        if [ -d "$out/lib/node_modules/${packageName}/man" ]
+        then
+            mkdir -p $out/share
+            for dir in "$out/lib/node_modules/${packageName}/man/"*
+            do
+                mkdir -p $out/share/man/$(basename "$dir")
+                for page in "$dir"/*
+                do
+                    ln -s $page $out/share/man/$(basename "$dir")
+                done
+            done
+        fi
+
+        # Run post install hook, if provided
+        runHook postInstall
+      '';
+
+      meta = {
+        # default to Node.js' platforms
+        platforms = nodejs.meta.platforms;
+      } // meta;
+    } // extraArgs);
+
+  # Builds a node environment (a node_modules folder and a set of binaries)
+  buildNodeDependencies =
+    { name
+    , packageName
+    , version
+    , src
+    , dependencies ? []
+    , buildInputs ? []
+    , production ? true
+    , npmFlags ? ""
+    , dontNpmInstall ? false
+    , bypassCache ? false
+    , reconstructLock ? false
+    , dontStrip ? true
+    , unpackPhase ? "true"
+    , buildPhase ? "true"
+    , ... }@args:
+
+    let
+      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
+    in
+      stdenv.mkDerivation ({
+        name = "node-dependencies-${name}-${version}";
+
+        buildInputs = [ tarWrapper python nodejs ]
+          ++ lib.optional (stdenv.isLinux) utillinux
+          ++ lib.optional (stdenv.isDarwin) libtool
+          ++ buildInputs;
+
+        inherit dontStrip; # Stripping may fail a build for some package deployments
+        inherit dontNpmInstall unpackPhase buildPhase;
+
+        includeScript = includeDependencies { inherit dependencies; };
+        pinpointDependenciesScript = pinpointDependenciesOfPackage args;
+
+        passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
+
+        installPhase = ''
+          mkdir -p $out/${packageName}
+          cd $out/${packageName}
+
+          source $includeScriptPath
+
+          # Create fake package.json to make the npm commands work properly
+          cp ${src}/package.json .
+          chmod 644 package.json
+          ${lib.optionalString bypassCache ''
+            if [ -f ${src}/package-lock.json ]
+            then
+                cp ${src}/package-lock.json .
+            fi
+          ''}
+
+          # Go to the parent folder to make sure that all packages are pinpointed
+          cd ..
+          ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+
+          ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
+
+          # Expose the executables that were installed
+          cd ..
+          ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+
+          mv ${packageName} lib
+          ln -s $out/lib/node_modules/.bin $out/bin
+        '';
+      } // extraArgs);
+
+  # Builds a development shell
+  buildNodeShell =
+    { name
+    , packageName
+    , version
+    , src
+    , dependencies ? []
+    , buildInputs ? []
+    , production ? true
+    , npmFlags ? ""
+    , dontNpmInstall ? false
+    , bypassCache ? false
+    , reconstructLock ? false
+    , dontStrip ? true
+    , unpackPhase ? "true"
+    , buildPhase ? "true"
+    , ... }@args:
+
+    let
+      nodeDependencies = buildNodeDependencies args;
+    in
+    stdenv.mkDerivation {
+      name = "node-shell-${name}-${version}";
+
+      buildInputs = [ python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
+      buildCommand = ''
+        mkdir -p $out/bin
+        cat > $out/bin/shell <<EOF
+        #! ${stdenv.shell} -e
+        $shellHook
+        exec ${stdenv.shell}
+        EOF
+        chmod +x $out/bin/shell
+      '';
+
+      # Provide the dependencies in a development shell through the NODE_PATH environment variable
+      inherit nodeDependencies;
+      shellHook = lib.optionalString (dependencies != []) ''
+        export NODE_PATH=${nodeDependencies}/lib/node_modules
+        export PATH="${nodeDependencies}/bin:$PATH"
+      '';
+    };
+in
+{
+  buildNodeSourceDist = lib.makeOverridable buildNodeSourceDist;
+  buildNodePackage = lib.makeOverridable buildNodePackage;
+  buildNodeDependencies = lib.makeOverridable buildNodeDependencies;
+  buildNodeShell = lib.makeOverridable buildNodeShell;
+}
diff --git a/pkgs/servers/mjolnir/update.sh b/pkgs/servers/mjolnir/update.sh
new file mode 100755
index 000000000000..6c7b2fb417b3
--- /dev/null
+++ b/pkgs/servers/mjolnir/update.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl common-updater-scripts nodePackages.node2nix gnused nix coreutils jq
+
+set -euo pipefail
+
+latestVersion="$(curl -s "https://api.github.com/repos/matrix-org/mjolnir/releases?per_page=1" | jq -r ".[0].tag_name" | sed 's/^v//')"
+currentVersion=$(nix-instantiate --eval -E "with import ./. {}; mjolnir.version or (lib.getVersion mjolnir)" | tr -d '"')
+
+if [[ "$currentVersion" == "$latestVersion" ]]; then
+  echo "mjolnir is up-to-date: $currentVersion"
+  exit 0
+fi
+
+update-source-version mjolnir 0 0000000000000000000000000000000000000000000000000000000000000000
+update-source-version mjolnir "$latestVersion"
+
+# use patched source
+store_src="$(nix-build . -A mjolnir.src --no-out-link)"
+
+cd "$(dirname "${BASH_SOURCE[0]}")"
+
+node2nix \
+  --nodejs-12 \
+  --development \
+  --node-env ./node-env.nix \
+  --output ./node-deps.nix \
+  --input "$store_src/package.json" \
+  --composition ./node-composition.nix
+
diff --git a/pkgs/tools/admin/pulumi/data.nix b/pkgs/tools/admin/pulumi/data.nix
index bc702e870c00..568ff7292f08 100644
--- a/pkgs/tools/admin/pulumi/data.nix
+++ b/pkgs/tools/admin/pulumi/data.nix
@@ -1,392 +1,392 @@
 # DO NOT EDIT! This file is generated automatically by update.sh
 { }:
 {
-  version = "3.17.0";
+  version = "3.17.1";
   pulumiPkgs = {
     x86_64-linux = [
       {
-        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.17.0-linux-x64.tar.gz";
-        sha256 = "1n9zrqjvm6x6qgwd8hbbl9ywn13niw026a37nlsg5kza2xp8x3al";
+        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.17.1-linux-x64.tar.gz";
+        sha256 = "1npm5jv0wcylidirxgfxxmp21mv1r6xl2lz9x0hdjmrs2cr1kmrf";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.9.0-linux-amd64.tar.gz";
-        sha256 = "19rmwbizkhpxlwayd32hfk2dvz9mddkbg956ryckhfgfis6s3scr";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v1.6.0-linux-amd64.tar.gz";
+        sha256 = "198m5fdppwzpqr30vpvpl8sjx90rng8q8cxvrbvaj179jnfg3bm2";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v4.6.0-linux-amd64.tar.gz";
-        sha256 = "151bw127nxl5bdyqwbvkg0i8fi6060n8yn2skdb95s9p7f1b1fvp";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.4.0-linux-amd64.tar.gz";
+        sha256 = "0wzbwpnnjm8lnph6kh2nrb0ns2v4y70sp10pp9qnwhcxggqjpb5r";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-postgresql-v3.2.0-linux-amd64.tar.gz";
-        sha256 = "1lmy0dmpspzflc9z8p4w1cz47lbqnbkq8dng3v40lpbs75pnprvs";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-postgresql-v3.3.0-linux-amd64.tar.gz";
+        sha256 = "05nfdwgfzi5f3hgj2g6dccaidqf9a9xzlv5vp3cd1rsxd159yk9j";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v4.26.0-linux-amd64.tar.gz";
-        sha256 = "1rzwgfz2ikbcjp99yiiai2cqawk80xhwrc7335fylifrvl3wsqis";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v4.3.0-linux-amd64.tar.gz";
+        sha256 = "0mckcwyngxiv46khvchaxdylcgk82b5j5hlfjiky5qg60bic4gnr";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v3.4.0-linux-amd64.tar.gz";
-        sha256 = "0jmbfy6y0l7zpzwndz6xj6jv20ax9rbg8nbqwcadjf96a3zglwhf";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.3.1-linux-amd64.tar.gz";
+        sha256 = "1ixmsxawp0qbyjs37c74gcvj2icpbda6znl17yp9bhiyvnrdvxn7";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v4.0.0-linux-amd64.tar.gz";
-        sha256 = "1p21963qr8rdl5jp7f05j02yq0ab3flybvzjn7xadcl7m85mkyxh";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v2.2.0-linux-amd64.tar.gz";
+        sha256 = "0d88xfi7zzmpyrnvakwxsyavdx6d5hmfrcf4jhmd53mni0m0551l";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v4.2.0-linux-amd64.tar.gz";
-        sha256 = "1h5159y7xlslnijs8lpi4vqgvj2px6whxk9m17p9n7wiyqbmd5na";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-equinix-metal-v3.1.0-linux-amd64.tar.gz";
+        sha256 = "1rv6l82b1v44fa685dqq7ivsr1y4xaqln0mqd9hyqnajkb2761d5";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.26.0-linux-amd64.tar.gz";
-        sha256 = "0gwfw9gr8lrg27ivkw4xx18jjf3zik8cg6gq62nq2y0bclzb3hn6";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v3.5.0-linux-amd64.tar.gz";
+        sha256 = "00qvwqynyyj72lp41c4calxx53ckf2dg0cpn9s7sr9alvnffvwzp";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.3.1-linux-amd64.tar.gz";
-        sha256 = "1ixmsxawp0qbyjs37c74gcvj2icpbda6znl17yp9bhiyvnrdvxn7";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v4.0.0-linux-amd64.tar.gz";
+        sha256 = "1p21963qr8rdl5jp7f05j02yq0ab3flybvzjn7xadcl7m85mkyxh";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.4.0-linux-amd64.tar.gz";
-        sha256 = "0wzbwpnnjm8lnph6kh2nrb0ns2v4y70sp10pp9qnwhcxggqjpb5r";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.1.0-linux-amd64.tar.gz";
+        sha256 = "0lj01hyjyq3qazkryvvxkx6nwai3bac9shqxb6hcqv4pfdjzzxhr";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.2.0-linux-amd64.tar.gz";
-        sha256 = "0jxcwn3zwqwg29ib5wylmkg8bpzd0vm86yxylh6b2nwfnbnn5d9v";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v4.0.1-linux-amd64.tar.gz";
+        sha256 = "0xrq4ffkaa0z5w2g7b9fdll3sh8wpzd6fg0xay7hfzjnl65dl3mp";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v3.4.0-linux-amd64.tar.gz";
-        sha256 = "1apx62przhzn712pz89lbx94da352b0n794cz753vlfqvxpkfifq";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v4.26.0-linux-amd64.tar.gz";
+        sha256 = "1rzwgfz2ikbcjp99yiiai2cqawk80xhwrc7335fylifrvl3wsqis";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v1.5.0-linux-amd64.tar.gz";
-        sha256 = "194kym832zfnf58z44y5n789xsvqp2dr3jy5sffqqhfrgcgabvr2";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.3.0-linux-amd64.tar.gz";
+        sha256 = "0nri27c71kf3pjivd0w9ymkl4rn39flh5n2rphi4gn6v4kfb1192";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v4.3.0-linux-amd64.tar.gz";
-        sha256 = "0mckcwyngxiv46khvchaxdylcgk82b5j5hlfjiky5qg60bic4gnr";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.26.0-linux-amd64.tar.gz";
+        sha256 = "0pd1a2xhhhxyb2sblq474hrwrm18k2dh4c20r3b2xqz77l25nzig";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v3.1.0-linux-amd64.tar.gz";
-        sha256 = "0ffqah4anhdacmfb8n3hdq17jhqq0qclc0l0cq77hvhvgn39yy4r";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-packet-v3.2.2-linux-amd64.tar.gz";
+        sha256 = "0glbjhgrb2hiyhd6kwmy7v384j8zw641pw9737g1fczv3x16a3s3";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.8.0-linux-amd64.tar.gz";
         sha256 = "0dc96mvy76i0d70jp8gln14cwzsgdxccyhrxrcf3kq38j4vf3bl1";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-packet-v3.2.2-linux-amd64.tar.gz";
-        sha256 = "0glbjhgrb2hiyhd6kwmy7v384j8zw641pw9737g1fczv3x16a3s3";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v4.6.0-linux-amd64.tar.gz";
+        sha256 = "1536pz40m4a34swjxpy7vw7xik6jqfspwdnn2z49n8a42y691cd9";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-equinix-metal-v3.1.0-linux-amd64.tar.gz";
-        sha256 = "1rv6l82b1v44fa685dqq7ivsr1y4xaqln0mqd9hyqnajkb2761d5";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v4.2.0-linux-amd64.tar.gz";
+        sha256 = "1h5159y7xlslnijs8lpi4vqgvj2px6whxk9m17p9n7wiyqbmd5na";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.26.0-linux-amd64.tar.gz";
-        sha256 = "0pd1a2xhhhxyb2sblq474hrwrm18k2dh4c20r3b2xqz77l25nzig";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v3.5.0-linux-amd64.tar.gz";
+        sha256 = "0xy6h16vdg55rc0qmhxc2r1hz3iv78iyjx4i5j6jmlcwpgrwdlii";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.0.0-linux-amd64.tar.gz";
-        sha256 = "04gaimdzh04v7f11xw1b7p95rbb142kbnix1zqas68wd6vpw9kyp";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v4.6.0-linux-amd64.tar.gz";
+        sha256 = "151bw127nxl5bdyqwbvkg0i8fi6060n8yn2skdb95s9p7f1b1fvp";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v2.2.0-linux-amd64.tar.gz";
-        sha256 = "0d88xfi7zzmpyrnvakwxsyavdx6d5hmfrcf4jhmd53mni0m0551l";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.9.0-linux-amd64.tar.gz";
+        sha256 = "19rmwbizkhpxlwayd32hfk2dvz9mddkbg956ryckhfgfis6s3scr";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v4.5.1-linux-amd64.tar.gz";
-        sha256 = "0cb2b4rrz7zvdpnf0iff21y4kass7gqfimj854fh6za012j18fnx";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v3.1.0-linux-amd64.tar.gz";
+        sha256 = "0ffqah4anhdacmfb8n3hdq17jhqq0qclc0l0cq77hvhvgn39yy4r";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v4.0.1-linux-amd64.tar.gz";
-        sha256 = "0xrq4ffkaa0z5w2g7b9fdll3sh8wpzd6fg0xay7hfzjnl65dl3mp";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.27.2-linux-amd64.tar.gz";
+        sha256 = "0dngfi5yy01yngwl9x65b9w67zrihhkbccfsr989ygbzxs3gi9bj";
       }
     ];
     x86_64-darwin = [
       {
-        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.17.0-darwin-x64.tar.gz";
-        sha256 = "1a1bafpwgzv6s80rd4zf9nvchm4jn22wan9z81plxk4d67yfnf7w";
+        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.17.1-darwin-x64.tar.gz";
+        sha256 = "0cn6zramx5hjwd9w3i0kfpzsdz0j9pskqx43yram6dh7w7vh3wxw";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.9.0-darwin-amd64.tar.gz";
-        sha256 = "148wdcdmip8rlh61clhcg44rk1kmvc15dkga1nhp8ngzry1f7lf2";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v1.6.0-darwin-amd64.tar.gz";
+        sha256 = "0vh8gnmjkchz5245iwgb1slwahq7cw18g6x9fihyqzzlpz83lr7h";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v4.6.0-darwin-amd64.tar.gz";
-        sha256 = "183y60zvh2i20a3wg7yl1dm6bkpka0y6plnmb8746x7v9j5g4xlr";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.4.0-darwin-amd64.tar.gz";
+        sha256 = "0p3zkgr557ngl6pjdidrp76b741nkdsw4s7wf1aj4mpw74fshm3g";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-postgresql-v3.2.0-darwin-amd64.tar.gz";
-        sha256 = "1j7z5dbqzsdq1q8ks9g5pwzyc3ml6avhhp6xj94dzdhskl6pd8w5";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-postgresql-v3.3.0-darwin-amd64.tar.gz";
+        sha256 = "0q19sh7l1mjl40i5vdsrjfldncxnicalmlgv3yjkw5xpxkgr98z0";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v4.26.0-darwin-amd64.tar.gz";
-        sha256 = "03ccnifs1maxnr7qnqw1mn3lc7x2c06icbc9m9j218bx16lwf8jq";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v4.3.0-darwin-amd64.tar.gz";
+        sha256 = "04hhvakbrvjqzlhhacpb4syy6bz8qgkhqfl8339wjapsczy776j5";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v3.4.0-darwin-amd64.tar.gz";
-        sha256 = "0vd527sx49shr3mpbm5bs4sspmm6vsjli6zlbl5w61y85jp2as1m";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.3.1-darwin-amd64.tar.gz";
+        sha256 = "1dy4n03xvirg6fihiid786d88qlkyqkvk4fq6ggnxc92620x7342";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v4.0.0-darwin-amd64.tar.gz";
-        sha256 = "1idvdcmbbia0cwkw5v7zp7695p1a6sfmrgsfmzn0r9p8lyg66k8w";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v2.2.0-darwin-amd64.tar.gz";
+        sha256 = "12mkr0xczdnp21k0k7qn4r3swkaq3pr6v2z853p1db7ksz5kds23";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v4.2.0-darwin-amd64.tar.gz";
-        sha256 = "0r2ykjwam5m2mfiibhq993s8n5pzmks837cwb57jwgwx8lc3ra4x";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-equinix-metal-v3.1.0-darwin-amd64.tar.gz";
+        sha256 = "04l07fqzf3fs7hj4giggzyjv9979qcpxrqbiapdjp7x4qsbsz0fv";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.26.0-darwin-amd64.tar.gz";
-        sha256 = "1pvicixr245cvziw1inhnzkqkzcm95zyjh6mc5gq6cdwwpagdik0";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v3.5.0-darwin-amd64.tar.gz";
+        sha256 = "09biqsrcd4h01m6dkfdgb2gnly229ci8a0sd2rr1m75j749ijfh7";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.3.1-darwin-amd64.tar.gz";
-        sha256 = "1dy4n03xvirg6fihiid786d88qlkyqkvk4fq6ggnxc92620x7342";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v4.0.0-darwin-amd64.tar.gz";
+        sha256 = "1idvdcmbbia0cwkw5v7zp7695p1a6sfmrgsfmzn0r9p8lyg66k8w";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.4.0-darwin-amd64.tar.gz";
-        sha256 = "0p3zkgr557ngl6pjdidrp76b741nkdsw4s7wf1aj4mpw74fshm3g";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.1.0-darwin-amd64.tar.gz";
+        sha256 = "0fhhc2k0g8mpxzcgci4jl3m59q3n8w3nka94l0n7r9cvs81099n6";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.2.0-darwin-amd64.tar.gz";
-        sha256 = "1z38yhmbmna3d397kdgribqffgagw28xf6ffhksp428dcn979yh5";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v4.0.1-darwin-amd64.tar.gz";
+        sha256 = "1qb2gaiinclmbswyn5aakwjmm3gaggscckb1q2syx69k42hvp3s3";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v3.4.0-darwin-amd64.tar.gz";
-        sha256 = "1cp7zfzv6jzjx7c5ywwlbhqwf6xz2yzqdbapdlhjq4wbiy5w58nl";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v4.26.0-darwin-amd64.tar.gz";
+        sha256 = "03ccnifs1maxnr7qnqw1mn3lc7x2c06icbc9m9j218bx16lwf8jq";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v1.5.0-darwin-amd64.tar.gz";
-        sha256 = "1gf83dv5wqvmx8ll7my3c8biklrddjrv069g97d3n510m0k7w85w";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.3.0-darwin-amd64.tar.gz";
+        sha256 = "06s58xlwm3wf7895bzsqx4jsfb0kbxanzlaf21jff45y62nk1f1p";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v4.3.0-darwin-amd64.tar.gz";
-        sha256 = "04hhvakbrvjqzlhhacpb4syy6bz8qgkhqfl8339wjapsczy776j5";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.26.0-darwin-amd64.tar.gz";
+        sha256 = "1f06x2h4i15vjzjyzcl5f01by2639hsfij2daayj5xiji3b415ps";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v3.1.0-darwin-amd64.tar.gz";
-        sha256 = "0j8ysk4wh78xhk3nv6c1dvvyw5ihs7amwlyqicch52yc6jq3v5a6";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-packet-v3.2.2-darwin-amd64.tar.gz";
+        sha256 = "0621njipng32x43lw8n49mapq10lnvibg8vlvgciqsfvrbpz1yp5";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.8.0-darwin-amd64.tar.gz";
         sha256 = "1lfai2xd9538cq89b4jg85hj0slnvbwndd24y2g2q9h5qla08cx2";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-packet-v3.2.2-darwin-amd64.tar.gz";
-        sha256 = "0621njipng32x43lw8n49mapq10lnvibg8vlvgciqsfvrbpz1yp5";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v4.6.0-darwin-amd64.tar.gz";
+        sha256 = "05adn2mnfrhnqvq4cngsvjg489339azzsf6bzd9qj24qqwm9x5v3";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-equinix-metal-v3.1.0-darwin-amd64.tar.gz";
-        sha256 = "04l07fqzf3fs7hj4giggzyjv9979qcpxrqbiapdjp7x4qsbsz0fv";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v4.2.0-darwin-amd64.tar.gz";
+        sha256 = "0r2ykjwam5m2mfiibhq993s8n5pzmks837cwb57jwgwx8lc3ra4x";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.26.0-darwin-amd64.tar.gz";
-        sha256 = "1f06x2h4i15vjzjyzcl5f01by2639hsfij2daayj5xiji3b415ps";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v3.5.0-darwin-amd64.tar.gz";
+        sha256 = "144wz00hcd6zbybm0b7gqy8by3nnszf3885znvsichig23p1h76c";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.0.0-darwin-amd64.tar.gz";
-        sha256 = "18vrp0zzi92x4l5nkjszvd0zr7pk6nl6s3h5a3hvsz5qrj2830q3";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v4.6.0-darwin-amd64.tar.gz";
+        sha256 = "183y60zvh2i20a3wg7yl1dm6bkpka0y6plnmb8746x7v9j5g4xlr";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v2.2.0-darwin-amd64.tar.gz";
-        sha256 = "12mkr0xczdnp21k0k7qn4r3swkaq3pr6v2z853p1db7ksz5kds23";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.9.0-darwin-amd64.tar.gz";
+        sha256 = "148wdcdmip8rlh61clhcg44rk1kmvc15dkga1nhp8ngzry1f7lf2";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v4.5.1-darwin-amd64.tar.gz";
-        sha256 = "1n82xwkngql039m3pa1pwa8wvqg089mr8xnai67jyj1kryjsij56";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v3.1.0-darwin-amd64.tar.gz";
+        sha256 = "0j8ysk4wh78xhk3nv6c1dvvyw5ihs7amwlyqicch52yc6jq3v5a6";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v4.0.1-darwin-amd64.tar.gz";
-        sha256 = "1qb2gaiinclmbswyn5aakwjmm3gaggscckb1q2syx69k42hvp3s3";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.27.2-darwin-amd64.tar.gz";
+        sha256 = "0ki3wq879ya82slmz75r6g4hzm4nmmgnwm3pjbhmls09irn46wc3";
       }
     ];
     aarch64-linux = [
       {
-        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.17.0-linux-arm64.tar.gz";
-        sha256 = "1nnbm4djs23plycgsvgmi61779qriypzpv26psvi1153ad2qvg4b";
-      }
-      {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.9.0-linux-arm64.tar.gz";
-        sha256 = "10p015rhp9dsxcwp0a0k3xvkphya8vji4ndv66z73jzr6z3vfqzm";
+        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.17.1-linux-arm64.tar.gz";
+        sha256 = "1gwcrbwwmclxsviqmqb9q1swg4kz2463p42939vlv2r09lwpfvmi";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v4.6.0-linux-arm64.tar.gz";
-        sha256 = "1jdjvx123qwd4mncnzms1ps55041ad5wl8ijr5qfay1yjphy4zn8";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v1.6.0-linux-arm64.tar.gz";
+        sha256 = "0f2frlkcai1489amas1yglpckwwz93acq1xllv88s2j1l6sab5vd";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-postgresql-v3.2.0-linux-arm64.tar.gz";
-        sha256 = "0mddv37k87wiygh6x9bnxpcr721qbmbqf6l5zk3xl61n56j8qyb1";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.4.0-linux-arm64.tar.gz";
+        sha256 = "1hiqcy51ag4y8j47di5h07mnplrhpc5f406ab6car2c06fwr2wdn";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v4.26.0-linux-arm64.tar.gz";
-        sha256 = "1v5b5bwpzmr124xblrrr0rl0zbvky8ljcilyh0fmjgrmai25zbz2";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-postgresql-v3.3.0-linux-arm64.tar.gz";
+        sha256 = "0j2c23ii4dn9yhpw6nymij65gv82y1xp4gi8lgxxf41b1i9bpb2i";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v3.4.0-linux-arm64.tar.gz";
-        sha256 = "0ybw5cbiw64zmaqjwlfk5b73h5sy0pk40f15hq41d9rdkc0sypxi";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v4.3.0-linux-arm64.tar.gz";
+        sha256 = "1hxaz0m33vf92d1vwksmib5lnpl57yrh8nf90nqmmzvjzajkzzbl";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v4.0.0-linux-arm64.tar.gz";
-        sha256 = "0k4yi9xqrmd5m99lr27h672ycwyh138d9jhh3wvgpmnjpdxy28jm";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.3.1-linux-arm64.tar.gz";
+        sha256 = "12iv8vjnal2ym70rxmdnvi02x6md7fxi8jbzhzfw526pzqs1dc47";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v4.2.0-linux-arm64.tar.gz";
-        sha256 = "1sc8rf930cz6nkyhqn6p0h7450iqzdsrlw2smhp8yyjjvcjmsksf";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v2.2.0-linux-arm64.tar.gz";
+        sha256 = "1l7zpvacq6kyzj8n82drs9gdfa16k4j945w8nsd0z33byrswxr3w";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.26.0-linux-arm64.tar.gz";
-        sha256 = "01mmfsfbggvhq8706irg1pv9n89lrxr9dp05m3fa8wdbfdxiwwvd";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-equinix-metal-v3.1.0-linux-arm64.tar.gz";
+        sha256 = "175bqcamkd2illd57gkycsfh5kyjw700g7phjsg057jij3cdfsr8";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.3.1-linux-arm64.tar.gz";
-        sha256 = "12iv8vjnal2ym70rxmdnvi02x6md7fxi8jbzhzfw526pzqs1dc47";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v3.5.0-linux-arm64.tar.gz";
+        sha256 = "1lz5dm1sgnydyi3rjp33y1lvs8wmy9lg0n71niibh1k4ppqbwm2m";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.4.0-linux-arm64.tar.gz";
-        sha256 = "1hiqcy51ag4y8j47di5h07mnplrhpc5f406ab6car2c06fwr2wdn";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v4.0.0-linux-arm64.tar.gz";
+        sha256 = "0k4yi9xqrmd5m99lr27h672ycwyh138d9jhh3wvgpmnjpdxy28jm";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.2.0-linux-arm64.tar.gz";
-        sha256 = "11yslyxhsqchqyd31b10krgxgf2shi5pxncw79zj26w31qcqdv3x";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.1.0-linux-arm64.tar.gz";
+        sha256 = "17iaf72dzy108v1njan21n72a5gzxbycq396hjh293a141kppn1m";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v3.4.0-linux-arm64.tar.gz";
-        sha256 = "1fllv7pnn9jm83b6ck6fk44rk5vmsv4iv1x54nxdfa0wyrkx1ah9";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v4.0.1-linux-arm64.tar.gz";
+        sha256 = "03z7b32l2jp1si13qy2rjvkjw789sqaypza7q2k4vhwaxyiw715z";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v1.5.0-linux-arm64.tar.gz";
-        sha256 = "0ap4izb3507rw965qvww1nd2h9jz7ilav92fjdhhvf33g44r6r8y";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v4.26.0-linux-arm64.tar.gz";
+        sha256 = "1v5b5bwpzmr124xblrrr0rl0zbvky8ljcilyh0fmjgrmai25zbz2";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v4.3.0-linux-arm64.tar.gz";
-        sha256 = "1hxaz0m33vf92d1vwksmib5lnpl57yrh8nf90nqmmzvjzajkzzbl";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.3.0-linux-arm64.tar.gz";
+        sha256 = "14v7wm2gkhd064drw2l894dacdsm5lnndii5qzl5hsl6p9a5m970";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v3.1.0-linux-arm64.tar.gz";
-        sha256 = "1lh1g90ab4blqmvx0yfp516hfsd6n1y751ab7fzhv7hcajf3klvi";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.26.0-linux-arm64.tar.gz";
+        sha256 = "0vjdl01ggnf3hj0ak3dak5828d8cj8x05ny9hsii2cqdphxybsj4";
       }
+      # pulumi-resource-packet skipped (does not exist on remote)
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.8.0-linux-arm64.tar.gz";
         sha256 = "0hq4l91ynjk5qzqcwvzqpd978wikqdx6lxngrawdkk501y0yh6f6";
       }
-      # pulumi-resource-packet skipped (does not exist on remote)
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-equinix-metal-v3.1.0-linux-arm64.tar.gz";
-        sha256 = "175bqcamkd2illd57gkycsfh5kyjw700g7phjsg057jij3cdfsr8";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v4.6.0-linux-arm64.tar.gz";
+        sha256 = "042mdf4l3nb8prialq8isr4iizsq7cjsz001ycshqs21j60kq0dq";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.26.0-linux-arm64.tar.gz";
-        sha256 = "0vjdl01ggnf3hj0ak3dak5828d8cj8x05ny9hsii2cqdphxybsj4";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v4.2.0-linux-arm64.tar.gz";
+        sha256 = "1sc8rf930cz6nkyhqn6p0h7450iqzdsrlw2smhp8yyjjvcjmsksf";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.0.0-linux-arm64.tar.gz";
-        sha256 = "1slrl020xl092hjfr92zjf8i2ys8vzr3nxqh65fhnl0fzfsllvn0";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v3.5.0-linux-arm64.tar.gz";
+        sha256 = "0ybxnskqxry9nbv9y02rqszlykcrihmlpa275s09ypbw3bibrjya";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v2.2.0-linux-arm64.tar.gz";
-        sha256 = "1l7zpvacq6kyzj8n82drs9gdfa16k4j945w8nsd0z33byrswxr3w";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v4.6.0-linux-arm64.tar.gz";
+        sha256 = "1jdjvx123qwd4mncnzms1ps55041ad5wl8ijr5qfay1yjphy4zn8";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v4.5.1-linux-arm64.tar.gz";
-        sha256 = "0kxi3fm2463bq6n0bnf0sbf4zjhg0c86bxw52dlmc8kp2zqc6lr3";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.9.0-linux-arm64.tar.gz";
+        sha256 = "10p015rhp9dsxcwp0a0k3xvkphya8vji4ndv66z73jzr6z3vfqzm";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v4.0.1-linux-arm64.tar.gz";
-        sha256 = "03z7b32l2jp1si13qy2rjvkjw789sqaypza7q2k4vhwaxyiw715z";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v3.1.0-linux-arm64.tar.gz";
+        sha256 = "1lh1g90ab4blqmvx0yfp516hfsd6n1y751ab7fzhv7hcajf3klvi";
       }
-    ];
-    aarch64-darwin = [
       {
-        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.17.0-darwin-arm64.tar.gz";
-        sha256 = "0y5gszzin1p9ck34s6jrg11p34629vvvv4dx0zl4w0j5srmycyjj";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.27.2-linux-arm64.tar.gz";
+        sha256 = "0zgiaksn6x924g8lwcczfg8sm3jm747s4s6gbxv97p4cby4diw6m";
       }
+    ];
+    aarch64-darwin = [
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.9.0-darwin-arm64.tar.gz";
-        sha256 = "07ldq1anzrznan2a1x1igmgljfh6dx12cypggcyma7axiqj95ww1";
+        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.17.1-darwin-arm64.tar.gz";
+        sha256 = "0xl5191acq12ixd4dpcrg5d32dp43qfbj5m2k0q78nsq8p85y772";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v4.6.0-darwin-arm64.tar.gz";
-        sha256 = "0h06wgmjqqvhsl7arx7k7q0mi9i484fj7bxbh4wvkjgxlhnm93ls";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v1.6.0-darwin-arm64.tar.gz";
+        sha256 = "0bjpzd81913p6bgcq4al0prnaa66ag3h9v832cvnksm128n5yqmz";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-postgresql-v3.2.0-darwin-arm64.tar.gz";
-        sha256 = "0fj1ai1kv8xgmsvfbmy5gsinxag70rx9a9gkifqgcpn3r9mj48ks";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.4.0-darwin-arm64.tar.gz";
+        sha256 = "18ggnqx9zh8kl5h6nn2sa4zxvyby9pvscrvqnsam2l9yjv86r7i0";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v4.26.0-darwin-arm64.tar.gz";
-        sha256 = "141mm2wa211gbs1kzqzq9ivjjz1bd93bb6vh9s28rz4z9ciaq44z";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-postgresql-v3.3.0-darwin-arm64.tar.gz";
+        sha256 = "1i5ipmidg0yspayxyglbjaihajhj1bsk46saxkncfrkvqnh4iq50";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v3.4.0-darwin-arm64.tar.gz";
-        sha256 = "1iyc67r551bi1h20lfb2qp5b2ds8kf09gklbaz73k90hcrf0g9la";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v4.3.0-darwin-arm64.tar.gz";
+        sha256 = "09vllijaql7141h0dw3p5ikvv4kp0mzfl5f0n7gd9d4pwl3q3yzv";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v4.0.0-darwin-arm64.tar.gz";
-        sha256 = "0fsmmgq0hvzyrw6vrdf3pppxjcj94fxxp52dl73r4f5wjkays33c";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.3.1-darwin-arm64.tar.gz";
+        sha256 = "0jrihnwfh5wvc95nipqv7ak77kq9xj0pk5hlapv9w2ls5pwykv0r";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v4.2.0-darwin-arm64.tar.gz";
-        sha256 = "1c3pchbnk6dsnxsl02ypq7s4mmkxdgxszdhql1klpx5js7i1lv8k";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v2.2.0-darwin-arm64.tar.gz";
+        sha256 = "1rmvc2kgjmb978sfmlga6xy4i0f629lk1l95i30wg0rmj1hx3dag";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.26.0-darwin-arm64.tar.gz";
-        sha256 = "1nw1w3fj15d2536zy9im8sr4qn84c2cmvcqflf0fmwah8m21w61d";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-equinix-metal-v3.1.0-darwin-arm64.tar.gz";
+        sha256 = "0wzi2mb6jqmzyww2pbdx7cysi0xn4hp74g5n0jyz3mw68s5fm7vf";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.3.1-darwin-arm64.tar.gz";
-        sha256 = "0jrihnwfh5wvc95nipqv7ak77kq9xj0pk5hlapv9w2ls5pwykv0r";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v3.5.0-darwin-arm64.tar.gz";
+        sha256 = "1y77wjr7mpkf3vvqvp37bcdaci31bsjngg0kcsdwsqn93xs59vww";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.4.0-darwin-arm64.tar.gz";
-        sha256 = "18ggnqx9zh8kl5h6nn2sa4zxvyby9pvscrvqnsam2l9yjv86r7i0";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v4.0.0-darwin-arm64.tar.gz";
+        sha256 = "0fsmmgq0hvzyrw6vrdf3pppxjcj94fxxp52dl73r4f5wjkays33c";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.2.0-darwin-arm64.tar.gz";
-        sha256 = "1nsqxci7dzg433ydk34fkiq7clq00m45rj26rs4whx65y8hdhxrb";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.1.0-darwin-arm64.tar.gz";
+        sha256 = "0kym9f36h8b7s1smlmgazbzv8jjfpwxk6wv036bhx2xm3ysc7rgp";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v3.4.0-darwin-arm64.tar.gz";
-        sha256 = "0ycqnlixxczqxa56mij8z35s50hg5k4ygw13mqqw66rpg7jvsvgk";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v4.0.1-darwin-arm64.tar.gz";
+        sha256 = "0ci3xnxnwrk6dds21yifis1mrz24z2nxqdbya0qpqprkq6syvx41";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v1.5.0-darwin-arm64.tar.gz";
-        sha256 = "1y0wc1279ka05ng7wq6skmwyrmp1sb2sc64wiqx52napxvzjpv9r";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v4.26.0-darwin-arm64.tar.gz";
+        sha256 = "141mm2wa211gbs1kzqzq9ivjjz1bd93bb6vh9s28rz4z9ciaq44z";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v4.3.0-darwin-arm64.tar.gz";
-        sha256 = "09vllijaql7141h0dw3p5ikvv4kp0mzfl5f0n7gd9d4pwl3q3yzv";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.3.0-darwin-arm64.tar.gz";
+        sha256 = "0n60fk2nyb1idf4rdc61jxjpzpw4v9106gwn6r1by10g8f1712yr";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v3.1.0-darwin-arm64.tar.gz";
-        sha256 = "1z0gd0fagv55dl3ki340h0ljw7dqj8818w4072pc5xxy5id90gb0";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.26.0-darwin-arm64.tar.gz";
+        sha256 = "1lm26pinz7bjzv7bk22xq2qhyv5a4v7x7kwbl98sdv0gl1alj44f";
       }
+      # pulumi-resource-packet skipped (does not exist on remote)
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.8.0-darwin-arm64.tar.gz";
         sha256 = "1w78lqdf4ynfhl5h0bzxmvqnf4s59mflbdlbqhxq78qxwwq4v193";
       }
-      # pulumi-resource-packet skipped (does not exist on remote)
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-equinix-metal-v3.1.0-darwin-arm64.tar.gz";
-        sha256 = "0wzi2mb6jqmzyww2pbdx7cysi0xn4hp74g5n0jyz3mw68s5fm7vf";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v4.6.0-darwin-arm64.tar.gz";
+        sha256 = "0vh64l3pxg76gxxjg9gsy2jd9zjg6yjr1vx343y7f2g9p0pbir29";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.26.0-darwin-arm64.tar.gz";
-        sha256 = "1lm26pinz7bjzv7bk22xq2qhyv5a4v7x7kwbl98sdv0gl1alj44f";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v4.2.0-darwin-arm64.tar.gz";
+        sha256 = "1c3pchbnk6dsnxsl02ypq7s4mmkxdgxszdhql1klpx5js7i1lv8k";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.0.0-darwin-arm64.tar.gz";
-        sha256 = "10a2f5kdgk3jcd1441zbfcfnrl5zj6ks832jjmbyym33by7scvgc";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v3.5.0-darwin-arm64.tar.gz";
+        sha256 = "0wkppnwmij7sy8iwdg9q9aknwckh90ybxpdqpr5brz9ay1svqjix";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v2.2.0-darwin-arm64.tar.gz";
-        sha256 = "1rmvc2kgjmb978sfmlga6xy4i0f629lk1l95i30wg0rmj1hx3dag";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v4.6.0-darwin-arm64.tar.gz";
+        sha256 = "0h06wgmjqqvhsl7arx7k7q0mi9i484fj7bxbh4wvkjgxlhnm93ls";
+      }
+      {
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.9.0-darwin-arm64.tar.gz";
+        sha256 = "07ldq1anzrznan2a1x1igmgljfh6dx12cypggcyma7axiqj95ww1";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v4.5.1-darwin-arm64.tar.gz";
-        sha256 = "0h9lj565slf1gvzkk8vlk285jgssi62kmayim8473fgbgp3yj6jr";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v3.1.0-darwin-arm64.tar.gz";
+        sha256 = "1z0gd0fagv55dl3ki340h0ljw7dqj8818w4072pc5xxy5id90gb0";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v4.0.1-darwin-arm64.tar.gz";
-        sha256 = "0ci3xnxnwrk6dds21yifis1mrz24z2nxqdbya0qpqprkq6syvx41";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.27.2-darwin-arm64.tar.gz";
+        sha256 = "0l8x9b3np0cwk606621vx2c3k7a67hr7022jfdmaa5ajm44fn4ai";
       }
     ];
   };
diff --git a/pkgs/tools/admin/pulumi/update.sh b/pkgs/tools/admin/pulumi/update.sh
index 5b6b56cc772b..dcd4fd1256dc 100755
--- a/pkgs/tools/admin/pulumi/update.sh
+++ b/pkgs/tools/admin/pulumi/update.sh
@@ -6,7 +6,7 @@ API_URL="https://api.github.com/repos/pulumi"
 
 # Version of Pulumi from
 # https://www.pulumi.com/docs/get-started/install/versions/
-VERSION="3.17.0"
+VERSION="3.17.1"
 
 # A hashmap containing a plugin's name and it's respective repository inside
 # Pulumi's Github organization
diff --git a/pkgs/tools/filesystems/nilfs-utils/default.nix b/pkgs/tools/filesystems/nilfs-utils/default.nix
index 0639c6a6f21b..ec227c95573f 100644
--- a/pkgs/tools/filesystems/nilfs-utils/default.nix
+++ b/pkgs/tools/filesystems/nilfs-utils/default.nix
@@ -1,46 +1,23 @@
-{ lib, stdenv, fetchurl, fetchpatch, libuuid, libselinux }:
-let
-  sourceInfo = rec {
-    version = "2.2.7";
-    url = "http://nilfs.sourceforge.net/download/nilfs-utils-${version}.tar.bz2";
-    sha256 = "01f09bvjk2crx65pxmxiw362wkkl3v2v144dfn3i7bk5gz253xic";
-    baseName = "nilfs-utils";
-    name = "${baseName}-${version}";
-  };
-in
-stdenv.mkDerivation {
-  src = fetchurl {
-    url = sourceInfo.url;
-    sha256 = sourceInfo.sha256;
-  };
+{ lib, stdenv, fetchFromGitHub, fetchpatch, autoreconfHook, libuuid, libselinux }:
 
-  inherit (sourceInfo) name version;
-  buildInputs = [libuuid libselinux];
+stdenv.mkDerivation rec {
+  pname = "nilfs-utils";
+  version = "2.2.8";
 
-  preConfigure = ''
-    sed -e '/sysconfdir=\/etc/d; ' -i configure
-    sed -e "s@sbindir=/sbin@sbindir=$out/sbin@" -i configure
-    sed -e 's@/sbin/@'"$out"'/sbin/@' -i ./lib/cleaner*.c
-  '';
+  src = fetchFromGitHub {
+    owner = "nilfs-dev";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "094mw7dsyppyiyzfdnf3f5hlkrh4bidk1kvvpn1kcvw5vn2xpfk7";
+  };
 
-  patches = [
-    # Fix w/musl
-    (fetchpatch {
-      url = "https://github.com/nilfs-dev/nilfs-utils/commit/115fe4b976858c487cf83065f513d8626089579a.patch";
-      sha256 = "0h89jz9l5d4rqj647ljbnv451l4ncqpsvzj0v70mn5391hfwsjlv";
-    })
-    (fetchpatch {
-      url =  "https://github.com/nilfs-dev/nilfs-utils/commit/51b32c614be9e98c32de7f531ee600ca0740946f.patch";
-      sha256 = "1ycq83c6jjy74aif47v075k5y2szzwhq6mbcrpd1z4b4i1x6yhpn";
-    })
-  ];
+  nativeBuildInputs = [ autoreconfHook ];
+
+  buildInputs = [ libuuid libselinux ];
 
-  configureFlags = [
-    "--with-libmount"
-  ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
-    # AC_FUNC_MALLOC is broken on cross builds.
-    "ac_cv_func_malloc_0_nonnull=yes"
-    "ac_cv_func_realloc_0_nonnull=yes"
+  installFlags = [
+    "sysconfdir=${placeholder "out"}/etc"
+    "root_sbindir=${placeholder "out"}/sbin"
   ];
 
   # FIXME: https://github.com/NixOS/patchelf/pull/98 is in, but stdenv
@@ -49,7 +26,7 @@ stdenv.mkDerivation {
   # To make sure patchelf doesn't mistakenly keep the reference via
   # build directory
   postInstall = ''
-    find . -name .libs | xargs rm -rf
+    find . -name .libs -exec rm -rf -- {} +
   '';
 
   meta = with lib; {
diff --git a/pkgs/tools/graphics/pngquant/default.nix b/pkgs/tools/graphics/pngquant/default.nix
index b2b0691718a9..bb0ef8581250 100644
--- a/pkgs/tools/graphics/pngquant/default.nix
+++ b/pkgs/tools/graphics/pngquant/default.nix
@@ -14,6 +14,8 @@ stdenv.mkDerivation rec {
 
   preConfigure = "patchShebangs .";
 
+  configureFlags = lib.optionals (!stdenv.isi686 && !stdenv.isx86_64) [ "--disable-sse" ];
+
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ libpng zlib lcms2 ];
 
diff --git a/pkgs/tools/misc/ethtool/default.nix b/pkgs/tools/misc/ethtool/default.nix
index e4ca354e4a3f..65797f65fe6d 100644
--- a/pkgs/tools/misc/ethtool/default.nix
+++ b/pkgs/tools/misc/ethtool/default.nix
@@ -7,11 +7,11 @@
 
 stdenv.mkDerivation rec {
   pname = "ethtool";
-  version = "5.14";
+  version = "5.15";
 
   src = fetchurl {
     url = "mirror://kernel/software/network/${pname}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-uxPbkZFcrNekkrZbZd8Hpn5Ll03b6vdiBbGUWiPSdoY=";
+    sha256 = "sha256-aG/WEQOJ1JwqEg8Aw81d/kPeutqOAh5CcNdLvkUqEW0=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/misc/gaphor/default.nix b/pkgs/tools/misc/gaphor/default.nix
new file mode 100644
index 000000000000..6105b07c3450
--- /dev/null
+++ b/pkgs/tools/misc/gaphor/default.nix
@@ -0,0 +1,66 @@
+{ lib
+, buildPythonApplication
+, fetchPypi
+, poetry-core
+, gobject-introspection
+, pango
+, gtksourceview4
+, wrapGAppsHook
+, makeDesktopItem
+, copyDesktopItems
+, gaphas
+, generic
+, pycairo
+, pygobject3
+, python
+, tinycss2
+}:
+
+buildPythonApplication rec {
+  pname = "gaphor";
+  version = "2.6.5";
+
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-IFsbWx5lblKsnEibVihM6ZPRoydXC+JM1gdZEUUTKxw=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core copyDesktopItems gobject-introspection wrapGAppsHook
+  ];
+
+  # Setting gobject-introspection on booth nativeBuildInputs and
+  # buildInputs because of #56943. This recognizes pango, avoiding
+  # a "ValueError: Namespace PangoCairo not available".
+  buildInputs = [ gobject-introspection gtksourceview4 pango ];
+
+  propagatedBuildInputs = [
+    gaphas
+    generic
+    pycairo
+    pygobject3
+    tinycss2
+  ];
+
+  desktopItems = makeDesktopItem {
+    name = pname;
+    exec = "gaphor";
+    icon = "gaphor";
+    comment = meta.description;
+    desktopName = "Gaphor";
+  };
+
+  postInstall = ''
+    install -Dm644 $out/${python.sitePackages}/gaphor/ui/icons/hicolor/scalable/apps/org.gaphor.Gaphor.svg $out/share/pixmaps/gaphor.svg
+  '';
+
+  meta = with lib; {
+    description = "Simple modeling tool written in Python";
+    maintainers = with maintainers; [ wolfangaukang ];
+    homepage = "https://github.com/gaphor/gaphor";
+    license = licenses.asl20;
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/tools/misc/oggvideotools/default.nix b/pkgs/tools/misc/oggvideotools/default.nix
index 2780354aa0e6..e6b8d9a1d288 100644
--- a/pkgs/tools/misc/oggvideotools/default.nix
+++ b/pkgs/tools/misc/oggvideotools/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, cmake, pkg-config, boost, gd, libogg, libtheora, libvorbis }:
+{ lib, stdenv, fetchurl, fetchpatch, cmake, pkg-config, boost, gd, libogg, libtheora, libvorbis }:
 
 stdenv.mkDerivation rec {
   pname = "oggvideotools";
@@ -10,9 +10,30 @@ stdenv.mkDerivation rec {
   };
 
   patches = [
-    ./fix-compile.patch
+    # Fix pending upstream inclusion for missing includes:
+    #  https://sourceforge.net/p/oggvideotools/bugs/12/
+    (fetchpatch {
+      name = "gcc-10.patch";
+      url = "https://sourceforge.net/p/oggvideotools/bugs/12/attachment/fix-compile.patch";
+      sha256 = "sha256-mJttoC3jCLM3vmPhlyqh+W0ryp2RjJGIBXd6sJfLJA4=";
+    })
+
+    # Fix pending upstream inclusion for build failure on gcc-12:
+    #  https://sourceforge.net/p/oggvideotools/bugs/13/
+    (fetchpatch {
+      name = "gcc-12.patch";
+      url = "https://sourceforge.net/p/oggvideotools/bugs/13/attachment/fix-gcc-12.patch";
+      sha256 = "sha256-zuDXe86djWkR8SgYZHkuAJJ7Lf2VYsVRBrlEaODtMKE=";
+      # svn patch, rely on prefix added by fetchpatch:
+      extraPrefix = "";
+    })
   ];
 
+  postPatch = ''
+    # Don't disable optimisations
+    substituteInPlace CMakeLists.txt --replace " -O0 " ""
+  '';
+
   nativeBuildInputs = [ cmake pkg-config ];
 
   buildInputs = [ boost gd libogg libtheora libvorbis ];
diff --git a/pkgs/tools/misc/oggvideotools/fix-compile.patch b/pkgs/tools/misc/oggvideotools/fix-compile.patch
deleted file mode 100644
index 65c3dd6a2351..000000000000
--- a/pkgs/tools/misc/oggvideotools/fix-compile.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- oggvideotools-0.9.1/src/base/test/decoderTest.cpp	2016-09-05 10:35:14.000000000 +0200
-+++ oggvideotools-0.9.1/src/base/test/decoderTest.cpp	2021-10-22 22:42:48.980473419 +0200
-@@ -5,6 +5,7 @@
- #include "oggDecoder.h"
- #include <vector>
- #include <iostream>
-+#include <cstring>
- 
- int main(int argc, char* argv[])
- {
diff --git a/pkgs/tools/misc/sfeed/default.nix b/pkgs/tools/misc/sfeed/default.nix
index 6e7a6914e574..5c39cc803b53 100644
--- a/pkgs/tools/misc/sfeed/default.nix
+++ b/pkgs/tools/misc/sfeed/default.nix
@@ -10,10 +10,9 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-pLKWq4KIiT6X37EUIOw5SBb1KWopnFcDO+iE++Uie5s=";
   };
 
-  installPhase = ''
-    mkdir $out
-    make install PREFIX=$out
-  '';
+  makeFlags = [ "RANLIB:=$(RANLIB)" ];
+
+  installFlags = [ "PREFIX=$(out)" ];
 
   meta = with lib; {
     homepage = "https://codemadness.org/sfeed-simple-feed-parser.html";
diff --git a/pkgs/tools/misc/uwuify/default.nix b/pkgs/tools/misc/uwuify/default.nix
index b276abf3e5ce..2722610d0e3f 100644
--- a/pkgs/tools/misc/uwuify/default.nix
+++ b/pkgs/tools/misc/uwuify/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
     description = "Fast text uwuifier";
     homepage = "https://github.com/Daniel-Liu-c0deb0t/uwu";
     license = licenses.mit;
+    platforms = lib.platforms.x86; # uses SSE instructions
     maintainers = with maintainers; [ siraben ];
   };
 }
diff --git a/pkgs/tools/networking/amass/default.nix b/pkgs/tools/networking/amass/default.nix
index 7b67dcf62238..63ecdb550a84 100644
--- a/pkgs/tools/networking/amass/default.nix
+++ b/pkgs/tools/networking/amass/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "amass";
-  version = "3.14.3";
+  version = "3.15.0";
 
   src = fetchFromGitHub {
     owner = "OWASP";
     repo = "Amass";
     rev = "v${version}";
-    sha256 = "sha256-bDDd0QvXvXngHx4GJFeWhv1yQmPj2IFDSuOB7pJDl3I=";
+    sha256 = "sha256-AOWVz+JQvri7H2k2vDSuDmTHPAVCb7MCi4uCJcj0Yjs=";
   };
 
   vendorSha256 = "sha256-lM/UWrljJHks+by4kUjlk0f39j/Qo+5+kxUVgrsO0zE=";
diff --git a/pkgs/tools/networking/spoof-mac/default.nix b/pkgs/tools/networking/spoof-mac/default.nix
index fdd282fa8b5f..3b7bbd0d52a2 100644
--- a/pkgs/tools/networking/spoof-mac/default.nix
+++ b/pkgs/tools/networking/spoof-mac/default.nix
@@ -16,6 +16,8 @@ buildPythonPackage rec {
   # No tests
   doCheck = false;
 
+  pythonImportsCheck = [ "spoofmac" ];
+
   meta = with lib; {
     description = "Change your MAC address for debugging purposes";
     homepage = "https://github.com/feross/SpoofMAC";
diff --git a/pkgs/tools/security/exploitdb/default.nix b/pkgs/tools/security/exploitdb/default.nix
index a551b3b54329..06c6d0bac26c 100644
--- a/pkgs/tools/security/exploitdb/default.nix
+++ b/pkgs/tools/security/exploitdb/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "exploitdb";
-  version = "2021-11-11";
+  version = "2021-11-13";
 
   src = fetchFromGitHub {
     owner = "offensive-security";
     repo = pname;
     rev = version;
-    sha256 = "sha256-ImYbGaKnUizIJjYdiiX2X7O6uxo+ZHskcv9DcL51wY8=";
+    sha256 = "sha256-0/ZKki+QJpBL+K3zQ0H5d5cfan+pKEYHwr6y4U+FKzM=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/tools/security/ioccheck/default.nix b/pkgs/tools/security/ioccheck/default.nix
index 455819ed1cf7..e936ab025fad 100644
--- a/pkgs/tools/security/ioccheck/default.nix
+++ b/pkgs/tools/security/ioccheck/default.nix
@@ -3,7 +3,29 @@
 , python3
 }:
 
-python3.pkgs.buildPythonApplication rec {
+let
+  py = python3.override {
+    packageOverrides = self: super: {
+
+      # Support for later tweepy releases is missing
+      # https://github.com/ranguli/ioccheck/issues/70
+      tweepy = super.tweepy.overridePythonAttrs (oldAttrs: rec {
+        version = "3.10.0";
+
+        src = fetchFromGitHub {
+          owner = "tweepy";
+          repo = "tweepy";
+          rev = "v${version}";
+          sha256 = "0k4bdlwjna6f1k19jki4xqgckrinkkw8b9wihzymr1l04rwd05nw";
+        };
+        doCheck = false;
+      });
+    };
+  };
+in
+with py.pkgs;
+
+buildPythonApplication rec {
   pname = "ioccheck";
   version = "unstable-2021-09-29";
   format = "pyproject";
@@ -15,11 +37,11 @@ python3.pkgs.buildPythonApplication rec {
     sha256 = "0lgqypcd5lzb2yqd5lr02pba24m26ghly4immxgz13svi8f6vzm9";
   };
 
-  nativeBuildInputs = with python3.pkgs; [
+  nativeBuildInputs = with py.pkgs; [
     poetry-core
   ];
 
-  propagatedBuildInputs = with python3.pkgs; [
+  propagatedBuildInputs = with py.pkgs; [
     backoff
     click
     emoji
@@ -34,7 +56,7 @@ python3.pkgs.buildPythonApplication rec {
     vt-py
   ];
 
-  checkInputs = with python3.pkgs; [
+  checkInputs = with py.pkgs; [
     pytestCheckHook
   ];
 
diff --git a/pkgs/tools/security/keybase/gui.nix b/pkgs/tools/security/keybase/gui.nix
index 7a19a439a8eb..8912961e3520 100644
--- a/pkgs/tools/security/keybase/gui.nix
+++ b/pkgs/tools/security/keybase/gui.nix
@@ -4,17 +4,16 @@
 , runtimeShell, gsettings-desktop-schemas }:
 
 let
-  versionSuffix = "20210623205749.763227b4c6";
+  versionSuffix = "20210930160723.fefa22edc1";
 in
 
 stdenv.mkDerivation rec {
   pname = "keybase-gui";
-  version = "5.7.1"; # Find latest version from https://prerelease.keybase.io/deb/dists/stable/main/binary-amd64/Packages
+  version = "5.8.1"; # Find latest version from https://prerelease.keybase.io/deb/dists/stable/main/binary-amd64/Packages
 
   src = fetchurl {
-
     url = "https://s3.amazonaws.com/prerelease.keybase.io/linux_binaries/deb/keybase_${version + "-" + versionSuffix}_amd64.deb";
-    sha256 = "0ajpkidbzfwhi7q018wriws0n3amcy9g3mfiqm13cpz0q6vkjx83";
+    sha256 = "cqbGvnJ6wx5boVe78Ju8CimH1H08DfkM5nmwbV0uKG0=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/security/pinentry/default.nix b/pkgs/tools/security/pinentry/default.nix
index 4f6ddae30442..f34acafc9fe9 100644
--- a/pkgs/tools/security/pinentry/default.nix
+++ b/pkgs/tools/security/pinentry/default.nix
@@ -1,7 +1,6 @@
 { fetchurl, mkDerivation, fetchpatch, stdenv, lib, pkg-config, autoreconfHook, wrapGAppsHook
 , libgpg-error, libassuan, qtbase, wrapQtAppsHook
-, ncurses, gtk2, gcr
-, libcap ? null, libsecret ? null
+, ncurses, gtk2, gcr, libcap, libsecret
 , enabledFlavors ? [ "curses" "tty" "gtk2" "emacs" ]
   ++ lib.optionals stdenv.isLinux [ "gnome3" ]
   ++ lib.optionals (stdenv.hostPlatform.system != "aarch64-darwin") [ "qt" ]
@@ -52,7 +51,8 @@ pinentryMkDerivation rec {
 
   nativeBuildInputs = [ pkg-config autoreconfHook ]
     ++ concatMap(f: flavorInfo.${f}.nativeBuildInputs or []) enabledFlavors;
-  buildInputs = [ libgpg-error libassuan libcap libsecret ]
+  buildInputs = [ libgpg-error libassuan libsecret ]
+    ++ lib.optional (!stdenv.isDarwin) libcap
     ++ concatMap(f: flavorInfo.${f}.buildInputs or []) enabledFlavors;
 
   dontWrapGApps = true;
diff --git a/pkgs/tools/security/swtpm/default.nix b/pkgs/tools/security/swtpm/default.nix
index de67a453fc5f..7f2352c7282c 100644
--- a/pkgs/tools/security/swtpm/default.nix
+++ b/pkgs/tools/security/swtpm/default.nix
@@ -33,6 +33,7 @@ stdenv.mkDerivation rec {
     perl # for pod2man
     autoreconfHook
   ];
+
   buildInputs = [
     libtpms
     openssl libtasn1 libseccomp
@@ -45,7 +46,7 @@ stdenv.mkDerivation rec {
     "--localstatedir=/var"
   ];
 
-  prePatch = ''
+  postPatch = ''
     # Makefile tries to create the directory /var/lib/swtpm-localca, which fails
     substituteInPlace samples/Makefile.am \
         --replace 'install-data-local:' 'do-not-execute:'
diff --git a/pkgs/tools/system/tree/default.nix b/pkgs/tools/system/tree/default.nix
index acf0813b3ac2..5bfe5c9ac755 100644
--- a/pkgs/tools/system/tree/default.nix
+++ b/pkgs/tools/system/tree/default.nix
@@ -4,22 +4,20 @@ let
   # These settings are found in the Makefile, but there seems to be no
   # way to select one ore the other setting other than editing the file
   # manually, so we have to duplicate the know how here.
-  systemFlags = with stdenv;
-    if isDarwin then ''
-      CFLAGS="-O2 -Wall -fomit-frame-pointer"
-      LDFLAGS=
-      EXTRA_OBJS=strverscmp.o
-    '' else if isCygwin then ''
-      CFLAGS="-O2 -Wall -fomit-frame-pointer -DCYGWIN"
-      LDFLAGS=-s
-      TREE_DEST=tree.exe
-      EXTRA_OBJS=strverscmp.o
-    '' else if (isFreeBSD || isOpenBSD) then ''
-      CFLAGS="-O2 -Wall -fomit-frame-pointer"
-      LDFLAGS=-s
-      EXTRA_OBJS=strverscmp.o
-    '' else
-    ""; # use linux flags by default
+  systemFlags = lib.optionalString stdenv.isDarwin ''
+    CFLAGS="-O2 -Wall -fomit-frame-pointer"
+    LDFLAGS=
+    EXTRA_OBJS=strverscmp.o
+  '' + lib.optionalString stdenv.isCygwin ''
+    CFLAGS="-O2 -Wall -fomit-frame-pointer -DCYGWIN"
+    LDFLAGS=-s
+    TREE_DEST=tree.exe
+    EXTRA_OBJS=strverscmp.o
+  '' + lib.optionalString (stdenv.isFreeBSD || stdenv.isOpenBSD) ''
+    CFLAGS="-O2 -Wall -fomit-frame-pointer"
+    LDFLAGS=-s
+    EXTRA_OBJS=strverscmp.o
+  ''; # use linux flags by default
 in
 stdenv.mkDerivation rec {
   pname = "tree";
@@ -30,27 +28,27 @@ stdenv.mkDerivation rec {
     sha256 = "1hmpz6k0mr6salv0nprvm1g0rdjva1kx03bdf1scw8a38d5mspbi";
   };
 
-  configurePhase = ''
+  preConfigure = ''
     sed -i Makefile -e 's|^OBJS=|OBJS=$(EXTRA_OBJS) |'
-    makeFlagsArray=(
-      prefix=$out
-      MANDIR=$out/share/man/man1
-      ${systemFlags}
-      CC="$CC"
-    )
   '';
 
-  meta = {
+  makeFlags = [
+    "prefix=${placeholder "out"}"
+    "MANDIR=${placeholder "out"}/share/man/man1"
+    "CC=$CC"
+    systemFlags
+  ];
+
+  meta = with lib; {
     homepage = "http://mama.indstate.edu/users/ice/tree/";
     description = "Command to produce a depth indented directory listing";
-    license = lib.licenses.gpl2;
-
+    license = licenses.gpl2;
     longDescription = ''
       Tree is a recursive directory listing command that produces a
       depth indented listing of files, which is colorized ala dircolors if
       the LS_COLORS environment variable is set and output is to tty.
     '';
-
-    platforms = lib.platforms.all;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f700f2a1807f..cd5c87820044 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -2762,6 +2762,8 @@ with pkgs;
     gtk = gtk3;
   };
 
+  dstp = callPackage ../development/tools/dstp { };
+
   dsvpn = callPackage ../applications/networking/dsvpn { };
 
   dtools = callPackage ../development/tools/dtools { };
@@ -5392,6 +5394,8 @@ with pkgs;
 
   gandom-fonts = callPackage ../data/fonts/gandom-fonts { };
 
+  gaphor = python3Packages.callPackage ../tools/misc/gaphor { };
+
   garmin-plugin = callPackage ../applications/misc/garmin-plugin {};
 
   garmintools = callPackage ../development/libraries/garmintools {};
@@ -6428,6 +6432,8 @@ with pkgs;
 
   intermodal = callPackage ../tools/misc/intermodal { };
 
+  internetarchive = with python3Packages; toPythonApplication internetarchive;
+
   invidious = callPackage ../servers/invidious {
     # needs a specific version of lsquic
     lsquic = callPackage ../servers/invidious/lsquic.nix { };
@@ -6995,6 +7001,8 @@ with pkgs;
 
   ministat = callPackage ../tools/misc/ministat { };
 
+  mjolnir = callPackage ../servers/mjolnir { };
+
   mmv = callPackage ../tools/misc/mmv { };
 
   mmv-go = callPackage ../tools/misc/mmv-go { };
@@ -8509,9 +8517,7 @@ with pkgs;
 
   phosh = callPackage ../applications/window-managers/phosh { };
 
-  pinentry = libsForQt5.callPackage ../tools/security/pinentry {
-    libcap = if stdenv.isDarwin then null else libcap;
-  };
+  pinentry = libsForQt5.callPackage ../tools/security/pinentry { };
 
   pinentry-curses = (lib.getOutput "curses" pinentry);
   pinentry-emacs = (lib.getOutput "emacs" pinentry);
@@ -15885,6 +15891,8 @@ with pkgs;
 
   cryptominisat = callPackage ../applications/science/logic/cryptominisat { };
 
+  csdr = callPackage ../applications/radio/csdr { };
+
   ctypes_sh = callPackage ../development/libraries/ctypes_sh { };
 
   curlcpp = callPackage ../development/libraries/curlcpp { };
@@ -18909,6 +18917,11 @@ with pkgs;
 
   openrct2 = callPackage ../games/openrct2 { };
 
+  openwebrx = callPackage ../applications/radio/openwebrx {
+    inherit (python3Packages)
+    buildPythonPackage buildPythonApplication setuptools;
+  };
+
   optparse-bash = callPackage ../development/libraries/optparse-bash { };
 
   orcania = callPackage ../development/libraries/orcania { };
@@ -25648,6 +25661,8 @@ with pkgs;
 
   leftwm = callPackage ../applications/window-managers/leftwm { };
 
+  levant = callPackage ../applications/networking/cluster/levant { };
+
   lwm = callPackage ../applications/window-managers/lwm { };
 
   marker = callPackage ../applications/editors/marker { };
@@ -27286,6 +27301,10 @@ with pkgs;
 
   pantalaimon = python3Packages.callPackage ../applications/networking/instant-messengers/pantalaimon { };
 
+  pantalaimon-headless = python3Packages.callPackage ../applications/networking/instant-messengers/pantalaimon {
+    enableDbusUi = false;
+  };
+
   pavucontrol = callPackage ../applications/audio/pavucontrol { };
 
   paraview = libsForQt5.callPackage ../applications/graphics/paraview { };
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 8615aaae6f30..38a6c5653780 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -2968,6 +2968,8 @@ in {
     pythonPackages = self;
   });
 
+  gaphas = callPackage ../development/python-modules/gaphas { };
+
   garminconnect-aio = callPackage ../development/python-modules/garminconnect-aio { };
 
   garminconnect-ha = callPackage ../development/python-modules/garminconnect-ha { };
@@ -3006,6 +3008,8 @@ in {
 
   genanki = callPackage ../development/python-modules/genanki { };
 
+  generic = callPackage ../development/python-modules/generic { };
+
   genome-collector = callPackage ../development/python-modules/genome-collector { };
 
   genpy = callPackage ../development/python-modules/genpy { };
diff --git a/pkgs/top-level/python2-packages.nix b/pkgs/top-level/python2-packages.nix
index 3558cf2a2215..56b39b5087ae 100644
--- a/pkgs/top-level/python2-packages.nix
+++ b/pkgs/top-level/python2-packages.nix
@@ -415,6 +415,11 @@ with self; with super; {
 
   prompt-toolkit = callPackage ../development/python-modules/prompt-toolkit/1.nix { };
 
+  protobuf = callPackage ../development/python-modules/protobuf {
+    disabled = isPyPy;
+    protobuf = pkgs.protobuf3_17; # last version compatible with Python 2
+  };
+
   pyamf = callPackage ../development/python-modules/pyamf { };
 
   pyblosxom = callPackage ../development/python-modules/pyblosxom { };