about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/editorconfig.yml2
-rw-r--r--doc/contributing/coding-conventions.xml9
-rw-r--r--doc/languages-frameworks/coq.section.md89
-rw-r--r--flake.nix5
-rw-r--r--maintainers/maintainer-list.nix28
-rw-r--r--maintainers/team-list.nix8
-rw-r--r--nixos/default.nix5
-rw-r--r--nixos/doc/manual/release-notes/rl-2009.xml8
-rw-r--r--nixos/doc/manual/release-notes/rl-2103.xml9
-rw-r--r--nixos/modules/config/system-path.nix1
-rw-r--r--nixos/modules/hardware/opentabletdriver.nix2
-rw-r--r--nixos/modules/module-list.nix2
-rw-r--r--nixos/modules/programs/appgate-sdp.nix23
-rw-r--r--nixos/modules/services/audio/mpd.nix64
-rw-r--r--nixos/modules/services/audio/mpdscribble.nix202
-rw-r--r--nixos/modules/services/databases/redis.nix78
-rw-r--r--nixos/modules/services/desktops/pipewire.nix4
-rw-r--r--nixos/modules/services/misc/nzbhydra2.nix78
-rw-r--r--nixos/modules/services/ttys/getty.nix31
-rw-r--r--nixos/modules/services/web-apps/nextcloud.xml6
-rw-r--r--nixos/modules/services/web-servers/nginx/default.nix21
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome3.nix6
-rw-r--r--nixos/modules/system/boot/tmp.nix8
-rw-r--r--nixos/modules/virtualisation/lxd.nix4
-rw-r--r--nixos/modules/virtualisation/podman.nix58
-rw-r--r--nixos/tests/all-tests.nix2
-rw-r--r--nixos/tests/nzbhydra2.nix17
-rw-r--r--nixos/tests/opentabletdriver.nix27
-rw-r--r--pkgs/applications/audio/ecasound/default.nix37
-rw-r--r--pkgs/applications/audio/strawberry/default.nix4
-rw-r--r--pkgs/applications/audio/sublime-music/default.nix5
-rw-r--r--pkgs/applications/audio/sunvox/default.nix4
-rw-r--r--pkgs/applications/audio/zynaddsubfx/default.nix117
-rw-r--r--pkgs/applications/audio/zynaddsubfx/mruby-zest/default.nix109
-rw-r--r--pkgs/applications/audio/zynaddsubfx/mruby-zest/force-gcc-as-linker.patch13
-rw-r--r--pkgs/applications/audio/zynaddsubfx/mruby-zest/system-libuv.patch113
-rw-r--r--pkgs/applications/blockchains/lndconnect/default.nix25
-rw-r--r--pkgs/applications/blockchains/lndconnect/deps.nix129
-rw-r--r--pkgs/applications/editors/emacs-modes/melpa-packages.nix5
-rw-r--r--pkgs/applications/editors/ghostwriter/default.nix9
-rw-r--r--pkgs/applications/graphics/hello-wayland/default.nix33
-rw-r--r--pkgs/applications/graphics/imv/default.nix99
-rw-r--r--pkgs/applications/graphics/monado/default.nix37
-rw-r--r--pkgs/applications/graphics/mtpaint/default.nix20
-rw-r--r--pkgs/applications/graphics/nufraw/default.nix71
-rw-r--r--pkgs/applications/graphics/nufraw/nufraw.thumbnailer4
-rw-r--r--pkgs/applications/graphics/xrgears/default.nix48
-rw-r--r--pkgs/applications/misc/blender/default.nix20
-rw-r--r--pkgs/applications/misc/dasel/default.nix4
-rw-r--r--pkgs/applications/misc/gpsbabel/default.nix6
-rw-r--r--pkgs/applications/misc/hugo/default.nix6
-rw-r--r--pkgs/applications/misc/jekyll/full/Gemfile1
-rw-r--r--pkgs/applications/misc/jekyll/full/Gemfile.lock3
-rw-r--r--pkgs/applications/misc/jekyll/full/gemset.nix13
-rw-r--r--pkgs/applications/misc/obsidian/default.nix4
-rw-r--r--pkgs/applications/misc/osmium-tool/default.nix8
-rw-r--r--pkgs/applications/misc/rootbar/default.nix45
-rw-r--r--pkgs/applications/misc/taskwarrior-tui/default.nix28
-rw-r--r--pkgs/applications/misc/zola/default.nix6
-rw-r--r--pkgs/applications/networking/appgate-sdp/default.nix169
-rw-r--r--pkgs/applications/networking/browsers/chromium/upstream-info.json26
-rw-r--r--pkgs/applications/networking/cluster/octant/plugins/starboard-octant-plugin.nix6
-rw-r--r--pkgs/applications/networking/cluster/sonobuoy/default.nix8
-rw-r--r--pkgs/applications/networking/cluster/starboard/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/terragrunt/default.nix6
-rw-r--r--pkgs/applications/networking/ipfs-cluster/default.nix13
-rw-r--r--pkgs/applications/networking/ipfs-cluster/test.patch12
-rw-r--r--pkgs/applications/networking/lieer/default.nix5
-rw-r--r--pkgs/applications/networking/p2p/tribler/default.nix53
-rw-r--r--pkgs/applications/networking/syncthing/default.nix6
-rw-r--r--pkgs/applications/science/biology/fastp/default.nix30
-rw-r--r--pkgs/applications/science/chemistry/octopus/default.nix20
-rw-r--r--pkgs/applications/science/electronics/diylc/default.nix71
-rwxr-xr-xpkgs/applications/science/electronics/kicad/update.sh6
-rw-r--r--pkgs/applications/science/electronics/kicad/versions.nix34
-rw-r--r--pkgs/applications/science/logic/coq/default.nix120
-rw-r--r--pkgs/applications/science/logic/lean/default.nix4
-rw-r--r--pkgs/applications/science/math/qalculate-gtk/default.nix4
-rw-r--r--pkgs/applications/terminal-emulators/alacritty/default.nix6
-rw-r--r--pkgs/applications/terminal-emulators/germinal/default.nix55
-rw-r--r--pkgs/applications/terminal-emulators/wezterm/default.nix30
-rw-r--r--pkgs/applications/version-management/dvc/default.nix2
-rw-r--r--pkgs/applications/version-management/git-and-tools/radicle-upstream/default.nix4
-rw-r--r--pkgs/applications/version-management/git-repo/default.nix4
-rw-r--r--pkgs/applications/version-management/pijul/default.nix6
-rw-r--r--pkgs/applications/version-management/sourcehut/builds.nix2
-rw-r--r--pkgs/applications/version-management/sourcehut/dispatch.nix2
-rw-r--r--pkgs/applications/version-management/sourcehut/git.nix2
-rw-r--r--pkgs/applications/version-management/sourcehut/hg.nix2
-rw-r--r--pkgs/applications/version-management/sourcehut/hub.nix2
-rw-r--r--pkgs/applications/version-management/sourcehut/lists.nix2
-rw-r--r--pkgs/applications/version-management/sourcehut/man.nix2
-rw-r--r--pkgs/applications/version-management/sourcehut/meta.nix2
-rw-r--r--pkgs/applications/version-management/sourcehut/paste.nix2
-rw-r--r--pkgs/applications/version-management/sparkleshare/default.nix2
-rw-r--r--pkgs/applications/version-management/tortoisehg/default.nix8
-rw-r--r--pkgs/applications/video/gnomecast/default.nix3
-rw-r--r--pkgs/applications/video/jellyfin-mpv-shim/default.nix4
-rw-r--r--pkgs/applications/video/makemkv/default.nix6
-rw-r--r--pkgs/applications/video/mpc-qt/default.nix1
-rw-r--r--pkgs/applications/video/mpv/default.nix10
-rw-r--r--pkgs/applications/video/openshot-qt/default.nix3
-rw-r--r--pkgs/applications/video/openshot-qt/libopenshot.nix12
-rw-r--r--pkgs/applications/video/plex-mpv-shim/default.nix3
-rw-r--r--pkgs/applications/virtualization/nvidia-docker/default.nix94
-rw-r--r--pkgs/applications/virtualization/nvidia-docker/libnvc-ldconfig-and-path-fixes.patch4
-rw-r--r--pkgs/applications/virtualization/nvidia-docker/libnvc.nix13
-rw-r--r--pkgs/applications/virtualization/nvidia-docker/modprobe.patch29
-rw-r--r--pkgs/applications/virtualization/nvidia-docker/podman-config.toml13
-rw-r--r--pkgs/build-support/coq/default.nix92
-rw-r--r--pkgs/build-support/coq/extra-lib.nix145
-rw-r--r--pkgs/build-support/coq/meta-fetch/default.nix66
-rw-r--r--pkgs/build-support/docker/default.nix1
-rw-r--r--pkgs/build-support/emacs/wrapper.nix4
-rw-r--r--pkgs/build-support/rust/default-crate-overrides.nix65
-rwxr-xr-xpkgs/common-updater/scripts/update-source-version2
-rw-r--r--pkgs/data/fonts/fira-code/default.nix5
-rw-r--r--pkgs/data/misc/hackage/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix2
-rw-r--r--pkgs/desktops/plasma-5/fetch.sh2
-rw-r--r--pkgs/desktops/plasma-5/srcs.nix392
-rw-r--r--pkgs/development/compilers/cakelisp/default.nix42
-rw-r--r--pkgs/development/compilers/computecpp/default.nix4
-rw-r--r--pkgs/development/compilers/glslang/default.nix19
-rw-r--r--pkgs/development/compilers/rust/1_45.nix2
-rw-r--r--pkgs/development/compilers/rust/1_48.nix2
-rw-r--r--pkgs/development/compilers/rust/rls/default.nix4
-rw-r--r--pkgs/development/coq-modules/Cheerios/default.nix35
-rw-r--r--pkgs/development/coq-modules/CoLoR/default.nix66
-rw-r--r--pkgs/development/coq-modules/HoTT/default.nix33
-rw-r--r--pkgs/development/coq-modules/InfSeqExt/default.nix38
-rw-r--r--pkgs/development/coq-modules/QuickChick/default.nix120
-rw-r--r--pkgs/development/coq-modules/StructTact/default.nix38
-rw-r--r--pkgs/development/coq-modules/VST/default.nix27
-rw-r--r--pkgs/development/coq-modules/Velisarios/default.nix49
-rw-r--r--pkgs/development/coq-modules/Verdi/default.nix48
-rw-r--r--pkgs/development/coq-modules/autosubst/default.nix33
-rw-r--r--pkgs/development/coq-modules/bignums/default.nix87
-rw-r--r--pkgs/development/coq-modules/category-theory/default.nix58
-rw-r--r--pkgs/development/coq-modules/contribs/default.nix48
-rw-r--r--pkgs/development/coq-modules/coq-bits/default.nix34
-rw-r--r--pkgs/development/coq-modules/coq-elpi/default.nix60
-rw-r--r--pkgs/development/coq-modules/coq-ext-lib/default.nix84
-rw-r--r--pkgs/development/coq-modules/coq-haskell/default.nix61
-rw-r--r--pkgs/development/coq-modules/coqeal/default.nix24
-rw-r--r--pkgs/development/coq-modules/coqhammer/default.nix81
-rw-r--r--pkgs/development/coq-modules/coqprime/default.nix77
-rw-r--r--pkgs/development/coq-modules/coquelicot/default.nix54
-rw-r--r--pkgs/development/coq-modules/corn/default.nix31
-rw-r--r--pkgs/development/coq-modules/dpdgraph/default.nix110
-rw-r--r--pkgs/development/coq-modules/equations/default.nix113
-rw-r--r--pkgs/development/coq-modules/fiat/HEAD.nix31
-rw-r--r--pkgs/development/coq-modules/flocq/default.nix65
-rw-r--r--pkgs/development/coq-modules/gappalib/default.nix38
-rw-r--r--pkgs/development/coq-modules/heq/default.nix35
-rw-r--r--pkgs/development/coq-modules/hierarchy-builder/default.nix49
-rw-r--r--pkgs/development/coq-modules/interval/default.nix79
-rw-r--r--pkgs/development/coq-modules/iris/default.nix36
-rw-r--r--pkgs/development/coq-modules/ltac2/default.nix69
-rw-r--r--pkgs/development/coq-modules/math-classes/default.nix29
-rw-r--r--pkgs/development/coq-modules/mathcomp-analysis/default.nix27
-rw-r--r--pkgs/development/coq-modules/mathcomp-bigenough/default.nix19
-rw-r--r--pkgs/development/coq-modules/mathcomp-finmap/default.nix36
-rw-r--r--pkgs/development/coq-modules/mathcomp-real-closed/default.nix33
-rw-r--r--pkgs/development/coq-modules/mathcomp/default.nix310
-rw-r--r--pkgs/development/coq-modules/mathcomp/extra.nix391
-rw-r--r--pkgs/development/coq-modules/metalib/default.nix33
-rw-r--r--pkgs/development/coq-modules/multinomials/default.nix34
-rw-r--r--pkgs/development/coq-modules/paco/default.nix60
-rw-r--r--pkgs/development/coq-modules/paramcoq/default.nix70
-rw-r--r--pkgs/development/coq-modules/simple-io/default.nix37
-rw-r--r--pkgs/development/coq-modules/stdpp/default.nix37
-rw-r--r--pkgs/development/coq-modules/tlc/default.nix46
-rw-r--r--pkgs/development/haskell-modules/configuration-common.nix66
-rw-r--r--pkgs/development/haskell-modules/configuration-hackage2nix.yaml196
-rw-r--r--pkgs/development/haskell-modules/configuration-nix.nix13
-rw-r--r--pkgs/development/haskell-modules/hackage-packages.nix2026
-rw-r--r--pkgs/development/haskell-modules/non-hackage-packages.nix2
-rw-r--r--pkgs/development/interpreters/php/7.3.nix4
-rw-r--r--pkgs/development/interpreters/php/7.4.nix4
-rw-r--r--pkgs/development/interpreters/php/8.0.nix4
-rw-r--r--pkgs/development/interpreters/php/fix-opcache-configure.patch81
-rw-r--r--pkgs/development/libraries/doctest/default.nix4
-rw-r--r--pkgs/development/libraries/flatbuffers/default.nix13
-rw-r--r--pkgs/development/libraries/gpgme/default.nix4
-rw-r--r--pkgs/development/libraries/gpgme/fix-clang-autoconf-undeclared-warning.patch36
-rw-r--r--pkgs/development/libraries/intel-media-driver/default.nix11
-rw-r--r--pkgs/development/libraries/libbladeRF/default.nix11
-rw-r--r--pkgs/development/libraries/libfprint/default.nix2
-rw-r--r--pkgs/development/libraries/libguestfs/default.nix4
-rw-r--r--pkgs/development/libraries/libosmium/default.nix6
-rw-r--r--pkgs/development/libraries/libplacebo/default.nix16
-rw-r--r--pkgs/development/libraries/libqalculate/default.nix5
-rw-r--r--pkgs/development/libraries/libschrift/default.nix28
-rw-r--r--pkgs/development/libraries/libsurvive/default.nix2
-rw-r--r--pkgs/development/libraries/libvmaf/default.nix10
-rw-r--r--pkgs/development/libraries/openhmd/default.nix43
-rw-r--r--pkgs/development/libraries/qmltermwidget/default.nix12
-rw-r--r--pkgs/development/libraries/sentencepiece/default.nix4
-rw-r--r--pkgs/development/libraries/vtk/generic.nix5
-rw-r--r--pkgs/development/ocaml-modules/csexp/default.nix2
-rw-r--r--pkgs/development/ocaml-modules/eliom/default.nix2
-rw-r--r--pkgs/development/ocaml-modules/elpi/default.nix24
-rw-r--r--pkgs/development/ocaml-modules/lwt/ppx.nix15
-rw-r--r--pkgs/development/ocaml-modules/ppx_tools_versioned/default.nix2
-rw-r--r--pkgs/development/php-packages/pdlib/default.nix24
-rw-r--r--pkgs/development/python-modules/advantage-air/default.nix26
-rw-r--r--pkgs/development/python-modules/aiosqlite/default.nix27
-rw-r--r--pkgs/development/python-modules/aiostream/default.nix30
-rw-r--r--pkgs/development/python-modules/airly/default.nix35
-rw-r--r--pkgs/development/python-modules/apprise/default.nix18
-rw-r--r--pkgs/development/python-modules/archinfo/default.nix32
-rw-r--r--pkgs/development/python-modules/asgiref/default.nix5
-rw-r--r--pkgs/development/python-modules/asysocks/default.nix25
-rw-r--r--pkgs/development/python-modules/audio-metadata/default.nix8
-rw-r--r--pkgs/development/python-modules/awkward/default.nix4
-rw-r--r--pkgs/development/python-modules/backports-datetime-fromisoformat/default.nix23
-rw-r--r--pkgs/development/python-modules/bitbox02/default.nix24
-rw-r--r--pkgs/development/python-modules/boto3/default.nix4
-rw-r--r--pkgs/development/python-modules/botocore/default.nix4
-rw-r--r--pkgs/development/python-modules/cherrypy/default.nix2
-rw-r--r--pkgs/development/python-modules/cirq/default.nix4
-rw-r--r--pkgs/development/python-modules/crytic-compile/default.nix5
-rw-r--r--pkgs/development/python-modules/cupy/default.nix4
-rw-r--r--pkgs/development/python-modules/demjson/default.nix9
-rw-r--r--pkgs/development/python-modules/discordpy/default.nix4
-rw-r--r--pkgs/development/python-modules/djangorestframework/default.nix12
-rw-r--r--pkgs/development/python-modules/ds-store/default.nix31
-rw-r--r--pkgs/development/python-modules/eliot/default.nix4
-rw-r--r--pkgs/development/python-modules/eventlet/default.nix4
-rw-r--r--pkgs/development/python-modules/fastapi/default.nix49
-rw-r--r--pkgs/development/python-modules/fastdiff/default.nix30
-rw-r--r--pkgs/development/python-modules/fixerio/default.nix45
-rw-r--r--pkgs/development/python-modules/flask-cors/default.nix4
-rw-r--r--pkgs/development/python-modules/folium/default.nix4
-rw-r--r--pkgs/development/python-modules/google-api-core/default.nix (renamed from pkgs/development/python-modules/google_api_core/default.nix)37
-rw-r--r--pkgs/development/python-modules/google-api-python-client/default.nix4
-rw-r--r--pkgs/development/python-modules/google-apputils/default.nix (renamed from pkgs/development/python-modules/google_apputils/default.nix)6
-rw-r--r--pkgs/development/python-modules/google-auth-httplib2/default.nix35
-rw-r--r--pkgs/development/python-modules/google-auth-oauthlib/default.nix29
-rw-r--r--pkgs/development/python-modules/google-auth/default.nix54
-rw-r--r--pkgs/development/python-modules/google-cloud-access-context-manager/default.nix12
-rw-r--r--pkgs/development/python-modules/google-cloud-asset/default.nix54
-rw-r--r--pkgs/development/python-modules/google-cloud-automl/default.nix59
-rw-r--r--pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix35
-rw-r--r--pkgs/development/python-modules/google-cloud-bigquery/default.nix58
-rw-r--r--pkgs/development/python-modules/google-cloud-bigtable/default.nix (renamed from pkgs/development/python-modules/google_cloud_bigtable/default.nix)6
-rw-r--r--pkgs/development/python-modules/google-cloud-container/default.nix43
-rw-r--r--pkgs/development/python-modules/google-cloud-core/default.nix (renamed from pkgs/development/python-modules/google_cloud_core/default.nix)27
-rw-r--r--pkgs/development/python-modules/google-cloud-dataproc/default.nix42
-rw-r--r--pkgs/development/python-modules/google-cloud-datastore/default.nix46
-rw-r--r--pkgs/development/python-modules/google-cloud-dlp/default.nix42
-rw-r--r--pkgs/development/python-modules/google-cloud-dns/default.nix41
-rw-r--r--pkgs/development/python-modules/google-cloud-error-reporting/default.nix (renamed from pkgs/development/python-modules/google_cloud_error_reporting/default.nix)29
-rw-r--r--pkgs/development/python-modules/google-cloud-firestore/default.nix64
-rw-r--r--pkgs/development/python-modules/google-cloud-iam/default.nix25
-rw-r--r--pkgs/development/python-modules/google-cloud-iot/default.nix42
-rw-r--r--pkgs/development/python-modules/google-cloud-kms/default.nix (renamed from pkgs/development/python-modules/google_cloud_kms/default.nix)23
-rw-r--r--pkgs/development/python-modules/google-cloud-language/default.nix37
-rw-r--r--pkgs/development/python-modules/google-cloud-logging/default.nix59
-rw-r--r--pkgs/development/python-modules/google-cloud-monitoring/default.nix42
-rw-r--r--pkgs/development/python-modules/google-cloud-org-policy/default.nix8
-rw-r--r--pkgs/development/python-modules/google-cloud-os-config/default.nix29
-rw-r--r--pkgs/development/python-modules/google-cloud-pubsub/default.nix42
-rw-r--r--pkgs/development/python-modules/google-cloud-redis/default.nix37
-rw-r--r--pkgs/development/python-modules/google-cloud-resource-manager/default.nix36
-rw-r--r--pkgs/development/python-modules/google-cloud-runtimeconfig/default.nix (renamed from pkgs/development/python-modules/google_cloud_runtimeconfig/default.nix)23
-rw-r--r--pkgs/development/python-modules/google-cloud-secret-manager/default.nix47
-rw-r--r--pkgs/development/python-modules/google-cloud-securitycenter/default.nix39
-rw-r--r--pkgs/development/python-modules/google-cloud-spanner/default.nix54
-rw-r--r--pkgs/development/python-modules/google-cloud-speech/default.nix43
-rw-r--r--pkgs/development/python-modules/google-cloud-storage/default.nix64
-rw-r--r--pkgs/development/python-modules/google-cloud-tasks/default.nix44
-rw-r--r--pkgs/development/python-modules/google-cloud-testutils/default.nix (renamed from pkgs/development/python-modules/google_cloud_testutils/default.nix)10
-rw-r--r--pkgs/development/python-modules/google-cloud-texttospeech/default.nix43
-rw-r--r--pkgs/development/python-modules/google-cloud-trace/default.nix44
-rw-r--r--pkgs/development/python-modules/google-cloud-translate/default.nix46
-rw-r--r--pkgs/development/python-modules/google-cloud-videointelligence/default.nix45
-rw-r--r--pkgs/development/python-modules/google-cloud-vision/default.nix41
-rw-r--r--pkgs/development/python-modules/google-cloud-websecurityscanner/default.nix36
-rw-r--r--pkgs/development/python-modules/google-crc32c/default.nix14
-rw-r--r--pkgs/development/python-modules/google-i18n-address/default.nix6
-rw-r--r--pkgs/development/python-modules/google-music-proto/default.nix8
-rw-r--r--pkgs/development/python-modules/google-music-utils/default.nix31
-rw-r--r--pkgs/development/python-modules/google-music/default.nix8
-rw-r--r--pkgs/development/python-modules/google-resumable-media/default.nix46
-rw-r--r--pkgs/development/python-modules/google_auth/default.nix44
-rw-r--r--pkgs/development/python-modules/google_cloud_asset/default.nix38
-rw-r--r--pkgs/development/python-modules/google_cloud_automl/default.nix39
-rw-r--r--pkgs/development/python-modules/google_cloud_bigquery/default.nix47
-rw-r--r--pkgs/development/python-modules/google_cloud_bigquery_datatransfer/default.nix31
-rw-r--r--pkgs/development/python-modules/google_cloud_container/default.nix29
-rw-r--r--pkgs/development/python-modules/google_cloud_dataproc/default.nix33
-rw-r--r--pkgs/development/python-modules/google_cloud_datastore/default.nix33
-rw-r--r--pkgs/development/python-modules/google_cloud_dlp/default.nix32
-rw-r--r--pkgs/development/python-modules/google_cloud_dns/default.nix33
-rw-r--r--pkgs/development/python-modules/google_cloud_firestore/default.nix35
-rw-r--r--pkgs/development/python-modules/google_cloud_iot/default.nix33
-rw-r--r--pkgs/development/python-modules/google_cloud_language/default.nix32
-rw-r--r--pkgs/development/python-modules/google_cloud_logging/default.nix38
-rw-r--r--pkgs/development/python-modules/google_cloud_monitoring/default.nix32
-rw-r--r--pkgs/development/python-modules/google_cloud_pubsub/default.nix35
-rw-r--r--pkgs/development/python-modules/google_cloud_redis/default.nix38
-rw-r--r--pkgs/development/python-modules/google_cloud_resource_manager/default.nix34
-rw-r--r--pkgs/development/python-modules/google_cloud_secret_manager/default.nix36
-rw-r--r--pkgs/development/python-modules/google_cloud_securitycenter/default.nix33
-rw-r--r--pkgs/development/python-modules/google_cloud_spanner/default.nix33
-rw-r--r--pkgs/development/python-modules/google_cloud_speech/default.nix26
-rw-r--r--pkgs/development/python-modules/google_cloud_storage/default.nix48
-rw-r--r--pkgs/development/python-modules/google_cloud_tasks/default.nix33
-rw-r--r--pkgs/development/python-modules/google_cloud_texttospeech/default.nix27
-rw-r--r--pkgs/development/python-modules/google_cloud_trace/default.nix32
-rw-r--r--pkgs/development/python-modules/google_cloud_translate/default.nix40
-rw-r--r--pkgs/development/python-modules/google_cloud_videointelligence/default.nix31
-rw-r--r--pkgs/development/python-modules/google_cloud_vision/default.nix33
-rw-r--r--pkgs/development/python-modules/google_cloud_websecurityscanner/default.nix24
-rw-r--r--pkgs/development/python-modules/google_resumable_media/default.nix38
-rw-r--r--pkgs/development/python-modules/googleapis_common_protos/default.nix29
-rw-r--r--pkgs/development/python-modules/googlemaps/default.nix9
-rw-r--r--pkgs/development/python-modules/googletrans/default.nix11
-rw-r--r--pkgs/development/python-modules/graphene/default.nix50
-rw-r--r--pkgs/development/python-modules/graphql-relay/default.nix24
-rw-r--r--pkgs/development/python-modules/grpcio/default.nix31
-rw-r--r--pkgs/development/python-modules/gspread/default.nix4
-rw-r--r--pkgs/development/python-modules/h11/default.nix25
-rw-r--r--pkgs/development/python-modules/httpx/default.nix2
-rw-r--r--pkgs/development/python-modules/hwi/default.nix41
-rw-r--r--pkgs/development/python-modules/hwi/relax-deps.patch16
-rw-r--r--pkgs/development/python-modules/itemloaders/default.nix4
-rw-r--r--pkgs/development/python-modules/jc/default.nix7
-rw-r--r--pkgs/development/python-modules/keepkey_agent/default.nix3
-rw-r--r--pkgs/development/python-modules/kubernetes/default.nix4
-rw-r--r--pkgs/development/python-modules/labelbox/default.nix6
-rw-r--r--pkgs/development/python-modules/ldappool/default.nix6
-rw-r--r--pkgs/development/python-modules/ledger_agent/default.nix3
-rw-r--r--pkgs/development/python-modules/libcst/default.nix5
-rw-r--r--pkgs/development/python-modules/liquidctl/default.nix4
-rw-r--r--pkgs/development/python-modules/lmdb/default.nix16
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozdevice.nix3
-rw-r--r--pkgs/development/python-modules/minidump/default.nix25
-rw-r--r--pkgs/development/python-modules/minikerberos/default.nix32
-rw-r--r--pkgs/development/python-modules/msal/default.nix4
-rw-r--r--pkgs/development/python-modules/nitime/default.nix6
-rw-r--r--pkgs/development/python-modules/noiseprotocol/default.nix26
-rw-r--r--pkgs/development/python-modules/openwebifpy/default.nix4
-rw-r--r--pkgs/development/python-modules/orm/default.nix10
-rw-r--r--pkgs/development/python-modules/pgpy/default.nix14
-rw-r--r--pkgs/development/python-modules/poster3/default.nix3
-rw-r--r--pkgs/development/python-modules/proto-plus/default.nix13
-rw-r--r--pkgs/development/python-modules/protobuf/default.nix24
-rw-r--r--pkgs/development/python-modules/pyairvisual/default.nix16
-rw-r--r--pkgs/development/python-modules/pyarlo/default.nix41
-rw-r--r--pkgs/development/python-modules/pyatv/default.nix2
-rw-r--r--pkgs/development/python-modules/pychromecast/default.nix6
-rw-r--r--pkgs/development/python-modules/pydexcom/default.nix30
-rw-r--r--pkgs/development/python-modules/pygobject/default.nix3
-rw-r--r--pkgs/development/python-modules/pylacrosse/default.nix37
-rw-r--r--pkgs/development/python-modules/pymodbus/default.nix59
-rw-r--r--pkgs/development/python-modules/pyosmium/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest-snapshot/default.nix26
-rw-r--r--pkgs/development/python-modules/pytile/default.nix56
-rw-r--r--pkgs/development/python-modules/r2pipe/default.nix4
-rw-r--r--pkgs/development/python-modules/rfc3986/default.nix13
-rw-r--r--pkgs/development/python-modules/rpy2/default.nix41
-rw-r--r--pkgs/development/python-modules/salmon-mail/default.nix2
-rw-r--r--pkgs/development/python-modules/sanic-auth/default.nix12
-rw-r--r--pkgs/development/python-modules/sanic/default.nix2
-rw-r--r--pkgs/development/python-modules/sentry-sdk/default.nix18
-rw-r--r--pkgs/development/python-modules/slither-analyzer/default.nix4
-rw-r--r--pkgs/development/python-modules/smbus-cffi/default.nix1
-rw-r--r--pkgs/development/python-modules/snapshottest/default.nix33
-rw-r--r--pkgs/development/python-modules/starlette/default.nix30
-rw-r--r--pkgs/development/python-modules/tbm-utils/default.nix6
-rw-r--r--pkgs/development/python-modules/tensorflow-estimator/1/default.nix30
-rw-r--r--pkgs/development/python-modules/tensorflow-estimator/default.nix (renamed from pkgs/development/python-modules/tensorflow-estimator/2/default.nix)0
-rw-r--r--pkgs/development/python-modules/tensorflow-tensorboard/1/default.nix3
-rw-r--r--pkgs/development/python-modules/tensorflow-tensorboard/default.nix (renamed from pkgs/development/python-modules/tensorflow-tensorboard/2/default.nix)3
-rw-r--r--pkgs/development/python-modules/tensorflow/1/bin.nix120
-rw-r--r--pkgs/development/python-modules/tensorflow/1/binary-hashes.nix43
-rw-r--r--pkgs/development/python-modules/tensorflow/1/default.nix456
-rw-r--r--pkgs/development/python-modules/tensorflow/1/lift-gast-restriction.patch13
-rwxr-xr-xpkgs/development/python-modules/tensorflow/1/prefetcher.sh33
-rw-r--r--pkgs/development/python-modules/tensorflow/bin.nix (renamed from pkgs/development/python-modules/tensorflow/2/bin.nix)0
-rw-r--r--pkgs/development/python-modules/tensorflow/binary-hashes.nix (renamed from pkgs/development/python-modules/tensorflow/2/binary-hashes.nix)0
-rw-r--r--pkgs/development/python-modules/tensorflow/cuda-10.2-no-bin2c-path.patch10
-rw-r--r--pkgs/development/python-modules/tensorflow/default.nix (renamed from pkgs/development/python-modules/tensorflow/2/default.nix)13
-rw-r--r--pkgs/development/python-modules/tensorflow/no-saved-proto.patch14
-rwxr-xr-xpkgs/development/python-modules/tensorflow/prefetcher.sh (renamed from pkgs/development/python-modules/tensorflow/2/prefetcher.sh)0
-rw-r--r--pkgs/development/python-modules/tensorflow/relax-dependencies.patch (renamed from pkgs/development/python-modules/tensorflow/2/relax-dependencies.patch)0
-rw-r--r--pkgs/development/python-modules/trezor_agent/default.nix3
-rw-r--r--pkgs/development/python-modules/typesystem/default.nix9
-rw-r--r--pkgs/development/python-modules/uvicorn/default.nix46
-rw-r--r--pkgs/development/python-modules/voluptuous/default.nix4
-rw-r--r--pkgs/development/python-modules/wasmer/default.nix73
-rw-r--r--pkgs/development/python-modules/winacl/default.nix25
-rw-r--r--pkgs/development/python-modules/winsspi/default.nix28
-rw-r--r--pkgs/development/python-modules/xlib/default.nix4
-rw-r--r--pkgs/development/python-modules/ydiff/default.nix2
-rw-r--r--pkgs/development/python-modules/zeroconf/default.nix6
-rw-r--r--pkgs/development/python-modules/zha-quirks/default.nix26
-rw-r--r--pkgs/development/python-modules/zigpy-deconz/default.nix31
-rw-r--r--pkgs/development/python-modules/zigpy-zigate/default.nix4
-rw-r--r--pkgs/development/python-modules/zigpy-znp/default.nix5
-rw-r--r--pkgs/development/python-modules/zigpy/default.nix6
-rw-r--r--pkgs/development/r-modules/default.nix1
-rw-r--r--pkgs/development/tools/buildah/default.nix4
-rw-r--r--pkgs/development/tools/buildkit/default.nix4
-rw-r--r--pkgs/development/tools/conftest/default.nix6
-rw-r--r--pkgs/development/tools/database/timescaledb-tune/default.nix4
-rw-r--r--pkgs/development/tools/fedora-coreos-config-transpiler/default.nix4
-rw-r--r--pkgs/development/tools/golangci-lint/default.nix6
-rw-r--r--pkgs/development/tools/gopls/default.nix6
-rw-r--r--pkgs/development/tools/haskell/haskell-language-server/default.nix35
-rw-r--r--pkgs/development/tools/haskell/haskell-language-server/hls-class-plugin.nix21
-rw-r--r--pkgs/development/tools/haskell/haskell-language-server/hls-eval-plugin.nix27
-rw-r--r--pkgs/development/tools/haskell/haskell-language-server/hls-explicit-imports-plugin.nix4
-rw-r--r--pkgs/development/tools/haskell/haskell-language-server/hls-hlint-plugin.nix4
-rw-r--r--pkgs/development/tools/haskell/haskell-language-server/hls-retrie-plugin.nix4
-rw-r--r--pkgs/development/tools/haskell/haskell-language-server/hls-tactics-plugin.nix4
-rwxr-xr-xpkgs/development/tools/haskell/haskell-language-server/update.sh7
-rw-r--r--pkgs/development/tools/kustomize/default.nix10
-rw-r--r--pkgs/development/tools/misc/cflow/default.nix9
-rw-r--r--pkgs/development/tools/misc/editorconfig-checker/default.nix4
-rw-r--r--pkgs/development/tools/misc/lttng-ust/default.nix6
-rw-r--r--pkgs/development/tools/misc/nimlsp/default.nix48
-rw-r--r--pkgs/development/tools/misc/terraform-ls/default.nix6
-rw-r--r--pkgs/development/tools/misc/texlab/default.nix15
-rw-r--r--pkgs/development/tools/ocaml/camlp5/default.nix20
-rw-r--r--pkgs/development/tools/pry/Gemfile.lock10
-rw-r--r--pkgs/development/tools/pry/gemset.nix12
-rw-r--r--pkgs/development/tools/purescript/spago/spago.nix41
-rw-r--r--pkgs/development/tools/rubocop/Gemfile.lock22
-rw-r--r--pkgs/development/tools/rubocop/gemset.nix28
-rw-r--r--pkgs/development/tools/tabnine/default.nix21
-rw-r--r--pkgs/development/tools/turbogit/default.nix42
-rw-r--r--pkgs/games/ckan/default.nix46
-rw-r--r--pkgs/games/enyo-doom/default.nix2
-rw-r--r--pkgs/games/factorio/versions.json16
-rw-r--r--pkgs/games/sauerbraten/default.nix4
-rw-r--r--pkgs/misc/drivers/hplip/default.nix6
-rw-r--r--pkgs/misc/drivers/hplip/hplip-3.20.11-nixos-cups-ppd-search-path.patch24
-rw-r--r--pkgs/misc/drivers/steamcontroller/default.nix6
-rw-r--r--pkgs/misc/tmux-plugins/default.nix1
-rw-r--r--pkgs/misc/vim-plugins/generated.nix324
-rw-r--r--pkgs/misc/vim-plugins/vim-plugin-names7
-rw-r--r--pkgs/misc/vscode-extensions/default.nix108
-rw-r--r--pkgs/os-specific/linux/busybox/default.nix7
-rw-r--r--pkgs/os-specific/linux/kernel/hardened/patches.json29
-rwxr-xr-xpkgs/os-specific/linux/kernel/hardened/update.py11
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.14.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.19.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.4.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.9.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-5.10.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-5.4.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-lqx.nix6
-rw-r--r--pkgs/os-specific/linux/kernel/linux-rt-5.10.nix6
-rw-r--r--pkgs/os-specific/linux/kernel/patches.nix3
-rw-r--r--pkgs/os-specific/linux/nvidia-x11/default.nix9
-rw-r--r--pkgs/os-specific/linux/open-iscsi/default.nix6
-rw-r--r--pkgs/os-specific/linux/pcimem/default.nix30
-rw-r--r--pkgs/os-specific/linux/zfs/default.nix17
-rw-r--r--pkgs/servers/caddy/default.nix6
-rw-r--r--pkgs/servers/code-server/default.nix56
-rw-r--r--pkgs/servers/gotify/source-sha.nix2
-rw-r--r--pkgs/servers/gotify/version.nix2
-rw-r--r--pkgs/servers/home-assistant/component-packages.nix33
-rw-r--r--pkgs/servers/home-assistant/default.nix12
-rw-r--r--pkgs/servers/home-assistant/frontend.nix7
-rwxr-xr-xpkgs/servers/home-assistant/update.sh2
-rw-r--r--pkgs/servers/metabase/default.nix4
-rw-r--r--pkgs/servers/misc/oven-media-engine/default.nix19
-rw-r--r--pkgs/servers/monitoring/telegraf/default.nix8
-rw-r--r--pkgs/servers/nextcloud/default.nix2
-rw-r--r--pkgs/servers/nzbhydra2/default.nix32
-rw-r--r--pkgs/servers/slimserver/default.nix1
-rw-r--r--pkgs/servers/sql/patroni/default.nix2
-rw-r--r--pkgs/servers/sql/postgresql/default.nix13
-rw-r--r--pkgs/servers/sql/postgresql/ext/timescaledb.nix7
-rw-r--r--pkgs/servers/web-apps/jirafeau/default.nix5
-rw-r--r--pkgs/shells/oksh/default.nix21
-rw-r--r--pkgs/shells/zsh/oh-my-zsh/default.nix6
-rw-r--r--pkgs/tools/X11/opentabletdriver/default.nix5
-rw-r--r--pkgs/tools/admin/amazon-ec2-utils/default.nix53
-rw-r--r--pkgs/tools/admin/awscli/default.nix4
-rw-r--r--pkgs/tools/admin/lxd/default.nix4
-rw-r--r--pkgs/tools/admin/pulumi/data.nix130
-rwxr-xr-xpkgs/tools/admin/pulumi/update.sh32
-rw-r--r--pkgs/tools/admin/tigervnc/default.nix21
-rw-r--r--pkgs/tools/admin/tigervnc/u_xorg-server-1.20.7-ddxInputThreadInit.patch21
-rw-r--r--pkgs/tools/audio/mpris-scrobbler/default.nix60
-rw-r--r--pkgs/tools/backup/grab-site/default.nix24
-rw-r--r--pkgs/tools/backup/s3ql/default.nix2
-rw-r--r--pkgs/tools/backup/wal-e/default.nix2
-rw-r--r--pkgs/tools/filesystems/ceph/default.nix2
-rw-r--r--pkgs/tools/inputmethods/evdevremapkeys/default.nix14
-rw-r--r--pkgs/tools/misc/bibtex2html/default.nix4
-rw-r--r--pkgs/tools/misc/coreutils/default.nix3
-rw-r--r--pkgs/tools/misc/foma/default.nix32
-rw-r--r--pkgs/tools/misc/hdf4/default.nix8
-rw-r--r--pkgs/tools/misc/mcrypt/default.nix3
-rwxr-xr-xpkgs/tools/misc/mcrypt/malloc_to_stdlib.patch26
-rw-r--r--pkgs/tools/misc/mmv-go/default.nix6
-rw-r--r--pkgs/tools/misc/tab-rs/default.nix27
-rw-r--r--pkgs/tools/misc/youtube-dl/default.nix4
-rw-r--r--pkgs/tools/networking/dsniff/default.nix10
-rw-r--r--pkgs/tools/networking/rdrview/default.nix26
-rw-r--r--pkgs/tools/package-management/conda/default.nix2
-rw-r--r--pkgs/tools/package-management/nix-update/default.nix4
-rw-r--r--pkgs/tools/security/cloudbrute/default.nix30
-rw-r--r--pkgs/tools/security/deepsea/default.nix30
-rw-r--r--pkgs/tools/security/grype/default.nix35
-rw-r--r--pkgs/tools/security/masscan/default.nix4
-rw-r--r--pkgs/tools/security/pcsc-cyberjack/default.nix2
-rw-r--r--pkgs/tools/security/sn0int/default.nix8
-rw-r--r--pkgs/tools/security/subjs/default.nix32
-rw-r--r--pkgs/tools/security/urlhunter/default.nix29
-rw-r--r--pkgs/tools/system/autocpu-freq/default.nix34
-rw-r--r--pkgs/tools/system/autocpu-freq/prevent-install-and-copy.patch178
-rw-r--r--pkgs/tools/system/inxi/default.nix4
-rw-r--r--pkgs/tools/text/mdbook/default.nix6
-rw-r--r--pkgs/tools/text/mdcat/default.nix6
-rw-r--r--pkgs/tools/typesetting/sile/default.nix5
-rw-r--r--pkgs/top-level/aliases.nix2
-rw-r--r--pkgs/top-level/all-packages.nix109
-rw-r--r--pkgs/top-level/coq-packages.nix103
-rw-r--r--pkgs/top-level/dhall-packages.nix1
-rw-r--r--pkgs/top-level/perl-packages.nix2686
-rw-r--r--pkgs/top-level/php-packages.nix7
-rw-r--r--pkgs/top-level/python-packages.nix200
530 files changed, 12021 insertions, 7906 deletions
diff --git a/.github/workflows/editorconfig.yml b/.github/workflows/editorconfig.yml
index 6935d0bbd21f..270728a61c6f 100644
--- a/.github/workflows/editorconfig.yml
+++ b/.github/workflows/editorconfig.yml
@@ -25,7 +25,7 @@ jobs:
     - name: Fetch editorconfig-checker
       if: env.PR_DIFF
       env:
-        ECC_VERSION: "2.2.0"
+        ECC_VERSION: "2.3.1"
         ECC_URL: "https://github.com/editorconfig-checker/editorconfig-checker/releases/download"
       run: |
         curl -sSf -O -L -C - "$ECC_URL/$ECC_VERSION/ec-linux-amd64.tar.gz" && \
diff --git a/doc/contributing/coding-conventions.xml b/doc/contributing/coding-conventions.xml
index e587275a6383..cb6d60c2c138 100644
--- a/doc/contributing/coding-conventions.xml
+++ b/doc/contributing/coding-conventions.xml
@@ -178,6 +178,15 @@ args.stdenv.mkDerivation (args // {
 </programlisting>
     </para>
    </listitem>
+   <listitem>
+    <para>
+     Prefer using the top-level <varname>lib</varname> over its alias
+     <literal>stdenv.lib</literal>.  <varname>lib</varname> is unrelated to
+     <varname>stdenv</varname>, and so <literal>stdenv.lib</literal> should only
+     be used as a convenience alias when developing to avoid having to modify
+     the function inputs just to test something out.
+    </para>
+   </listitem>
   </itemizedlist>
  </section>
  <section xml:id="sec-package-naming">
diff --git a/doc/languages-frameworks/coq.section.md b/doc/languages-frameworks/coq.section.md
index 714e84efc8db..7fa71ddc6f8d 100644
--- a/doc/languages-frameworks/coq.section.md
+++ b/doc/languages-frameworks/coq.section.md
@@ -1,40 +1,77 @@
-# Coq {#sec-language-coq}
+# Coq and coq packages {#sec-language-coq}
 
-Coq libraries should be installed in `$(out)/lib/coq/${coq.coq-version}/user-contrib/`. Such directories are automatically added to the `$COQPATH` environment variable by the hook defined in the Coq derivation.
+## Coq derivation: `coq`
 
-Some extensions (plugins) might require OCaml and sometimes other OCaml packages. The `coq.ocamlPackages` attribute can be used to depend on the same package set Coq was built against.
+The Coq derivation is overridable through the `coq.override overrides`, where overrides is an attribute set which contains the arguments to override. We recommend overriding either of the following
++ `version` (optional, defaults to the latest version of Coq selected for nixpkgs, see `pkgs/top-level/coq-packages` to witness this choice), which follows the conventions explained in the `coqPackages` section below,
++ `customOCamlPackage` (optional, defaults to `null`, which lets Coq choose a version automatically), which can be set to any of the ocaml packages attribute of `ocaml-ng` (such as `ocaml-ng.ocamlPackages_4_10` which is the default for Coq 8.11 for example).
++ `coq-version` (optional, defaults to the short version e.g. "8.10"), is a version number of the form "x.y" that indicates which Coq's version build behavior to mimic when using a source which is not a release. E.g. `coq.override { version = "d370a9d1328a4e1cdb9d02ee032f605a9d94ec7a"; coq-version = "8.10"; }`.
 
-Coq libraries may be compatible with some specific versions of Coq only. The `compatibleCoqVersions` attribute is used to precisely select those versions of Coq that are compatible with this derivation.
+## Coq packages attribute sets: `coqPackages`
 
-Here is a simple package example. It is a pure Coq library, thus it depends on Coq. It builds on the Mathematical Components library, thus it also takes `mathcomp` as `buildInputs`. Its `Makefile` has been generated using `coq_makefile` so we only have to set the `$COQLIB` variable at install time.
+The recommended way of defining a derivation for a Coq library, is to use the `coqPackages.mkCoqDerivation` function, which is essentially a specialization of `mkDerivation` taking into account most of the specifics of Coq libraries. The following attributes are supported:
+- `pname` (required) is the name of the package,
+- `version` (optional, defaults to `null`), is the version to fetch and build,
+  this attribute is interpreted in several ways depending on its type and pattern:
+  + if it is a known released version string, i.e. from the `release` attribute below, the according release is picked, and the `version` attribute of the resulting derivation is set to this release string,
+  + if it is a majorMinor `"x.y"` prefix of a known released version (as defined above), then the latest `"x.y.z"` known released version is selected (for the ordering given by `versionAtLeast`),
+  + if it is a path or a string representing an absolute path (i.e. starting with `"/"`), the provided path is selected as a source, and the `version` attribute of the resulting derivation is set to `"dev"`,
+  + if it is a string of the form `owner:branch` then it tries to download the `branch` of owner `owner` for a project of the same name using the same vcs, and the `version` attribute of the resulting derivation is set to `"dev"`, additionally if the owner is not provided (i.e. if the `owner:` prefix is missing), it defaults to the original owner of the package (see below),
+  + if it is a string of the form `"#N"`, and the domain is github, then it tries to download the current head of the pull request `#N` from github,
+- `defaultVersion` (optional). Coq libraries may be compatible with some specific versions of Coq only. The `defaultVersion` attribute is used when no `version` is provided (or if `version = null`) to select the version of the library to use by default, depending on the context. This selection will mainly depend on a `coq` version number but also possibly on other packages versions (e.g. `mathcomp`). If its value ends up to be `null`, the package is marked for removal in end-user `coqPackages` attribute set.
+- `release` (optional, defaults to `{}`), lists all the known releases of the library and for each of them provides an attribute set with at least a `sha256` attribute (you may use the shell command `nix-prefetch-url --unpack <archive-url>` to find it, where `<archive-url>` is for example `https://github.com/owner/repo/archive/version.tar.gz`), each attribute set of the list of releases also takes optional overloading arguments for the fetcher as below (i.e.`domain`, `owner`, `repo`, `rev` assuming the default fetcher is used) and optional overrides for the result of the fetcher (i.e. `version` and `src`).
+- `fetcher` (optional, default to a generic fetching mechanism supporting github or gitlab based infrastructures), is a function that takes at least an `owner`, a `repo`, a `rev`, and a `sha256` and returns an attribute set with a `version` and `src`.
+- `repo` (optional, defaults to the value of `pname`),
+- `owner` (optional, defaults to `"coq-community"`).
+- `domain` (optional, defaults to `"github.com"`), domains including the strings `"github"` or `"gitlab"` in their names are automatically supported, otherwise, one must change the `fetcher` argument to support them (cf `pkgs/development/coq-modules/heq/default.nix` for an example),
+- `releaseRev` (optional, defaults to `(v: v)`), provides a default mapping from release names to revision hashes/branch names/tags,
+- `displayVersion` (optional), provides a way to alter the computation of `name` from `pname`, by explaining how to display version numbers,
+- `namePrefix` (optional), provides a way to alter the computation of `name` from `pname`, by explaining which dependencies must occur in `name`,
+- `extraBuildInputs` (optional), by default `buildInputs` just contains `coq`, this allows to add more build inputs,
+- `mlPlugin` (optional, defaults to `false`). Some extensions (plugins) might require OCaml and sometimes other OCaml packages. Standard dependencies can be added by setting the current option to `true`. For a finer grain control, the `coq.ocamlPackages` attribute can be used in `extraBuildInputs` to depend on the same package set Coq was built against.
+- `enableParallelBuilding` (optional, defaults to `true`), since it is activated by default, we provide a way to disable it.
+- `extraInstallFlags` (optional), allows to extend `installFlags` which initializes the variable `COQMF_COQLIB` so as to install in the proper subdirectory. Indeed Coq libraries should be installed in `$(out)/lib/coq/${coq.coq-version}/user-contrib/`. Such directories are automatically added to the `$COQPATH` environment variable by the hook defined in the Coq derivation.
+- `setCOQBIN` (optional, defaults to `true`), by default, the environment variable `$COQBIN` is set to the current Coq's binary, but one can disable this behavior by setting it to `false`,
+- `useMelquiondRemake` (optional, default to `null`) is an attribute set, which, if given, overloads the `preConfigurePhases`, `configureFlags`, `buildPhase`, and `installPhase` attributes of the derivation for a specific use in libraries using `remake` as set up by Guillaume Melquiond for `flocq`, `gappalib`, `interval`, and `coquelicot` (see the corresponding derivation for concrete examples of use of this option). For backward compatibility, the attribute `useMelquiondRemake.logpath` must be set to the logical root of the library (otherwise, one can pass `useMelquiondRemake = {}` to activate this without backward compatibility).
+- `dropAttrs`, `keepAttrs`, `dropDerivationAttrs` are all optional and allow to tune which attribute is added or removed from the final call to `mkDerivation`.
+
+It also takes other standard `mkDerivation` attributes, they are added as such, except for `meta` which extends an automatically computed `meta` (where the `platform` is the same as `coq` and the homepage is automatically computed).
+
+Here is a simple package example. It is a pure Coq library, thus it depends on Coq. It builds on the Mathematical Components library, thus it also takes some `mathcomp` derivations as `extraBuildInputs`.
 
 ```nix
-{ stdenv, fetchFromGitHub, coq, mathcomp }:
-
-stdenv.mkDerivation rec {
-  name = "coq${coq.coq-version}-multinomials-${version}";
-  version = "1.0";
-  src = fetchFromGitHub {
-    owner = "math-comp";
-    repo = "multinomials";
-    rev = version;
-    sha256 = "1qmbxp1h81cy3imh627pznmng0kvv37k4hrwi2faa101s6bcx55m";
+{ coq, mkCoqDerivation, mathcomp, mathcomp-finmap, mathcomp-bigenough,
+  lib, version ? null }:
+with lib; mkCoqDerivation {
+  /* namePrefix leads to e.g. `name = coq8.11-mathcomp1.11-multinomials-1.5.2` */
+  namePrefix = [ "coq" "mathcomp" ];
+  pname = "multinomials";
+  owner = "math-comp";
+  inherit version;
+  defaultVersion =  with versions; switch [ coq.version mathcomp.version ] [
+      { cases = [ (range "8.7" "8.12")  "1.11.0" ];             out = "1.5.2"; }
+      { cases = [ (range "8.7" "8.11")  (range "1.8" "1.10") ]; out = "1.5.0"; }
+      { cases = [ (range "8.7" "8.10")  (range "1.8" "1.10") ]; out = "1.4"; }
+      { cases = [ "8.6"                 (range "1.6" "1.7") ];  out = "1.1"; }
+    ] null;
+  release = {
+    "1.5.2".sha256 = "15aspf3jfykp1xgsxf8knqkxv8aav2p39c2fyirw7pwsfbsv2c4s";
+    "1.5.1".sha256 = "13nlfm2wqripaq671gakz5mn4r0xwm0646araxv0nh455p9ndjs3";
+    "1.5.0".sha256 = "064rvc0x5g7y1a0nip6ic91vzmq52alf6in2bc2dmss6dmzv90hw";
+    "1.5.0".rev    = "1.5";
+    "1.4".sha256   = "0vnkirs8iqsv8s59yx1fvg1nkwnzydl42z3scya1xp1b48qkgn0p";
+    "1.3".sha256   = "0l3vi5n094nx3qmy66hsv867fnqm196r8v605kpk24gl0aa57wh4";
+    "1.2".sha256   = "1mh1w339dslgv4f810xr1b8v2w7rpx6fgk9pz96q0fyq49fw2xcq";
+    "1.1".sha256   = "1q8alsm89wkc0lhcvxlyn0pd8rbl2nnxg81zyrabpz610qqjqc3s";
+    "1.0".sha256   = "1qmbxp1h81cy3imh627pznmng0kvv37k4hrwi2faa101s6bcx55m";
   };
 
-  buildInputs = [ coq ];
-  propagatedBuildInputs = [ mathcomp ];
-
-  installFlags = "COQLIB=$(out)/lib/coq/${coq.coq-version}/";
+  propagatedBuildInputs =
+    [ mathcomp.ssreflect mathcomp.algebra mathcomp-finmap mathcomp-bigenough ];
 
   meta = {
     description = "A Coq/SSReflect Library for Monoidal Rings and Multinomials";
-    inherit (src.meta) homepage;
-    license = stdenv.lib.licenses.cecill-b;
-    inherit (coq.meta) platforms;
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.5" "8.6" "8.7" ];
+    license = licenses.cecill-c;
   };
 }
 ```
diff --git a/flake.nix b/flake.nix
index cf0185d3ad6a..537f91ee5e71 100644
--- a/flake.nix
+++ b/flake.nix
@@ -39,6 +39,11 @@
                     modules = modules ++ [
                       ./nixos/modules/virtualisation/qemu-vm.nix
                       { virtualisation.useBootLoader = true; }
+                      ({ config, ... }: {
+                        virtualisation.useEFIBoot =
+                          config.boot.loader.systemd-boot.enable ||
+                          config.boot.loader.efi.canTouchEfiVariables;
+                      })
                     ];
                   })).config;
               in
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index 070e0375a2f4..346f7b47db43 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -4654,6 +4654,12 @@
     githubId = 2029444;
     name = "James Kent";
   };
+  ketzacoatl = {
+    email = "ketzacoatl@protonmail.com";
+    github = "ketzacoatl";
+    githubId = 10122937;
+    name = "ketzacoatl";
+  };
   kevincox = {
     email = "kevincox@kevincox.ca";
     github = "kevincox";
@@ -7995,6 +8001,12 @@
     githubId = 720864;
     name = "Sébastien Bourdeauducq";
   };
+  sbond75 = {
+    name = "sbond75";
+    email = "43617712+sbond75@users.noreply.github.com";
+    github = "sbond75";
+    githubId = 43617712;
+  };
   sboosali = {
     email = "SamBoosalis@gmail.com";
     github = "sboosali";
@@ -8849,6 +8861,12 @@
     githubId = 2389333;
     name = "Andy Tockman";
   };
+  Technical27 = {
+    email = "38222826+Technical27@users.noreply.github.com";
+    github = "Technical27";
+    githubId = 38222826;
+    name = "Aamaruvi Yogamani";
+  };
   teh = {
     email = "tehunger@gmail.com";
     github = "teh";
@@ -10186,6 +10204,16 @@
     github = "ymarkus";
     githubId = 62380378;
   };
+  ymatsiuk = {
+    name = "Yurii Matsiuk";
+    email = "ymatsiuk@users.noreply.github.com";
+    github = "ymatsiuk";
+    githubId = 24990891;
+    keys = [{
+      longkeyid = "rsa4096/0x61302290298601AA";
+      fingerprint = "7BB8 84B5 74DA FDB1 E194  ED21 6130 2290 2986 01AA";
+    }];
+  };
   ymeister = {
     name = "Yuri Meister";
     email = "47071325+ymeister@users.noreply.github.com";
diff --git a/maintainers/team-list.nix b/maintainers/team-list.nix
index 598393582ab8..b34c3f71bd82 100644
--- a/maintainers/team-list.nix
+++ b/maintainers/team-list.nix
@@ -36,6 +36,14 @@ with lib.maintainers; {
     scope = "Maintain Cinnamon desktop environment and applications made by the LinuxMint team.";
   };
 
+  deshaw = {
+    # Verify additions to this team with at least one already existing member of the team.
+    members = [
+      limeytexan
+    ];
+    scope = "Group registration for D. E. Shaw employees who collectively maintain packages.";
+  };
+
   freedesktop = {
     members = [ jtojnar worldofpeace ];
     scope = "Maintain Freedesktop.org packages for graphical desktop.";
diff --git a/nixos/default.nix b/nixos/default.nix
index 45da78e9261c..c11872f1441a 100644
--- a/nixos/default.nix
+++ b/nixos/default.nix
@@ -22,6 +22,11 @@ let
       [ configuration
         ./modules/virtualisation/qemu-vm.nix
         { virtualisation.useBootLoader = true; }
+        ({ config, ... }: {
+          virtualisation.useEFIBoot =
+            config.boot.loader.systemd-boot.enable ||
+            config.boot.loader.efi.canTouchEfiVariables;
+        })
       ];
   }).config;
 
diff --git a/nixos/doc/manual/release-notes/rl-2009.xml b/nixos/doc/manual/release-notes/rl-2009.xml
index 3da8080958ee..0b1d0d509d78 100644
--- a/nixos/doc/manual/release-notes/rl-2009.xml
+++ b/nixos/doc/manual/release-notes/rl-2009.xml
@@ -1343,6 +1343,14 @@ CREATE ROLE postgres LOGIN SUPERUSER;
       It was chosen to do this as it has a usability breaking issue (see issue <link xlink:href="https://github.com/NixOS/nixpkgs/issues/98819">#98819</link>)
       that makes it unsuitable to be a default app.
     </para>
+    <note>
+      <para>
+        Issue <link
+        xlink:href="https://github.com/NixOS/nixpkgs/issues/98819">#98819</link>
+        is now fixed and <package>gnome3.epiphany</package> is once
+        again installed by default.
+      </para>
+    </note>
    </listitem>
    <listitem>
      <para>
diff --git a/nixos/doc/manual/release-notes/rl-2103.xml b/nixos/doc/manual/release-notes/rl-2103.xml
index 05daca1d710c..e40598082f99 100644
--- a/nixos/doc/manual/release-notes/rl-2103.xml
+++ b/nixos/doc/manual/release-notes/rl-2103.xml
@@ -321,8 +321,8 @@
    </listitem>
    <listitem>
     <para>
-     <package>fish-foreign-env</package> is now an alias for the
-     <package>fishPlugins.foreign-env</package> package, in which the fish
+     The <package>fish-foreign-env</package> package has been replaced with
+     <package>fishPlugins.foreign-env</package>, in which the fish
      functions have been relocated to the
      <literal>vendor_functions.d</literal> directory to be loaded automatically.
     </para>
@@ -504,6 +504,11 @@ http://some.json-exporter.host:7979/probe?target=https://example.com/some/json/e
      The option's description was incorrect regarding ownership management and has been simplified greatly.
     </para>
    </listitem>
+   <listitem>
+     <para>
+       The GNOME desktop manager once again installs <package>gnome3.epiphany</package> by default.
+     </para>
+   </listitem>
   </itemizedlist>
  </section>
 </section>
diff --git a/nixos/modules/config/system-path.nix b/nixos/modules/config/system-path.nix
index 27d1cef849bc..aee7a041d043 100644
--- a/nixos/modules/config/system-path.nix
+++ b/nixos/modules/config/system-path.nix
@@ -144,6 +144,7 @@ in
         "/share/kservicetypes5"
         "/share/kxmlgui5"
         "/share/systemd"
+        "/share/thumbnailers"
       ];
 
     system.path = pkgs.buildEnv {
diff --git a/nixos/modules/hardware/opentabletdriver.nix b/nixos/modules/hardware/opentabletdriver.nix
index 0f34d903f68b..295e23e6164f 100644
--- a/nixos/modules/hardware/opentabletdriver.nix
+++ b/nixos/modules/hardware/opentabletdriver.nix
@@ -5,6 +5,8 @@ let
   cfg = config.hardware.opentabletdriver;
 in
 {
+  meta.maintainers = with lib.maintainers; [ thiagokokada ];
+
   options = {
     hardware.opentabletdriver = {
       enable = mkOption {
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 8fd5d4519fdd..e05b6dff88d0 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -226,6 +226,7 @@
   ./services/audio/icecast.nix
   ./services/audio/liquidsoap.nix
   ./services/audio/mpd.nix
+  ./services/audio/mpdscribble.nix
   ./services/audio/mopidy.nix
   ./services/audio/roon-server.nix
   ./services/audio/slimserver.nix
@@ -492,6 +493,7 @@
   ./services/misc/nix-ssh-serve.nix
   ./services/misc/novacomd.nix
   ./services/misc/nzbget.nix
+  ./services/misc/nzbhydra2.nix
   ./services/misc/octoprint.nix
   ./services/misc/osrm.nix
   ./services/misc/packagekit.nix
diff --git a/nixos/modules/programs/appgate-sdp.nix b/nixos/modules/programs/appgate-sdp.nix
new file mode 100644
index 000000000000..1dec4ecf9ecc
--- /dev/null
+++ b/nixos/modules/programs/appgate-sdp.nix
@@ -0,0 +1,23 @@
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+{
+  options = {
+    programs.appgate-sdp = {
+      enable = mkEnableOption
+        "AppGate SDP VPN client";
+    };
+  };
+
+  config = mkIf config.programs.appgate-sdp.enable {
+    boot.kernelModules = [ "tun" ];
+    environment.systemPackages = [ pkgs.appgate-sdp ];
+    services.dbus.packages = [ pkgs.appgate-sdp ];
+    systemd = {
+      packages = [ pkgs.appgate-sdp ];
+      # https://github.com/NixOS/nixpkgs/issues/81138
+      services.appgatedriver.wantedBy =  [ "multi-user.target" ];
+    };
+  };
+}
diff --git a/nixos/modules/services/audio/mpd.nix b/nixos/modules/services/audio/mpd.nix
index e09e4861646c..c8e5045f6dc2 100644
--- a/nixos/modules/services/audio/mpd.nix
+++ b/nixos/modules/services/audio/mpd.nix
@@ -10,6 +10,14 @@ let
   gid = config.ids.gids.mpd;
   cfg = config.services.mpd;
 
+  credentialsPlaceholder = (creds:
+    let
+      placeholders = (imap0
+        (i: c: ''password "{{password-${toString i}}}@${concatStringsSep "," c.permissions}"'')
+        creds);
+    in
+      concatStringsSep "\n" placeholders);
+
   mpdConf = pkgs.writeText "mpd.conf" ''
     # This file was automatically generated by NixOS. Edit mpd's configuration
     # via NixOS' configuration.nix, as this file will be rewritten upon mpd's
@@ -32,6 +40,8 @@ let
       }
     ''}
 
+    ${credentialsPlaceholder cfg.credentials}
+
     ${cfg.extraConfig}
   '';
 
@@ -152,16 +162,35 @@ in {
         '';
       };
 
-      credentialsFile = mkOption {
-        type = types.path;
+      credentials = mkOption {
+        type = types.listOf (types.submodule {
+          options = {
+            passwordFile = mkOption {
+              type = types.path;
+              description = ''
+                Path to file containing the password.
+              '';
+            };
+            permissions = let
+              perms = ["read" "add" "control" "admin"];
+            in mkOption {
+              type = types.listOf (types.enum perms);
+              default = [ "read" ];
+              description = ''
+                List of permissions that are granted with this password.
+                Permissions can be "${concatStringsSep "\", \"" perms}".
+              '';
+            };
+          };
+        });
         description = ''
-          Path to a file to be merged with the settings during the service startup.
-          Useful to merge a file which is better kept out of the Nix store
-          because it contains sensible data like MPD's password. Example may look like this:
-          <literal>password "myMpdPassword@read,add,control,admin"</literal>
+          Credentials and permissions for accessing the mpd server.
         '';
-        default = "/dev/null";
-        example = "/var/lib/secrets/mpd.conf";
+        default = [];
+        example = [
+          {passwordFile = "/var/lib/secrets/mpd_readonly_password"; permissions = [ "read" ];}
+          {passwordFile = "/var/lib/secrets/mpd_admin_password"; permissions = ["read" "add" "control" "admin"];}
+        ];
       };
 
       fluidsynth = mkOption {
@@ -201,12 +230,15 @@ in {
       serviceConfig = mkMerge [
         {
           User = "${cfg.user}";
-          ExecStart = "${pkgs.mpd}/bin/mpd --no-daemon /etc/mpd.conf";
-          ExecStartPre = pkgs.writeScript "mpd-start-pre" ''
-            #!${pkgs.runtimeShell}
+          ExecStart = "${pkgs.mpd}/bin/mpd --no-daemon /run/mpd/mpd.conf";
+          ExecStartPre = pkgs.writeShellScript "mpd-start-pre" ''
             set -euo pipefail
-            cat ${mpdConf} ${cfg.credentialsFile} > /etc/mpd.conf
+            install -m 600 ${mpdConf} /run/mpd/mpd.conf
+            ${pkgs.replace}/bin/replace-literal -fe ${
+              concatStringsSep " -a " (imap0 (i: c: "\"{{password-${toString i}}}\" \"$(cat ${c.passwordFile})\"") cfg.credentials)
+            } /run/mpd/mpd.conf
           '';
+          RuntimeDirectory = "mpd";
           Type = "notify";
           LimitRTPRIO = 50;
           LimitRTTIME = "infinity";
@@ -230,14 +262,6 @@ in {
         })
       ];
     };
-    environment.etc."mpd.conf" = {
-      mode = "0640";
-      group = cfg.group;
-      user = cfg.user;
-      # To be modified by the service' ExecStartPre
-      text = ''
-      '';
-    };
 
     users.users = optionalAttrs (cfg.user == name) {
       ${name} = {
diff --git a/nixos/modules/services/audio/mpdscribble.nix b/nixos/modules/services/audio/mpdscribble.nix
new file mode 100644
index 000000000000..642d8743935f
--- /dev/null
+++ b/nixos/modules/services/audio/mpdscribble.nix
@@ -0,0 +1,202 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.services.mpdscribble;
+  mpdCfg = config.services.mpd;
+
+  endpointUrls = {
+    "last.fm" = "http://post.audioscrobbler.com";
+    "libre.fm" = "http://turtle.libre.fm";
+    "jamendo" = "http://postaudioscrobbler.jamendo.com";
+    "listenbrainz" = "http://proxy.listenbrainz.org";
+  };
+
+  mkSection = secname: secCfg: ''
+    [${secname}]
+    url      = ${secCfg.url}
+    username = ${secCfg.username}
+    password = {{${secname}_PASSWORD}}
+    journal  = /var/lib/mpdscribble/${secname}.journal
+  '';
+
+  endpoints = concatStringsSep "\n" (mapAttrsToList mkSection cfg.endpoints);
+  cfgTemplate = pkgs.writeText "mpdscribble.conf" ''
+    ## This file was automatically genenrated by NixOS and will be overwritten.
+    ## Do not edit. Edit your NixOS configuration instead.
+
+    ## mpdscribble - an audioscrobbler for the Music Player Daemon.
+    ## http://mpd.wikia.com/wiki/Client:mpdscribble
+
+    # HTTP proxy URL.
+    ${optionalString (cfg.proxy != null) "proxy = ${cfg.proxy}"}
+
+    # The location of the mpdscribble log file.  The special value
+    # "syslog" makes mpdscribble use the local syslog daemon.  On most
+    # systems, log messages will appear in /var/log/daemon.log then.
+    # "-" means log to stderr (the current terminal).
+    log = -
+
+    # How verbose mpdscribble's logging should be.  Default is 1.
+    verbose = ${toString cfg.verbose}
+
+    # How often should mpdscribble save the journal file? [seconds]
+    journal_interval = ${toString cfg.journalInterval}
+
+    # The host running MPD, possibly protected by a password
+    # ([PASSWORD@]HOSTNAME).
+    host = ${(optionalString (cfg.passwordFile != null) "{{MPD_PASSWORD}}@") + cfg.host}
+
+    # The port that the MPD listens on and mpdscribble should try to
+    # connect to.
+    port = ${toString cfg.port}
+
+    ${endpoints}
+  '';
+
+  cfgFile = "/run/mpdscribble/mpdscribble.conf";
+
+  replaceSecret = secretFile: placeholder: targetFile:
+    optionalString (secretFile != null) ''
+      ${pkgs.replace}/bin/replace-literal -ef ${placeholder} "$(cat ${secretFile})" ${targetFile}'';
+
+  preStart = pkgs.writeShellScript "mpdscribble-pre-start" ''
+    cp -f "${cfgTemplate}" "${cfgFile}"
+    ${replaceSecret cfg.passwordFile "{{MPD_PASSWORD}}" cfgFile}
+    ${concatStringsSep "\n" (mapAttrsToList (secname: cfg:
+      replaceSecret cfg.passwordFile "{{${secname}_PASSWORD}}" cfgFile)
+      cfg.endpoints)}
+  '';
+
+  localMpd = (cfg.host == "localhost" || cfg.host == "127.0.0.1");
+
+in {
+  ###### interface
+
+  options.services.mpdscribble = {
+
+    enable = mkEnableOption "mpdscribble";
+
+    proxy = mkOption {
+      default = null;
+      type = types.nullOr types.str;
+      description = ''
+        HTTP proxy URL.
+      '';
+    };
+
+    verbose = mkOption {
+      default = 1;
+      type = types.int;
+      description = ''
+        Log level for the mpdscribble daemon.
+      '';
+    };
+
+    journalInterval = mkOption {
+      default = 600;
+      example = 60;
+      type = types.int;
+      description = ''
+        How often should mpdscribble save the journal file? [seconds]
+      '';
+    };
+
+    host = mkOption {
+      default = (if mpdCfg.network.listenAddress != "any" then
+        mpdCfg.network.listenAddress
+      else
+        "localhost");
+      type = types.str;
+      description = ''
+        Host for the mpdscribble daemon to search for a mpd daemon on.
+      '';
+    };
+
+    passwordFile = mkOption {
+      default = if localMpd then
+        (findFirst
+          (c: any (x: x == "read") c.permissions)
+          { passwordFile = null; }
+          mpdCfg.credentials).passwordFile
+      else
+        null;
+      type = types.nullOr types.str;
+      description = ''
+        File containing the password for the mpd daemon.
+        If there is a local mpd configured using <option>services.mpd.credentials</option>
+        the default is automatically set to a matching passwordFile of the local mpd.
+      '';
+    };
+
+    port = mkOption {
+      default = mpdCfg.network.port;
+      type = types.port;
+      description = ''
+        Port for the mpdscribble daemon to search for a mpd daemon on.
+      '';
+    };
+
+    endpoints = mkOption {
+      type = (let
+        endpoint = { name, ... }: {
+          options = {
+            url = mkOption {
+              type = types.str;
+              default = endpointUrls.${name} or "";
+              description =
+                "The url endpoint where the scrobble API is listening.";
+            };
+            username = mkOption {
+              type = types.str;
+              description = ''
+                Username for the scrobble service.
+              '';
+            };
+            passwordFile = mkOption {
+              type = types.nullOr types.str;
+              description =
+                "File containing the password, either as MD5SUM or cleartext.";
+            };
+          };
+        };
+      in types.attrsOf (types.submodule endpoint));
+      default = { };
+      example = {
+        "last.fm" = {
+          username = "foo";
+          passwordFile = "/run/secrets/lastfm_password";
+        };
+      };
+      description = ''
+        Endpoints to scrobble to.
+        If the endpoint is one of "${
+          concatStringsSep "\", \"" (attrNames endpointUrls)
+        }" the url is set automatically.
+      '';
+    };
+
+  };
+
+  ###### implementation
+
+  config = mkIf cfg.enable {
+    systemd.services.mpdscribble = {
+      after = [ "network.target" ] ++ (optional localMpd "mpd.service");
+      description = "mpdscribble mpd scrobble client";
+      wantedBy = [ "multi-user.target" ];
+      serviceConfig = {
+        DynamicUser = true;
+        StateDirectory = "mpdscribble";
+        RuntimeDirectory = "mpdscribble";
+        RuntimeDirectoryMode = "700";
+        # TODO use LoadCredential= instead of running preStart with full privileges?
+        ExecStartPre = "+${preStart}";
+        ExecStart =
+          "${pkgs.mpdscribble}/bin/mpdscribble --no-daemon --conf ${cfgFile}";
+      };
+    };
+  };
+
+}
diff --git a/nixos/modules/services/databases/redis.nix b/nixos/modules/services/databases/redis.nix
index 6b8853ae390b..9628d30e76a3 100644
--- a/nixos/modules/services/databases/redis.nix
+++ b/nixos/modules/services/databases/redis.nix
@@ -4,31 +4,16 @@ with lib;
 
 let
   cfg = config.services.redis;
-  redisBool = b: if b then "yes" else "no";
-  condOption = name: value: if value != null then "${name} ${toString value}" else "";
-
-  redisConfig = pkgs.writeText "redis.conf" ''
-    port ${toString cfg.port}
-    ${condOption "bind" cfg.bind}
-    ${condOption "unixsocket" cfg.unixSocket}
-    daemonize no
-    supervised systemd
-    loglevel ${cfg.logLevel}
-    logfile ${cfg.logfile}
-    syslog-enabled ${redisBool cfg.syslog}
-    databases ${toString cfg.databases}
-    ${concatMapStrings (d: "save ${toString (builtins.elemAt d 0)} ${toString (builtins.elemAt d 1)}\n") cfg.save}
-    dbfilename dump.rdb
-    dir /var/lib/redis
-    ${if cfg.slaveOf != null then "slaveof ${cfg.slaveOf.ip} ${toString cfg.slaveOf.port}" else ""}
-    ${condOption "masterauth" cfg.masterAuth}
-    ${condOption "requirepass" cfg.requirePass}
-    appendOnly ${redisBool cfg.appendOnly}
-    appendfsync ${cfg.appendFsync}
-    slowlog-log-slower-than ${toString cfg.slowLogLogSlowerThan}
-    slowlog-max-len ${toString cfg.slowLogMaxLen}
-    ${cfg.extraConfig}
-  '';
+
+  mkValueString = value:
+    if value == true then "yes"
+    else if value == false then "no"
+    else generators.mkValueStringDefault { } value;
+
+  redisConfig = pkgs.writeText "redis.conf" (generators.toKeyValue {
+    listsAsDuplicateKeys = true;
+    mkKeyValue = generators.mkKeyValueDefault { inherit mkValueString; } " ";
+  } cfg.settings);
 in
 {
   imports = [
@@ -37,6 +22,7 @@ in
     (mkRemovedOptionModule [ "services" "redis" "dbFilename" ] "The redis module now uses /var/lib/redis/dump.rdb as database dump location.")
     (mkRemovedOptionModule [ "services" "redis" "appendOnlyFilename" ] "This option was never used.")
     (mkRemovedOptionModule [ "services" "redis" "pidFile" ] "This option was removed.")
+    (mkRemovedOptionModule [ "services" "redis" "extraConfig" ] "Use services.redis.settings instead.")
   ];
 
   ###### interface
@@ -191,10 +177,20 @@ in
         description = "Maximum number of items to keep in slow log.";
       };
 
-      extraConfig = mkOption {
-        type = types.lines;
-        default = "";
-        description = "Extra configuration options for redis.conf.";
+      settings = mkOption {
+        type = with types; attrsOf (oneOf [ bool int str (listOf str) ]);
+        default = {};
+        description = ''
+          Redis configuration. Refer to
+          <link xlink:href="https://redis.io/topics/config"/>
+          for details on supported values.
+        '';
+        example = literalExample ''
+          {
+            unixsocketperm = "700";
+            loadmodule = [ "/path/to/my_module.so" "/path/to/other_module.so" ];
+          }
+        '';
       };
     };
 
@@ -225,6 +221,30 @@ in
 
     environment.systemPackages = [ cfg.package ];
 
+    services.redis.settings = mkMerge [
+      {
+        port = cfg.port;
+        daemonize = false;
+        supervised = "systemd";
+        loglevel = cfg.logLevel;
+        logfile = cfg.logfile;
+        syslog-enabled = cfg.syslog;
+        databases = cfg.databases;
+        save = map (d: "${toString (builtins.elemAt d 0)} ${toString (builtins.elemAt d 1)}") cfg.save;
+        dbfilename = "dump.rdb";
+        dir = "/var/lib/redis";
+        appendOnly = cfg.appendOnly;
+        appendfsync = cfg.appendFsync;
+        slowlog-log-slower-than = cfg.slowLogLogSlowerThan;
+        slowlog-max-len = cfg.slowLogMaxLen;
+      }
+      (mkIf (cfg.bind != null) { bind = cfg.bind; })
+      (mkIf (cfg.unixSocket != null) { unixsocket = cfg.unixSocket; })
+      (mkIf (cfg.slaveOf != null) { slaveof = "${cfg.slaveOf.ip} ${cfg.slaveOf.port}"; })
+      (mkIf (cfg.masterAuth != null) { masterauth = cfg.masterAuth; })
+      (mkIf (cfg.requirePass != null) { requirepass = cfg.requirePass; })
+    ];
+
     systemd.services.redis = {
       description = "Redis Server";
 
diff --git a/nixos/modules/services/desktops/pipewire.nix b/nixos/modules/services/desktops/pipewire.nix
index 0ef988d9e69f..134becf6b0c4 100644
--- a/nixos/modules/services/desktops/pipewire.nix
+++ b/nixos/modules/services/desktops/pipewire.nix
@@ -93,11 +93,11 @@ in {
     assertions = [
       {
         assertion = cfg.pulse.enable -> !config.hardware.pulseaudio.enable;
-        message = "PipeWire based PulseAudio server emulation replaces PulseAudio";
+        message = "PipeWire based PulseAudio server emulation replaces PulseAudio. This option requires `hardware.pulseaudio.enable` to be set to false";
       }
       {
         assertion = cfg.jack.enable -> !config.services.jack.jackd.enable;
-        message = "PipeWire based JACK emulation doesn't use the JACK service";
+        message = "PipeWire based JACK emulation doesn't use the JACK service. This option requires `services.jack.jackd.enable` to be set to false";
       }
     ];
 
diff --git a/nixos/modules/services/misc/nzbhydra2.nix b/nixos/modules/services/misc/nzbhydra2.nix
new file mode 100644
index 000000000000..c396b4b8f6e9
--- /dev/null
+++ b/nixos/modules/services/misc/nzbhydra2.nix
@@ -0,0 +1,78 @@
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+let cfg = config.services.nzbhydra2;
+
+in {
+  options = {
+    services.nzbhydra2 = {
+      enable = mkEnableOption "NZBHydra2";
+
+      dataDir = mkOption {
+        type = types.str;
+        default = "/var/lib/nzbhydra2";
+        description = "The directory where NZBHydra2 stores its data files.";
+      };
+
+      openFirewall = mkOption {
+        type = types.bool;
+        default = false;
+        description =
+          "Open ports in the firewall for the NZBHydra2 web interface.";
+      };
+
+      package = mkOption {
+        type = types.package;
+        default = pkgs.nzbhydra2;
+        defaultText = "pkgs.nzbhydra2";
+        description = "NZBHydra2 package to use.";
+      };
+    };
+  };
+
+  config = mkIf cfg.enable {
+    systemd.tmpfiles.rules =
+      [ "d '${cfg.dataDir}' 0700 nzbhydra2 nzbhydra2 - -" ];
+
+    systemd.services.nzbhydra2 = {
+      description = "NZBHydra2";
+      after = [ "network.target" ];
+      wantedBy = [ "multi-user.target" ];
+
+      serviceConfig = {
+        Type = "simple";
+        User = "nzbhydra2";
+        Group = "nzbhydra2";
+        ExecStart =
+          "${cfg.package}/bin/nzbhydra2 --nobrowser --datafolder '${cfg.dataDir}'";
+        Restart = "on-failure";
+        # Hardening
+        NoNewPrivileges = true;
+        PrivateTmp = true;
+        PrivateDevices = true;
+        DevicePolicy = "closed";
+        ProtectSystem = "strict";
+        ReadWritePaths = cfg.dataDir;
+        ProtectHome = "read-only";
+        ProtectControlGroups = true;
+        ProtectKernelModules = true;
+        ProtectKernelTunables = true;
+        RestrictAddressFamilies ="AF_UNIX AF_INET AF_INET6 AF_NETLINK";
+        RestrictNamespaces = true;
+        RestrictRealtime = true;
+        RestrictSUIDSGID = true;
+        LockPersonality = true;
+      };
+    };
+
+    networking.firewall = mkIf cfg.openFirewall { allowedTCPPorts = [ 5076 ]; };
+
+    users.users.nzbhydra2 = {
+      group = "nzbhydra2";
+      isSystemUser = true;
+    };
+
+    users.groups.nzbhydra2 = {};
+  };
+}
diff --git a/nixos/modules/services/ttys/getty.nix b/nixos/modules/services/ttys/getty.nix
index 68ab81837772..ecfabef5fb13 100644
--- a/nixos/modules/services/ttys/getty.nix
+++ b/nixos/modules/services/ttys/getty.nix
@@ -3,9 +3,19 @@
 with lib;
 
 let
+  cfg = config.services.getty;
+
+  loginArgs = [
+    "--login-program" "${pkgs.shadow}/bin/login"
+  ] ++ optionals (cfg.autologinUser != null) [
+    "--autologin" cfg.autologinUser
+  ] ++ optionals (cfg.loginOptions != null) [
+    "--login-options" cfg.loginOptions
+  ];
 
-  autologinArg = optionalString (config.services.getty.autologinUser != null) "--autologin ${config.services.getty.autologinUser}";
-  gettyCmd = extraArgs: "@${pkgs.util-linux}/sbin/agetty agetty --login-program ${pkgs.shadow}/bin/login ${autologinArg} ${extraArgs}";
+  gettyCmd = extraArgs:
+    "@${pkgs.util-linux}/sbin/agetty agetty ${escapeShellArgs loginArgs} "
+      + extraArgs;
 
 in
 
@@ -30,6 +40,23 @@ in
         '';
       };
 
+      loginOptions = mkOption {
+        type = types.nullOr types.str;
+        default = null;
+        description = ''
+          Template for arguments to be passed to
+          <citerefentry><refentrytitle>login</refentrytitle>
+          <manvolnum>1</manvolnum></citerefentry>.
+
+          See <citerefentry><refentrytitle>agetty</refentrytitle>
+          <manvolnum>1</manvolnum></citerefentry> for details,
+          including security considerations.  If unspecified, agetty
+          will not be invoked with a <option>--login-options</option>
+          option.
+        '';
+        example = "-h darkstar -- \u";
+      };
+
       greetingLine = mkOption {
         type = types.str;
         description = ''
diff --git a/nixos/modules/services/web-apps/nextcloud.xml b/nixos/modules/services/web-apps/nextcloud.xml
index 02e4dba28610..f71c8df6c6d4 100644
--- a/nixos/modules/services/web-apps/nextcloud.xml
+++ b/nixos/modules/services/web-apps/nextcloud.xml
@@ -10,6 +10,10 @@
   <link linkend="opt-services.nextcloud.enable">services.nextcloud</link>. A
   desktop client is packaged at <literal>pkgs.nextcloud-client</literal>.
  </para>
+ <para>
+  The current default by NixOS is <package>nextcloud20</package> which is also the latest
+  major version available.
+ </para>
  <section xml:id="module-services-nextcloud-basic-usage">
   <title>Basic usage</title>
 
@@ -210,7 +214,7 @@
   nextcloud17 = generic {
     version = "17.0.x";
     sha256 = "0000000000000000000000000000000000000000000000000000";
-    insecure = true;
+    eol = true;
   };
 }</programlisting>
   </para>
diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix
index 7fcd61880ea8..d6f463be9e81 100644
--- a/nixos/modules/services/web-servers/nginx/default.nix
+++ b/nixos/modules/services/web-servers/nginx/default.nix
@@ -206,6 +206,12 @@ let
       ${cfg.httpConfig}
     }''}
 
+    ${optionalString (cfg.streamConfig != "") ''
+    stream {
+      ${cfg.streamConfig}
+    }
+    ''}
+
     ${cfg.appendConfig}
   '';
 
@@ -483,6 +489,21 @@ in
         ";
       };
 
+      streamConfig = mkOption {
+        type = types.lines;
+        default = "";
+        example = ''
+          server {
+            listen 127.0.0.1:53 udp reuseport;
+            proxy_timeout 20s;
+            proxy_pass 192.168.0.1:53535;
+          }
+        '';
+        description = "
+          Configuration lines to be set inside the stream block.
+        ";
+      };
+
       eventsConfig = mkOption {
         type = types.lines;
         default = "";
diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix
index 68a65d77d62f..a36a47d376b6 100644
--- a/nixos/modules/services/x11/desktop-managers/gnome3.nix
+++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix
@@ -19,7 +19,7 @@ let
 
   defaultFavoriteAppsOverride = ''
     [org.gnome.shell]
-    favorite-apps=[ 'org.gnome.Geary.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Photos.desktop', 'org.gnome.Nautilus.desktop' ]
+    favorite-apps=[ 'org.gnome.Epiphany.desktop', 'org.gnome.Geary.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Photos.desktop', 'org.gnome.Nautilus.desktop' ]
   '';
 
   nixos-gsettings-desktop-schemas = let
@@ -409,9 +409,7 @@ in
         baobab
         cheese
         eog
-        /* Not in good standing on nixos:
-         * https://github.com/NixOS/nixpkgs/issues/98819
-        /* epiphany */
+        epiphany
         gedit
         gnome-calculator
         gnome-calendar
diff --git a/nixos/modules/system/boot/tmp.nix b/nixos/modules/system/boot/tmp.nix
index 26eb172210e7..837e308cbea9 100644
--- a/nixos/modules/system/boot/tmp.nix
+++ b/nixos/modules/system/boot/tmp.nix
@@ -30,7 +30,13 @@ with lib;
 
   config = {
 
-    systemd.additionalUpstreamSystemUnits = optional config.boot.tmpOnTmpfs "tmp.mount";
+    systemd.mounts = mkIf config.boot.tmpOnTmpfs [
+      {
+        what = "tmpfs";
+        where = "/tmp";
+        mountConfig.Options = [ "mode=1777" "strictatime" "rw" "nosuid" "nodev" "size=50%" ];
+      }
+    ];
 
     systemd.tmpfiles.rules = optional config.boot.cleanTmpDir "D! /tmp 1777 root root";
 
diff --git a/nixos/modules/virtualisation/lxd.nix b/nixos/modules/virtualisation/lxd.nix
index 3958fc2c1d7c..103e689abae8 100644
--- a/nixos/modules/virtualisation/lxd.nix
+++ b/nixos/modules/virtualisation/lxd.nix
@@ -100,6 +100,10 @@ in
       packages = [ cfg.lxcPackage ];
     };
 
+    # TODO: remove once LXD gets proper support for cgroupsv2
+    # (currently most of the e.g. CPU accounting stuff doesn't work)
+    systemd.enableUnifiedCgroupHierarchy = false;
+
     systemd.services.lxd = {
       description = "LXD Container Management Daemon";
 
diff --git a/nixos/modules/virtualisation/podman.nix b/nixos/modules/virtualisation/podman.nix
index f554aeffb451..36c0ca8dfea3 100644
--- a/nixos/modules/virtualisation/podman.nix
+++ b/nixos/modules/virtualisation/podman.nix
@@ -1,6 +1,8 @@
 { config, lib, pkgs, utils, ... }:
 let
   cfg = config.virtualisation.podman;
+  toml = pkgs.formats.toml { };
+  nvidia-docker = pkgs.nvidia-docker.override { containerRuntimePath = "${pkgs.runc}/bin/runc"; };
 
   inherit (lib) mkOption types;
 
@@ -53,6 +55,14 @@ in
       '';
     };
 
+    enableNvidia = mkOption {
+      type = types.bool;
+      default = false;
+      description = ''
+        Enable use of NVidia GPUs from within podman containers.
+      '';
+    };
+
     extraPackages = mkOption {
       type = with types; listOf package;
       default = [ ];
@@ -78,21 +88,37 @@ in
 
   };
 
-  config = lib.mkIf cfg.enable {
-
-    environment.systemPackages = [ cfg.package ]
-      ++ lib.optional cfg.dockerCompat dockerCompat;
-
-    environment.etc."cni/net.d/87-podman-bridge.conflist".source = utils.copyFile "${pkgs.podman-unwrapped.src}/cni/87-podman-bridge.conflist";
-
-    # Enable common /etc/containers configuration
-    virtualisation.containers.enable = true;
-
-    assertions = [{
-      assertion = cfg.dockerCompat -> !config.virtualisation.docker.enable;
-      message = "Option dockerCompat conflicts with docker";
-    }];
-
-  };
+  config = lib.mkIf cfg.enable (lib.mkMerge [
+    {
+      environment.systemPackages = [ cfg.package ]
+        ++ lib.optional cfg.dockerCompat dockerCompat;
+
+      environment.etc."cni/net.d/87-podman-bridge.conflist".source = utils.copyFile "${pkgs.podman-unwrapped.src}/cni/87-podman-bridge.conflist";
+
+      virtualisation.containers = {
+        enable = true; # Enable common /etc/containers configuration
+        containersConf.extraConfig = lib.optionalString cfg.enableNvidia
+          (builtins.readFile (toml.generate "podman.nvidia.containers.conf" {
+            engine = {
+              conmon_env_vars = [ "PATH=${lib.makeBinPath [ nvidia-docker ]}" ];
+              runtimes.nvidia = [ "${nvidia-docker}/bin/nvidia-container-runtime" ];
+            };
+          }));
+      };
 
+      assertions = [
+        {
+          assertion = cfg.dockerCompat -> !config.virtualisation.docker.enable;
+          message = "Option dockerCompat conflicts with docker";
+        }
+        {
+          assertion = cfg.enableNvidia -> !config.virtualisation.docker.enableNvidia;
+          message = "Option enableNvidia conflicts with docker.enableNvidia";
+        }
+      ];
+    }
+    (lib.mkIf cfg.enableNvidia {
+      environment.etc."nvidia-container-runtime/config.toml".source = "${nvidia-docker}/etc/podman-config.toml";
+    })
+  ]);
 }
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index c491b559213c..d53c6f6511e3 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -274,6 +274,7 @@ in
   novacomd = handleTestOn ["x86_64-linux"] ./novacomd.nix {};
   nsd = handleTest ./nsd.nix {};
   nzbget = handleTest ./nzbget.nix {};
+  nzbhydra2 = handleTest ./nzbhydra2.nix {};
   oh-my-zsh = handleTest ./oh-my-zsh.nix {};
   openarena = handleTest ./openarena.nix {};
   openldap = handleTest ./openldap.nix {};
@@ -281,6 +282,7 @@ in
   openssh = handleTest ./openssh.nix {};
   openstack-image-metadata = (handleTestOn ["x86_64-linux"] ./openstack-image.nix {}).metadata or {};
   openstack-image-userdata = (handleTestOn ["x86_64-linux"] ./openstack-image.nix {}).userdata or {};
+  opentabletdriver = handleTest ./opentabletdriver.nix {};
   image-contents = handleTest ./image-contents.nix {};
   orangefs = handleTest ./orangefs.nix {};
   os-prober = handleTestOn ["x86_64-linux"] ./os-prober.nix {};
diff --git a/nixos/tests/nzbhydra2.nix b/nixos/tests/nzbhydra2.nix
new file mode 100644
index 000000000000..c82c756c3a1c
--- /dev/null
+++ b/nixos/tests/nzbhydra2.nix
@@ -0,0 +1,17 @@
+import ./make-test-python.nix ({ lib, ... }:
+
+  with lib;
+
+  {
+    name = "nzbhydra2";
+    meta.maintainers = with maintainers; [ jamiemagee ];
+
+    nodes.machine = { pkgs, ... }: { services.nzbhydra2.enable = true; };
+
+    testScript = ''
+      machine.start()
+      machine.wait_for_unit("nzbhydra2.service")
+      machine.wait_for_open_port(5076)
+      machine.succeed("curl --fail http://localhost:5076/")
+    '';
+  })
diff --git a/nixos/tests/opentabletdriver.nix b/nixos/tests/opentabletdriver.nix
new file mode 100644
index 000000000000..2cadfae6b263
--- /dev/null
+++ b/nixos/tests/opentabletdriver.nix
@@ -0,0 +1,27 @@
+import ./make-test-python.nix ( { pkgs, ... }: {
+  name = "opentabletdriver";
+  meta = {
+    maintainers = with pkgs.stdenv.lib.maintainers; [ thiagokokada ];
+  };
+
+  machine = { pkgs, ... }:
+    {
+      imports = [
+        ./common/user-account.nix
+        ./common/x11.nix
+      ];
+      test-support.displayManager.auto.user = "alice";
+      hardware.opentabletdriver.enable = true;
+    };
+
+  testScript =
+    ''
+      machine.start()
+      machine.wait_for_x()
+      machine.wait_for_unit("opentabletdriver.service", "alice")
+
+      machine.succeed("cat /etc/udev/rules.d/30-opentabletdriver.rules")
+      # Will fail if service is not running
+      machine.succeed("otd detect")
+    '';
+})
diff --git a/pkgs/applications/audio/ecasound/default.nix b/pkgs/applications/audio/ecasound/default.nix
index adb6f6b74274..505e5a604ca2 100644
--- a/pkgs/applications/audio/ecasound/default.nix
+++ b/pkgs/applications/audio/ecasound/default.nix
@@ -1,5 +1,6 @@
 { stdenv
 , fetchurl
+, pkg-config
 , alsaLib
 , audiofile
 , libjack2
@@ -9,9 +10,14 @@
 , libsndfile
 , lilv
 , lv2
+, ncurses
+, readline
 }:
 
-# TODO: fix readline, ncurses, lilv, liblo, liboil and python. See configure log.
+# TODO: fix python. See configure log.
+# fix -Dnullptr=0 cludge below.
+# The error is
+# /nix/store/*-lilv-0.24.10/include/lilv-0/lilv/lilvmm.hpp:272:53: error: 'nullptr' was not declared in this scope
 
 stdenv.mkDerivation rec {
   pname = "ecasound";
@@ -22,7 +28,34 @@ stdenv.mkDerivation rec {
     sha256 = "1m7njfjdb7sqf0lhgc4swihgdr4snkg8v02wcly08wb5ar2fr2s6";
   };
 
-  buildInputs = [ alsaLib audiofile libjack2 liblo liboil libsamplerate libsndfile lilv lv2 ];
+  nativeBuildInputs = [
+    pkg-config
+  ];
+
+  buildInputs = [
+    alsaLib
+    audiofile
+    libjack2
+    liblo
+    liboil
+    libsamplerate
+    libsndfile
+    lilv
+    lv2
+    ncurses
+    readline
+  ];
+
+  strictDeps = true;
+
+  configureFlags = "--enable-liblilv --with-extra-cppflags=-Dnullptr=0";
+
+  postPatch = ''
+    sed -i -e '
+      s@^#include <readline.h>@#include <readline/readline.h>@
+      s@^#include <history.h>@#include <readline/history.h>@
+      ' ecasound/eca-curses.cpp
+  '';
 
   meta = {
     description = "Software package designed for multitrack audio processing";
diff --git a/pkgs/applications/audio/strawberry/default.nix b/pkgs/applications/audio/strawberry/default.nix
index c2f1a0db701c..53a4cc96437c 100644
--- a/pkgs/applications/audio/strawberry/default.nix
+++ b/pkgs/applications/audio/strawberry/default.nix
@@ -35,13 +35,13 @@
 
 mkDerivation rec {
   pname = "strawberry";
-  version = "0.8.4";
+  version = "0.8.5";
 
   src = fetchFromGitHub {
     owner = "jonaski";
     repo = pname;
     rev = version;
-    sha256 = "145djlfvbkx2b1wqipk51mz82dhm27vmh9x00lkn24q1xz1y6h5n";
+    sha256 = "sha256-+ZQ80J94Teqt4Gy6fw/pS7FwILK/TPehtJDy72Bdy1E=";
   };
 
   buildInputs = [
diff --git a/pkgs/applications/audio/sublime-music/default.nix b/pkgs/applications/audio/sublime-music/default.nix
index 7e3c1b9164f1..1f74998166fb 100644
--- a/pkgs/applications/audio/sublime-music/default.nix
+++ b/pkgs/applications/audio/sublime-music/default.nix
@@ -1,5 +1,4 @@
 { lib, python3Packages, gobject-introspection, gtk3, pango, wrapGAppsHook
-
 , chromecastSupport ? false
 , serverSupport ? false
 , keyringSupport ? true
@@ -51,6 +50,10 @@ python3Packages.buildPythonApplication rec {
   # https://github.com/NixOS/nixpkgs/issues/56943
   strictDeps = false;
 
+  # no tests
+  doCheck = false;
+  pythonImportsCheck = [ "sublime" ];
+
   meta = with lib; {
     description = "GTK3 Subsonic/Airsonic client";
     homepage = "https://sublimemusic.app/";
diff --git a/pkgs/applications/audio/sunvox/default.nix b/pkgs/applications/audio/sunvox/default.nix
index 2cd48806f7d0..1b3b476d7037 100644
--- a/pkgs/applications/audio/sunvox/default.nix
+++ b/pkgs/applications/audio/sunvox/default.nix
@@ -13,11 +13,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "SunVox";
-  version = "1.9.5d";
+  version = "1.9.6c";
 
   src = fetchurl {
     url = "http://www.warmplace.ru/soft/sunvox/sunvox-${version}.zip";
-    sha256 = "04f7psm0lvc09nw7d2wp0sncf37bym2v7hhxp4v8c8gdgayj7k8m";
+    sha256 = "0lqzr68n2c6aifw2vbyars91wn1chmgb9xfdk463g4vjqiava3ih";
   };
 
   buildInputs = [ unzip ];
diff --git a/pkgs/applications/audio/zynaddsubfx/default.nix b/pkgs/applications/audio/zynaddsubfx/default.nix
index 9a432f73d3f0..3d5f392205f9 100644
--- a/pkgs/applications/audio/zynaddsubfx/default.nix
+++ b/pkgs/applications/audio/zynaddsubfx/default.nix
@@ -1,30 +1,117 @@
-{ stdenv, fetchurl, alsaLib, cairo, cmake, libjack2, fftw, fltk13, lash,  libjpeg
-, libXpm, minixml, ntk, pkgconfig, zlib, liblo
+{ lib
+, stdenv
+, fetchFromGitHub
+, callPackage
+
+  # Required build tools
+, cmake
+, makeWrapper
+, pkg-config
+
+  # Required dependencies
+, fftw
+, liblo
+, minixml
+, zlib
+
+  # Optional dependencies
+, alsaSupport ? true
+, alsaLib
+, dssiSupport ? false
+, dssi
+, ladspaH
+, jackSupport ? true
+, libjack2
+, lashSupport ? false
+, lash
+, ossSupport ? true
+, portaudioSupport ? true
+, portaudio
+
+  # Optional GUI dependencies
+, guiModule ? "off"
+, cairo
+, fltk13
+, libGL
+, libjpeg
+, libX11
+, libXpm
+, ntk
+
+  # Test dependencies
+, cxxtest
 }:
 
-stdenv.mkDerivation  rec {
+assert builtins.any (g: guiModule == g) [ "fltk" "ntk" "zest" "off" ];
+
+let
+  guiName = {
+    "fltk" = "FLTK";
+    "ntk" = "NTK";
+    "zest" = "Zyn-Fusion";
+  }.${guiModule};
+  mruby-zest = callPackage ./mruby-zest { };
+in stdenv.mkDerivation rec {
   pname = "zynaddsubfx";
   version = "3.0.5";
 
-  src = fetchurl {
-    url = "mirror://sourceforge/zynaddsubfx/zynaddsubfx-${version}.tar.bz2";
-    sha256 = "0qwzg14h043rmyf9jqdylxhyfy4sl0vsr0gjql51wjhid0i34ivl";
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = version;
+    sha256 = "1vh1gszgjxwn8m32rk5222z1j2cnjax0bqpag7b47v6i36p2q4x8";
+    fetchSubmodules = true;
   };
 
-  buildInputs = [ alsaLib cairo libjack2 fftw fltk13 lash libjpeg libXpm minixml ntk zlib liblo ];
-  nativeBuildInputs = [ cmake pkgconfig ];
-
-  patchPhase = ''
+  postPatch = ''
     substituteInPlace src/Misc/Config.cpp --replace /usr $out
   '';
 
-  hardeningDisable = [ "format" ];
+  nativeBuildInputs = [ cmake makeWrapper pkg-config ];
+
+  buildInputs = [ fftw liblo minixml zlib ]
+    ++ lib.optionals alsaSupport [ alsaLib ]
+    ++ lib.optionals dssiSupport [ dssi ladspaH ]
+    ++ lib.optionals jackSupport [ libjack2 ]
+    ++ lib.optionals lashSupport [ lash ]
+    ++ lib.optionals portaudioSupport [ portaudio ]
+    ++ lib.optionals (guiModule == "fltk") [ fltk13 libjpeg libXpm ]
+    ++ lib.optionals (guiModule == "ntk") [ ntk cairo libXpm ]
+    ++ lib.optionals (guiModule == "zest") [ libGL libX11 ];
+
+  cmakeFlags = [ "-DGuiModule=${guiModule}" ]
+    # OSS library is included in glibc.
+    # Must explicitly disable if support is not wanted.
+    ++ lib.optional (!ossSupport) "-DOssEnable=OFF"
+    # Find FLTK without requiring an OpenGL library in buildInputs
+    ++ lib.optional (guiModule == "fltk") "-DFLTK_SKIP_OPENGL=ON";
+
+  doCheck = true;
+  checkInputs = [ cxxtest ];
+
+  # When building with zest GUI, patch plugins
+  # and standalone executable to properly locate zest
+  postFixup = lib.optional (guiModule == "zest") ''
+    patchelf --set-rpath "${mruby-zest}:$(patchelf --print-rpath "$out/lib/lv2/ZynAddSubFX.lv2/ZynAddSubFX_ui.so")" \
+      "$out/lib/lv2/ZynAddSubFX.lv2/ZynAddSubFX_ui.so"
+
+    patchelf --set-rpath "${mruby-zest}:$(patchelf --print-rpath "$out/lib/vst/ZynAddSubFX.so")" \
+      "$out/lib/vst/ZynAddSubFX.so"
+
+    wrapProgram "$out/bin/zynaddsubfx" \
+      --prefix PATH : ${mruby-zest} \
+      --prefix LD_LIBRARY_PATH : ${mruby-zest}
+  '';
+
+  meta = with lib; {
+    description = "High quality software synthesizer (${guiName} GUI)";
+    homepage =
+      if guiModule == "zest"
+      then "https://zynaddsubfx.sourceforge.io/zyn-fusion.html"
+      else "https://zynaddsubfx.sourceforge.io";
 
-  meta = with stdenv.lib; {
-    description = "High quality software synthesizer";
-    homepage = "http://zynaddsubfx.sourceforge.net";
     license = licenses.gpl2;
+    maintainers = with maintainers; [ goibhniu metadark ];
     platforms = platforms.linux;
-    maintainers = [ maintainers.goibhniu maintainers.nico202 ];
   };
 }
diff --git a/pkgs/applications/audio/zynaddsubfx/mruby-zest/default.nix b/pkgs/applications/audio/zynaddsubfx/mruby-zest/default.nix
new file mode 100644
index 000000000000..0f00e6244d1d
--- /dev/null
+++ b/pkgs/applications/audio/zynaddsubfx/mruby-zest/default.nix
@@ -0,0 +1,109 @@
+{ stdenv
+, fetchFromGitHub
+, bison
+, git
+, python2
+, rake
+, ruby
+, libGL
+, libuv
+, libX11
+}:
+
+let
+  mgem-list = fetchFromGitHub {
+    owner = "mruby";
+    repo = "mgem-list";
+    rev = "2033837203c8a141b1f9d23bb781fe0cbaefbd24";
+    sha256 = "0igf2nsx5i6g0yf7sjxxkngyriv213d0sjs3yidrflrabiywpxmm";
+  };
+
+  mruby-dir = fetchFromGitHub {
+    owner = "iij";
+    repo = "mruby-dir";
+    rev = "89dceefa1250fb1ae868d4cb52498e9e24293cd1";
+    sha256 = "0zrhiy9wmwmc9ls62iyb2z86j2ijqfn7rn4xfmrbrfxygczarsm9";
+  };
+
+  mruby-errno = fetchFromGitHub {
+    owner = "iij";
+    repo = "mruby-errno";
+    rev = "b4415207ff6ea62360619c89a1cff83259dc4db0";
+    sha256 = "12djcwjjw0fygai5kssxbfs3pzh3cpnq07h9m2h5b51jziw380xj";
+  };
+
+  mruby-file-stat = fetchFromGitHub {
+    owner = "ksss";
+    repo = "mruby-file-stat";
+    rev = "aa474589f065c71d9e39ab8ba976f3bea6f9aac2";
+    sha256 = "1clarmr67z133ivkbwla1a42wcjgj638j9w0mlv5n21mhim9rid5";
+  };
+
+  mruby-process = fetchFromGitHub {
+    owner = "iij";
+    repo = "mruby-process";
+    rev = "fe171fbe2a6cc3c2cf7d713641bddde71024f7c8";
+    sha256 = "00yrzc371f90gl5m1gbkw0qq8c394bpifssjr8p1wh5fmzhxqyml";
+  };
+
+  mruby-pack = fetchFromGitHub {
+    owner = "iij";
+    repo = "mruby-pack";
+    rev = "383a9c79e191d524a9a2b4107cc5043ecbf6190b";
+    sha256 = "003glxgxifk4ixl12sy4gn9bhwvgb79b4wga549ic79isgv81w2d";
+  };
+in
+stdenv.mkDerivation rec {
+  pname = "mruby-zest";
+  version = "3.0.5";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = "${pname}-build";
+    rev = version;
+    sha256 = "0fxljrgamgz2rm85mclixs00b0f2yf109jc369039n1vf0l5m57d";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ bison git python2 rake ruby ];
+  buildInputs = [ libGL libuv libX11 ];
+
+  patches = [
+    ./force-gcc-as-linker.patch
+    ./system-libuv.patch
+  ];
+
+  # Add missing dependencies of deps/mruby-dir-glob/mrbgem.rake
+  # Should be fixed in next release, see bcadb0a5490bd6d599f1a0e66ce09b46363c9dae
+  postPatch = ''
+    mkdir -p mruby/build/mrbgems
+    ln -s ${mgem-list} mruby/build/mrbgems/mgem-list
+    ln -s ${mruby-dir} mruby/build/mrbgems/mruby-dir
+    ln -s ${mruby-errno} mruby/build/mrbgems/mruby-errno
+    ln -s ${mruby-file-stat} mruby/build/mrbgems/mruby-file-stat
+    ln -s ${mruby-process} mruby/build/mrbgems/mruby-process
+    ln -s ${mruby-pack} mruby/build/mrbgems/mruby-pack
+  '';
+
+  installTargets = [ "pack" ];
+
+  postInstall = ''
+    ln -s "$out/zest" "$out/zyn-fusion"
+    cp -a package/{font,libzest.so,schema,zest} "$out"
+
+    # mruby-widget-lib/src/api.c requires MainWindow.qml as part of a
+    # sanity check, even though qml files are compiled into the binary
+    # https://github.com/mruby-zest/mruby-zest-build/tree/3.0.5/src/mruby-widget-lib/src/api.c#L99-L116
+    # https://github.com/mruby-zest/mruby-zest-build/tree/3.0.5/linux-pack.sh#L17-L18
+    mkdir -p "$out/qml"
+    touch "$out/qml/MainWindow.qml"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "The Zest Framework used in ZynAddSubFX's UI";
+    homepage = "https://github.com/mruby-zest";
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ metadark ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/applications/audio/zynaddsubfx/mruby-zest/force-gcc-as-linker.patch b/pkgs/applications/audio/zynaddsubfx/mruby-zest/force-gcc-as-linker.patch
new file mode 100644
index 000000000000..c521d2407740
--- /dev/null
+++ b/pkgs/applications/audio/zynaddsubfx/mruby-zest/force-gcc-as-linker.patch
@@ -0,0 +1,13 @@
+diff --git a/mruby/tasks/toolchains/gcc.rake b/mruby/tasks/toolchains/gcc.rake
+index f370c0ab..e5ab9f60 100644
+--- a/mruby/tasks/toolchains/gcc.rake
++++ b/mruby/tasks/toolchains/gcc.rake
+@@ -22,7 +22,7 @@ MRuby::Toolchain.new(:gcc) do |conf, _params|
+   end
+ 
+   conf.linker do |linker|
+-    linker.command = ENV['LD'] || 'gcc'
++    linker.command = 'gcc'
+     linker.flags = [ENV['LDFLAGS'] || %w()]
+     linker.libraries = %w(m)
+     linker.library_paths = []
diff --git a/pkgs/applications/audio/zynaddsubfx/mruby-zest/system-libuv.patch b/pkgs/applications/audio/zynaddsubfx/mruby-zest/system-libuv.patch
new file mode 100644
index 000000000000..b7050abc1235
--- /dev/null
+++ b/pkgs/applications/audio/zynaddsubfx/mruby-zest/system-libuv.patch
@@ -0,0 +1,113 @@
+diff --git a/Makefile b/Makefile
+index f3e3be2..2398852 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,8 +1,3 @@
+-UV_DIR    = libuv-v1.9.1
+-UV_FILE   = $(UV_DIR).tar.gz
+-UV_URL    = http://dist.libuv.org/dist/v1.9.1/$(UV_FILE)
+-	 
+-
+ all:
+ 	ruby ./rebuild-fcache.rb
+ 	cd deps/nanovg/src   && $(CC) nanovg.c -c -fPIC
+@@ -10,12 +5,12 @@ all:
+ #	cd deps/pugl         && python2 ./waf configure --no-cairo --static
+ 	cd deps/pugl         && python2 ./waf configure --no-cairo --static --debug
+ 	cd deps/pugl         && python2 ./waf
+-	cd src/osc-bridge    && CFLAGS="-I ../../deps/$(UV_DIR)/include " make lib
++	cd src/osc-bridge    && make lib
+ 	cd mruby             && MRUBY_CONFIG=../build_config.rb rake
+ 	$(CC) -shared -o libzest.so `find mruby/build/host -type f | grep -e "\.o$$" | grep -v bin` ./deps/libnanovg.a \
+ 		./deps/libnanovg.a \
+ 		src/osc-bridge/libosc-bridge.a \
+-		./deps/$(UV_DIR)/.libs/libuv.a  -lm -lX11 -lGL -lpthread
++		-luv -lm -lX11 -lGL -lpthread
+ 	$(CC) test-libversion.c deps/pugl/build/libpugl-0.a -ldl -o zest -lX11 -lGL -lpthread -I deps/pugl -std=gnu99
+ 
+ osx:
+@@ -25,12 +20,12 @@ osx:
+ 	cd deps/pugl         && python2 ./waf configure --no-cairo --static
+ #	cd deps/pugl         && python2 ./waf configure --no-cairo --static --debug
+ 	cd deps/pugl         && python2 ./waf
+-	cd src/osc-bridge    && CFLAGS="-I ../../deps/$(UV_DIR)/include " make lib
++	cd src/osc-bridge    && make lib
+ 	cd mruby             && MRUBY_CONFIG=../build_config.rb rake
+ 	$(CC) -shared -o libzest.so `find mruby/build/host -type f | grep -e "\.o$$" | grep -v bin` ./deps/libnanovg.a \
+ 		./deps/libnanovg.a \
+ 		src/osc-bridge/libosc-bridge.a \
+-		./deps/$(UV_DIR)/.libs/libuv.a  -lm -framework OpenGL -lpthread
++		-luv -lm -framework OpenGL -lpthread
+ 	$(CC) test-libversion.c deps/pugl/build/libpugl-0.a -ldl -o zest -framework OpenGL -framework AppKit -lpthread -I deps/pugl -std=gnu99
+ 
+ windows:
+@@ -38,38 +33,14 @@ windows:
+ 	$(AR) rc deps/libnanovg.a deps/nanovg/src/*.o
+ 	cd deps/pugl         && CFLAGS="-mstackrealign" python2 ./waf configure --no-cairo --static --target=win32
+ 	cd deps/pugl         && python2 ./waf
+-	cd src/osc-bridge    && CFLAGS="-mstackrealign -I ../../deps/$(UV_DIR)/include " make lib
++	cd src/osc-bridge    && CFLAGS="-mstackrealign" make lib
+ 	cd mruby             && WINDOWS=1 MRUBY_CONFIG=../build_config.rb rake
+ 	$(CC) -mstackrealign -shared -o libzest.dll -static-libgcc `find mruby/build/w64 -type f | grep -e "\.o$$" | grep -v bin` \
+         ./deps/libnanovg.a \
+         src/osc-bridge/libosc-bridge.a \
+-        ./deps/libuv-win.a \
+-        -lm -lpthread -lws2_32 -lkernel32 -lpsapi -luserenv -liphlpapi -lglu32 -lgdi32 -lopengl32
++        -luv -lm -lpthread -lws2_32 -lkernel32 -lpsapi -luserenv -liphlpapi -lglu32 -lgdi32 -lopengl32
+ 	$(CC) -mstackrealign -DWIN32 test-libversion.c deps/pugl/build/libpugl-0.a -o zest.exe -lpthread -I deps/pugl -std=c99 -lws2_32 -lkernel32 -lpsapi -luserenv -liphlpapi -lglu32 -lgdi32 -lopengl32
+ 
+-
+-builddep: deps/libuv.a
+-deps/libuv.a:
+-	cd deps/$(UV_DIR)    && ./autogen.sh
+-	cd deps/$(UV_DIR)    && CFLAGS=-fPIC ./configure
+-	cd deps/$(UV_DIR)    && CFLAGS=-fPIC make
+-	cp deps/$(UV_DIR)/.libs/libuv.a deps/
+-
+-builddepwin: deps/libuv-win.a
+-deps/libuv-win.a:
+-	cd deps/$(UV_DIR)   && ./autogen.sh
+-	cd deps/$(UV_DIR)   && CFLAGS="-mstackrealign" ./configure  --host=x86_64-w64-mingw32
+-	cd deps/$(UV_DIR)   && LD=x86_64-w64-mingw32-gcc make
+-	cp deps/$(UV_DIR)/.libs/libuv.a deps/libuv-win.a
+-
+-deps/$(UV_DIR):
+-	cd deps              && wget -4 $(UV_URL) && tar xvf $(UV_FILE)
+-setup: deps/$(UV_DIR)
+-
+-setupwin:
+-	cd deps              && wget -4 $(UV_URL)
+-	cd deps              && tar xvf $(UV_FILE)
+-
+ push:
+ 	cd src/osc-bridge      && git push
+ 	cd src/mruby-qml-parse  && git push
+diff --git a/build_config.rb b/build_config.rb
+index 00f1f69..11ac15b 100644
+--- a/build_config.rb
++++ b/build_config.rb
+@@ -96,7 +96,6 @@ build_type.new(build_name) do |conf|
+   conf.cc do |cc|
+       cc.include_paths << "#{`pwd`.strip}/../deps/nanovg/src"
+       cc.include_paths << "#{`pwd`.strip}/../deps/pugl/"
+-      cc.include_paths << "#{`pwd`.strip}/../deps/libuv-v1.9.1/include/"
+       cc.include_paths << "/usr/share/mingw-w64/include/" if windows
+       cc.include_paths << "/usr/x86_64-w64-mingw32/include/" if windows
+       cc.flags << "-DLDBL_EPSILON=1e-6" if windows
+@@ -117,14 +116,14 @@ build_type.new(build_name) do |conf|
+       linker.flags_after_libraries  << "#{`pwd`.strip}/../deps/pugl/build/libpugl-0.a"
+       linker.flags_after_libraries  << "#{`pwd`.strip}/../deps/libnanovg.a"
+       if(!windows)
+-        linker.flags_after_libraries  << "#{`pwd`.strip}/../deps/libuv.a"
++        linker.flags_after_libraries  << "-luv"
+         if(ENV['OS'] != "Mac")
+           linker.libraries << 'GL'
+           linker.libraries << 'X11'
+         end
+         linker.flags_after_libraries  << "-lpthread -ldl -lm"
+       else
+-        linker.flags_after_libraries  << "#{`pwd`.strip}/../deps/libuv-win.a"
++        linker.flags_after_libraries  << "-luv"
+         linker.flags_after_libraries  << "-lws2_32 -lkernel32 -lpsapi -luserenv -liphlpapi"
+         linker.flags_after_libraries  << "-lglu32 -lgdi32 -lopengl32"
+       end
diff --git a/pkgs/applications/blockchains/lndconnect/default.nix b/pkgs/applications/blockchains/lndconnect/default.nix
new file mode 100644
index 000000000000..0d6f33ca3ac8
--- /dev/null
+++ b/pkgs/applications/blockchains/lndconnect/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildGoPackage, fetchFromGitHub }:
+buildGoPackage rec {
+  pname = "lndconnect";
+  version = "0.2.0";
+
+  goPackagePath = "github.com/LN-Zap/lndconnect";
+
+  src = fetchFromGitHub {
+    owner = "LN-Zap";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0zp23vp4i4csc6x1b6z39rqcmknxd508x6clr8ckdj2fwjwkyf5a";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    description = "Generate QRCode to connect apps to lnd Resources";
+    license = licenses.mit;
+    homepage = "https://github.com/LN-Zap/lndconnect";
+    maintainers = [ maintainers.xwvvvvwx ];
+    platforms = platforms.linux;
+  };
+}
+
diff --git a/pkgs/applications/blockchains/lndconnect/deps.nix b/pkgs/applications/blockchains/lndconnect/deps.nix
new file mode 100644
index 000000000000..5a31f0d57057
--- /dev/null
+++ b/pkgs/applications/blockchains/lndconnect/deps.nix
@@ -0,0 +1,129 @@
+[
+  {
+    goPackagePath = "github.com/Baozisoftware/qrcode-terminal-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Baozisoftware/qrcode-terminal-go";
+      rev = "c0650d8dff0f053901ff16185217b950d5e7743c";
+      sha256 = "166h9zy9y7ygayhybg7d080hpdcf1mvkf3rwnq5lqg8i3cg71s7b";
+    };
+  }
+  {
+    goPackagePath = "github.com/btcsuite/btcd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/btcsuite/btcd";
+      rev = "e9a51e8dcd673c563a549676ebd4384b0318a9b7";
+      sha256 = "053pdhhycls7cpygg4rhc0y2p937ni4cgxylgxd1zpwffqdjsxrs";
+    };
+  }
+  {
+    goPackagePath = "github.com/btcsuite/btclog";
+    fetch = {
+      type = "git";
+      url = "https://github.com/btcsuite/btclog";
+      rev = "84c8d2346e9fc8c7b947e243b9c24e6df9fd206a";
+      sha256 = "02dl46wcnfpg9sqvg0ipipkpnd7lrf4fnvb9zy56jqa7mfcwc7wk";
+    };
+  }
+  {
+    goPackagePath = "github.com/btcsuite/btcutil";
+    fetch = {
+      type = "git";
+      url = "https://github.com/btcsuite/btcutil";
+      rev = "063c4115b3a9a7201e82447875383890698abcb6";
+      sha256 = "12dpy5ipmd751xb71hcmrl9xyl89r5rflnrvypnz1irairfqwjwm";
+    };
+  }
+  {
+    goPackagePath = "github.com/glendc/go-external-ip";
+    fetch = {
+      type = "git";
+      url = "https://github.com/glendc/go-external-ip";
+      rev = "c872357d968e33d5d9c47ea2c603f3b411150ecc";
+      sha256 = "1h9cdhab4fapa2p1r8sgl1pxv4qi1zskw8x0pj93a81y03zzr2l1";
+    };
+  }
+  {
+    goPackagePath = "github.com/jessevdk/go-flags";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jessevdk/go-flags";
+      rev = "c17162fe8fd74f119ff938c5c67af63e3bac5ded";
+      sha256 = "0byp3f79b0399n7g6nm59afb6gj9cknfqgfqadvpppv7lvnd34jf";
+    };
+  }
+  {
+    goPackagePath = "github.com/lightningnetwork/lnd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/lightningnetwork/lnd";
+      rev = "fd962d322ae2a913cc357dbb63382f22a9a0a6ce";
+      sha256 = "0yj2vqb9qg5v0rbchkpwhhw51rp31z76zchhhbc837sz8l8lryra";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-colorable";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-colorable";
+      rev = "f6c00982823144337e56cdb71c712eaac151d29c";
+      sha256 = "08y5c01bvyqxraj3wc0di80gbp87178rsshb74x0p3m7wwfv82l3";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev = "cb30d6282491c185f77d9bec5d25de1bb61a06bc";
+      sha256 = "0v59mv94acd2m72q8adhigxkx1vn38l5h0d8hp0nxga2v9f3v8kd";
+    };
+  }
+  {
+    goPackagePath = "github.com/miekg/dns";
+    fetch = {
+      type = "git";
+      url = "https://github.com/miekg/dns";
+      rev = "7a5f1127f7f4e461b7400d6a9df1bc523e7448fd";
+      sha256 = "1xwg6zwlxwkm1x121b3idir76h7wr9wmcdmg4vgj9hma903s63md";
+    };
+  }
+  {
+    goPackagePath = "github.com/skip2/go-qrcode";
+    fetch = {
+      type = "git";
+      url = "https://github.com/skip2/go-qrcode";
+      rev = "da1b6568686e89143e94f980a98bc2dbd5537f13";
+      sha256 = "0pghd6y2x8a5fqy4rjn4d8j5jcslb236naycdza5an7vyvinsgs9";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "5c72a883971a4325f8c62bf07b6d38c20ea47a6a";
+      sha256 = "1cimmqpajys001x6yq8ycklc4w34y7iwrksv7ayv7m7fgzhcjn3d";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "05aa5d4ee32165add31ddef9d5d3946713e5dc5e";
+      sha256 = "1v532mdb32h2gan6lc9ssya2v1lk6nzyzqvxn5nkbxij9x4v1jkl";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "9d91bd62050c7b3011b7df0d2a4daa0042684420";
+      sha256 = "0d2jjd7r0zwakd1d2g2qm59w6jc6sgg0sal5gc626i8nn9adj2jg";
+    };
+  }
+]
+
diff --git a/pkgs/applications/editors/emacs-modes/melpa-packages.nix b/pkgs/applications/editors/emacs-modes/melpa-packages.nix
index 5a02c97b6d01..e7bd38f67b0d 100644
--- a/pkgs/applications/editors/emacs-modes/melpa-packages.nix
+++ b/pkgs/applications/editors/emacs-modes/melpa-packages.nix
@@ -143,11 +143,6 @@ let
 
         flycheck-rtags = fix-rtags super.flycheck-rtags;
 
-        gnuplot = super.gnuplot.overrideAttrs (old: {
-          nativeBuildInputs =
-            (old.nativeBuildInputs or [ ]) ++ [ pkgs.autoreconfHook ];
-        });
-
         pdf-tools = super.pdf-tools.overrideAttrs (old: {
           nativeBuildInputs = [ external.pkgconfig ];
           buildInputs = with external; old.buildInputs ++ [ autoconf automake libpng zlib poppler ];
diff --git a/pkgs/applications/editors/ghostwriter/default.nix b/pkgs/applications/editors/ghostwriter/default.nix
index 8c1b95a1d26e..aa67124c1146 100644
--- a/pkgs/applications/editors/ghostwriter/default.nix
+++ b/pkgs/applications/editors/ghostwriter/default.nix
@@ -2,13 +2,13 @@
 
 mkDerivation rec {
   pname = "ghostwriter";
-  version = "1.8.1";
+  version = "2.0.0-rc3";
 
   src = fetchFromGitHub {
     owner = "wereturtle";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "0jc6szfh5sdnafhwsr1xv7cn1fznniq58bix41hb9wlbkvq7wzi6";
+    rev = version;
+    sha256 = "sha256-Ag97iE++f3nG2zlwqn0qxSL9RpF8O3XWH9NtQ5kFuWg=";
   };
 
   nativeBuildInputs = [ qmake pkgconfig qttools ];
@@ -20,6 +20,7 @@ mkDerivation rec {
     homepage = src.meta.homepage;
     license = licenses.gpl3Plus;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ dotlambda ];
+    maintainers = with maintainers; [ dotlambda erictapen ];
+    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/applications/graphics/hello-wayland/default.nix b/pkgs/applications/graphics/hello-wayland/default.nix
new file mode 100644
index 000000000000..b11e2be9daf6
--- /dev/null
+++ b/pkgs/applications/graphics/hello-wayland/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, lib, fetchFromGitHub
+, imagemagick, pkg-config, wayland, wayland-protocols
+}:
+
+stdenv.mkDerivation {
+  pname = "hello-wayland-unstable";
+  version = "2020-07-27";
+
+  src = fetchFromGitHub {
+    owner = "emersion";
+    repo = "hello-wayland";
+    rev = "501d0851cfa7f21c780c0eb52f0a6b23f02918c5";
+    sha256 = "0dz6przqp57kw8ycja3gw6jp9x12217nwbwdpgmvw7jf0lzhk4xr";
+  };
+
+  nativeBuildInputs = [ imagemagick pkg-config ];
+  buildInputs = [ wayland wayland-protocols ];
+
+  installPhase = ''
+    runHook preBuild
+    mkdir -p $out/bin
+    install hello-wayland $out/bin
+    runHook postBuild
+  '';
+
+  meta = with lib; {
+    description = "Hello world Wayland client";
+    homepage = "https://github.com/emersion/hello-wayland";
+    maintainers = with maintainers; [ qyliss ];
+    license = licenses.mit;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/graphics/imv/default.nix b/pkgs/applications/graphics/imv/default.nix
index faf748730583..71e156881c40 100644
--- a/pkgs/applications/graphics/imv/default.nix
+++ b/pkgs/applications/graphics/imv/default.nix
@@ -1,61 +1,102 @@
-{ asciidoc
+{ stdenv
+, lib
+, fetchFromGitHub
+, asciidoc
 , cmocka
 , docbook_xsl
-, fetchFromGitHub
+, libxslt
 , fontconfig
-, freeimage
+, meson
+, ninja
+, pkgconfig
 , icu
+, pango
+, inih
+, withWindowSystem ? "all"
+, xorg
+, libxkbcommon
 , libGLU
-, libheif
+, wayland
+, withBackends ? [ "freeimage" "libtiff" "libjpeg" "libpng" "librsvg" "libnsgif" "libheif" ]
+, freeimage
+, libtiff
 , libjpeg_turbo
 , libpng
 , librsvg
-, libtiff
-, libxkbcommon
-, libxslt
 , netsurf
-, pango
-, pkgconfig
-, stdenv
-, wayland
+, libheif
 }:
 
+let
+  windowSystems = {
+    all = windowSystems.x11 ++ windowSystems.wayland;
+    x11 = [ libGLU xorg.libxcb xorg.libX11 ];
+    wayland = [ wayland ];
+  };
+
+  backends = {
+    inherit freeimage libtiff libpng librsvg libheif;
+    libjpeg = libjpeg_turbo;
+    inherit (netsurf) libnsgif;
+  };
+
+  backendFlags = builtins.map
+    (b: if builtins.elem b withBackends
+        then "-D${b}=enabled"
+        else "-D${b}=disabled")
+    (builtins.attrNames backends);
+in
+
+# check that given window system is valid
+assert lib.assertOneOf "withWindowSystem" withWindowSystem
+  (builtins.attrNames windowSystems);
+# check that every given backend is valid
+assert builtins.all
+  (b: lib.assertOneOf "each backend" b (builtins.attrNames backends))
+  withBackends;
+
 stdenv.mkDerivation rec {
   pname = "imv";
-  version = "4.1.0";
+  version = "4.2.0";
 
   src = fetchFromGitHub {
     owner = "eXeC64";
     repo = "imv";
     rev = "v${version}";
-    sha256 = "0gk8g178i961nn3bls75a8qpv6wvfvav6hd9lxca1skaikd33zdx";
+    sha256 = "07pcpppmfvvj0czfvp1cyq03ha0jdj4whl13lzvw37q3vpxs5qqh";
   };
 
-  nativeBuildInputs = [ asciidoc cmocka docbook_xsl libxslt ];
+  mesonFlags = [
+    "-Dwindows=${withWindowSystem}"
+    "-Dtest=enabled"
+    "-Dman=enabled"
+  ] ++ backendFlags;
+
+  nativeBuildInputs = [
+    asciidoc
+    cmocka
+    docbook_xsl
+    libxslt
+    meson
+    ninja
+    pkgconfig
+  ];
 
   buildInputs = [
-    freeimage
     icu
-    libGLU
-    libjpeg_turbo
-    librsvg
     libxkbcommon
-    netsurf.libnsgif
     pango
-    pkgconfig
-    wayland
-  ];
-
-  installFlags = [ "PREFIX=$(out)" "CONFIGPREFIX=$(out)/etc" ];
-
-  makeFlags = [ "BACKEND_LIBJPEG=yes" "BACKEND_LIBNSGIF=yes" ];
+    inih
+  ] ++ windowSystems."${withWindowSystem}"
+    ++ builtins.map (b: backends."${b}") withBackends;
 
-  postFixup = ''
+  postFixup = lib.optionalString (withWindowSystem == "all") ''
     # The `bin/imv` script assumes imv-wayland or imv-x11 in PATH,
     # so we have to fix those to the binaries we installed into the /nix/store
 
-    sed -i "s|\bimv-wayland\b|$out/bin/imv-wayland|" $out/bin/imv
-    sed -i "s|\bimv-x11\b|$out/bin/imv-x11|" $out/bin/imv
+    substituteInPlace "$out/bin/imv" \
+      --replace "imv-wayland" "$out/bin/imv-wayland" \
+      --replace "imv-x11" "$out/bin/imv-x11"
   '';
 
   doCheck = true;
diff --git a/pkgs/applications/graphics/monado/default.nix b/pkgs/applications/graphics/monado/default.nix
index 61343b3b1b46..7502ab69c320 100644
--- a/pkgs/applications/graphics/monado/default.nix
+++ b/pkgs/applications/graphics/monado/default.nix
@@ -1,23 +1,29 @@
 { stdenv
 , fetchFromGitLab
 , fetchpatch
+, writeText
 , cmake
+, doxygen
+, glslang
 , pkg-config
 , python3
 , SDL2
 , dbus
 , eigen
 , ffmpeg
-, glslang
+, gst-plugins-base
+, gstreamer
 , hidapi
 , libGL
 , libXau
 , libXdmcp
 , libXrandr
 , libffi
+, libjpeg
 # , librealsense
 , libsurvive
 , libusb1
+, libuv
 , libuvc
 , libv4l
 , libxcb
@@ -29,6 +35,11 @@
 , wayland
 , wayland-protocols
 , zlib
+# Set as 'false' to build monado without service support, i.e. allow VR
+# applications linking against libopenxr_monado.so to use OpenXR standalone
+# instead of via the monado-service program. For more information see:
+# https://gitlab.freedesktop.org/monado/monado/-/blob/master/doc/targets.md#xrt_feature_service-disabled
+, serviceSupport ? true
 }:
 
 stdenv.mkDerivation rec {
@@ -51,23 +62,36 @@ stdenv.mkDerivation rec {
     })
   ];
 
-  nativeBuildInputs = [ cmake pkg-config python3 ];
+  nativeBuildInputs = [
+    cmake
+    doxygen
+    glslang
+    pkg-config
+    python3
+  ];
+
+  cmakeFlags = [
+    "-DXRT_FEATURE_SERVICE=${if serviceSupport then "ON" else "OFF"}"
+  ];
 
   buildInputs = [
     SDL2
     dbus
     eigen
     ffmpeg
-    glslang
+    gst-plugins-base
+    gstreamer
     hidapi
     libGL
     libXau
     libXdmcp
     libXrandr
+    libjpeg
     libffi
     # librealsense.dev - see below
     libsurvive
     libusb1
+    libuv
     libuvc
     libv4l
     libxcb
@@ -91,11 +115,16 @@ stdenv.mkDerivation rec {
   # for some reason cmake is trying to use ${librealsense}/include
   # instead of ${librealsense.dev}/include as an include directory
 
+  # Help openxr-loader find this runtime
+  setupHook = writeText "setup-hook" ''
+    export XDG_CONFIG_DIRS=@out@/etc/xdg''${XDG_CONFIG_DIRS:+:''${XDG_CONFIG_DIRS}}
+  '';
+
   meta = with stdenv.lib; {
     description = "Open source XR runtime";
     homepage = "https://monado.freedesktop.org/";
     license = licenses.boost;
-    maintainers = with maintainers; [ prusnak ];
+    maintainers = with maintainers; [ expipiplus1 prusnak ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/graphics/mtpaint/default.nix b/pkgs/applications/graphics/mtpaint/default.nix
index 91278c9881fe..c002e2a8d054 100644
--- a/pkgs/applications/graphics/mtpaint/default.nix
+++ b/pkgs/applications/graphics/mtpaint/default.nix
@@ -1,26 +1,28 @@
 { stdenv, fetchFromGitHub
-, pkgconfig
-, freetype, giflib, gtk2, lcms2, libjpeg, libpng, libtiff, openjpeg, gifsicle
+, pkg-config
+, freetype, giflib, gtk3, lcms2, libjpeg, libpng, libtiff, openjpeg, gifsicle
 }:
 
 stdenv.mkDerivation rec {
   p_name  = "mtPaint";
-  ver_maj = "3.49";
-  ver_min = "12";
+  ver_maj = "3.50";
+  ver_min = "01";
   name = "${p_name}-${ver_maj}.${ver_min}";
 
   src = fetchFromGitHub {
     owner = "wjaguar";
     repo = p_name;
-    rev = "6aed1b0441f99055fc7d475942f8bd5cb23c41f8";
-    sha256 = "0bvf623g0n2ifijcxv1nw0z3wbs2vhhdky4n04ywsbjlykm44nd1";
+    rev = "a4675ff5cd9fcd57d291444cb9f332b48f11243f";
+    sha256 = "04wqxz8i655gz5rnz90cksy8v6m2jhcn1j8rzhqpp5xhawlmq24y";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
-    freetype giflib gtk2 lcms2 libjpeg libpng libtiff openjpeg gifsicle
+    freetype giflib gtk3 lcms2 libjpeg libpng libtiff openjpeg gifsicle
   ];
 
+  configureFlags = [ "gtk3" "intl" "man" ];
+
   meta = {
     description = "A simple GTK painting program";
     longDescription = ''
@@ -33,7 +35,7 @@ stdenv.mkDerivation rec {
       GNU/Linux, Windows and older PC hardware.
     '';
     homepage = "http://mtpaint.sourceforge.net/";
-    license = stdenv.lib.licenses.gpl3;
+    license = stdenv.lib.licenses.gpl3Plus;
     platforms = stdenv.lib.platforms.linux;
     maintainers = [ stdenv.lib.maintainers.vklquevs ];
   };
diff --git a/pkgs/applications/graphics/nufraw/default.nix b/pkgs/applications/graphics/nufraw/default.nix
new file mode 100644
index 000000000000..678bc12278df
--- /dev/null
+++ b/pkgs/applications/graphics/nufraw/default.nix
@@ -0,0 +1,71 @@
+{ stdenv
+, fetchurl
+, lib
+
+, autoreconfHook
+, bzip2
+, cfitsio
+, exiv2
+, gettext
+, gtk2
+, gtkimageview
+, lcms2
+, lensfun
+, libjpeg
+, libtiff
+, perl
+, pkg-config
+, zlib
+
+, addThumbnailer ? false
+}:
+
+stdenv.mkDerivation rec {
+  pname = "nufraw";
+  version = "0.43-3";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/nufraw/nufraw-${version}.tar.gz";
+    sha256 = "0b63qvw9r8kaqw36bk3a9zwxc41h8fr6498indkw4glrj0awqz9c";
+  };
+
+  nativeBuildInputs = [ autoreconfHook gettext perl pkg-config ];
+
+  buildInputs = [
+    bzip2
+    cfitsio
+    exiv2
+    gtk2
+    gtkimageview
+    lcms2
+    lensfun
+    libjpeg
+    libtiff
+    zlib
+  ];
+
+  configureFlags = [
+    "--enable-contrast"
+    "--enable-dst-correction"
+  ];
+
+  postInstall = lib.optionalString addThumbnailer ''
+    mkdir -p $out/share/thumbnailers
+    substituteAll ${./nufraw.thumbnailer} $out/share/thumbnailers/${pname}.thumbnailer
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://nufraw.sourceforge.io/";
+    description = "Utility to read and manipulate raw images from digital cameras";
+    longDescription =
+      ''
+        A new version of the popular raw digital images manipulator ufraw.
+        Forks from the version 0.23 of ufraw (that's why the first nufraw version is the 0.24).
+        Nufraw offers the same features (gimp plugin, batch, ecc) and the same quality of
+        ufraw in a brand new improved user interface.
+      '';
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ asbachb ];
+    platforms   = [ "x86_64-linux" "i686-linux" ];
+  };
+}
diff --git a/pkgs/applications/graphics/nufraw/nufraw.thumbnailer b/pkgs/applications/graphics/nufraw/nufraw.thumbnailer
new file mode 100644
index 000000000000..34b2adc43aee
--- /dev/null
+++ b/pkgs/applications/graphics/nufraw/nufraw.thumbnailer
@@ -0,0 +1,4 @@
+[Thumbnailer Entry]
+TryExec=@out@/bin/nufraw-batch
+Exec=@out@/bin/nufraw-batch --silent --size %s --out-type=png --noexif --output=%o --embedded-image %i
+MimeType=image/x-canon-cr2;image/x-canon-crw;image/x-minolta-mrw;image/x-nikon-nef;image/x-pentax-pef;image/x-panasonic-rw2;image/x-panasonic-raw2;image/x-samsung-srw;image/x-olympus-orf;image/x-sony-arw
diff --git a/pkgs/applications/graphics/xrgears/default.nix b/pkgs/applications/graphics/xrgears/default.nix
new file mode 100644
index 000000000000..33aa3ae3575e
--- /dev/null
+++ b/pkgs/applications/graphics/xrgears/default.nix
@@ -0,0 +1,48 @@
+{ stdenv
+, fetchFromGitLab
+, glm
+, glslang
+, meson
+, ninja
+, openxr-loader
+, pkg-config
+, vulkan-headers
+, vulkan-loader
+, xxd
+}:
+
+stdenv.mkDerivation rec {
+  pname = "xrgears";
+  version = "unstable-2020-04-15";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.freedesktop.org";
+    owner = "monado";
+    repo = "demos/xrgears";
+    rev = "d0bee35fbf8f181e8313f1ead13d88c4fb85c154";
+    sha256 = "1k0k8dkclyiav99kf0933kyd2ymz3hs1p0ap2wbciq9s62jgz29i";
+  };
+
+  nativeBuildInputs = [
+    glslang
+    meson
+    ninja
+    pkg-config
+    xxd
+  ];
+
+  buildInputs = [
+    glm
+    openxr-loader
+    vulkan-headers
+    vulkan-loader
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://gitlab.freedesktop.org/monado/demos/xrgears";
+    description = "An OpenXR example using Vulkan for rendering";
+    platforms = platforms.linux;
+    license = licenses.mit;
+    maintainers = with maintainers; [ expipiplus1 ];
+  };
+}
diff --git a/pkgs/applications/misc/blender/default.nix b/pkgs/applications/misc/blender/default.nix
index 9796aef9b7cb..e5eaabdc399b 100644
--- a/pkgs/applications/misc/blender/default.nix
+++ b/pkgs/applications/misc/blender/default.nix
@@ -1,4 +1,4 @@
-{ config, stdenv, lib, fetchurl, boost, cmake, ffmpeg, gettext, glew
+{ config, stdenv, lib, fetchurl, fetchzip, boost, cmake, ffmpeg, gettext, glew
 , ilmbase, libXi, libX11, libXext, libXrender
 , libjpeg, libpng, libsamplerate, libsndfile
 , libtiff, libGLU, libGL, openal, opencolorio, openexr, openimagedenoise, openimageio2, openjpeg, python3Packages
@@ -13,9 +13,14 @@
 }:
 
 with lib;
+let
+  python = python3Packages.python;
+  optix = fetchzip {
+    url = "https://developer.download.nvidia.com/redist/optix/v7.0/OptiX-7.0.0-include.zip";
+    sha256 = "1b3ccd3197anya2bj3psxdrvrpfgiwva5zfv2xmyrl73nb2dvfr7";
+  };
 
-let python = python3Packages.python; in
-
+in
 stdenv.mkDerivation rec {
   pname = "blender";
   version = "2.91.0";
@@ -111,7 +116,11 @@ stdenv.mkDerivation rec {
     # Clang doesn't support "-export-dynamic"
     ++ optional stdenv.cc.isClang "-DPYTHON_LINKFLAGS="
     ++ optional jackaudioSupport "-DWITH_JACK=ON"
-    ++ optional cudaSupport "-DWITH_CYCLES_CUDA_BINARIES=ON";
+    ++ optional cudaSupport [
+      "-DWITH_CYCLES_CUDA_BINARIES=ON"
+      "-DWITH_CYCLES_DEVICE_OPTIX=ON"
+      "-DOPTIX_ROOT_DIR=${optix}"
+    ];
 
   NIX_CFLAGS_COMPILE = "-I${ilmbase.dev}/include/OpenEXR -I${python}/include/${python.libPrefix}";
 
@@ -144,7 +153,8 @@ stdenv.mkDerivation rec {
     homepage = "https://www.blender.org";
     # They comment two licenses: GPLv2 and Blender License, but they
     # say: "We've decided to cancel the BL offering for an indefinite period."
-    license = licenses.gpl2Plus;
+    # OptiX, enabled with cudaSupport, is non-free.
+    license = with licenses; [ gpl2Plus ] ++ optional cudaSupport unfree;
     platforms = [ "x86_64-linux" "x86_64-darwin" ];
     maintainers = with maintainers; [ goibhniu veprbl ];
   };
diff --git a/pkgs/applications/misc/dasel/default.nix b/pkgs/applications/misc/dasel/default.nix
index 7bb61a3addde..c8f7016435ef 100644
--- a/pkgs/applications/misc/dasel/default.nix
+++ b/pkgs/applications/misc/dasel/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "dasel";
-  version = "1.12.0";
+  version = "1.12.2";
 
   src = fetchFromGitHub {
     owner = "TomWright";
     repo = pname;
     rev = "v${version}";
-    sha256 = "69igz0Q7pT0f6PsbZWHcwUiTKRTTzj7r5E6E5ExUoJo=";
+    sha256 = "/WB/SsOih0N5P4cUAD6zkCajplzZ/Jez0H80+CG08rc=";
   };
 
   vendorSha256 = "BdX4DO77mIf/+aBdkNVFUzClsIml1UMcgvikDbbdgcY=";
diff --git a/pkgs/applications/misc/gpsbabel/default.nix b/pkgs/applications/misc/gpsbabel/default.nix
index 6b8cb66c78b7..a95ffbbb59aa 100644
--- a/pkgs/applications/misc/gpsbabel/default.nix
+++ b/pkgs/applications/misc/gpsbabel/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, fetchpatch, libusb1, qtbase, zlib, IOKit, which }:
+{ lib, stdenv, fetchFromGitHub, fetchpatch, libusb1, qtbase, zlib, IOKit, which, expat }:
 
 stdenv.mkDerivation rec {
   pname = "gpsbabel";
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ libusb1 qtbase zlib ]
     ++ lib.optionals stdenv.isDarwin [ IOKit ];
 
-  checkInputs = [ which ]; # Avoid ./testo.d/kml.test: line 74: which: command not found. Skipping KML validation phase.
+  checkInputs = [ expat.dev which ]; # Avoid ./testo.d/kml.test: line 74: which: command not found. Skipping KML validation phase.
 
   /* FIXME: Building the documentation, with "make doc", requires this:
 
@@ -43,6 +43,8 @@ stdenv.mkDerivation rec {
     patchShebangs testo
     substituteInPlace testo \
       --replace "-x /usr/bin/hexdump" ""
+
+    rm -v testo.d/alantrl.test
   ''
     # The raymarine and gtm tests fail on i686 despite -ffloat-store.
   + lib.optionalString stdenv.isi686 "rm -v testo.d/raymarine.test testo.d/gtm.test;"
diff --git a/pkgs/applications/misc/hugo/default.nix b/pkgs/applications/misc/hugo/default.nix
index 3ded9f013fbc..d614360bf44d 100644
--- a/pkgs/applications/misc/hugo/default.nix
+++ b/pkgs/applications/misc/hugo/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "hugo";
-  version = "0.79.0";
+  version = "0.80.0";
 
   src = fetchFromGitHub {
     owner = "gohugoio";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0i9c12w0jlfrqb5gygfn20rn41m7qy6ab03n779wbzwfqqz85mj6";
+    sha256 = "0xs9y5lj0mya6ag625x8j91mn9l9r13gxaqxyvl1fl40y2yjz1zm";
   };
 
-  vendorSha256 = "0jb6aqdv9yx7fxbkgd73rx6kvxagxscrin5b5bal3ig7ys1ghpsp";
+  vendorSha256 = "172mcs8p43bsdkd2hxg9qn6018fh8f36kxx0vgnq5q6fqsb6s1f6";
 
   doCheck = false;
 
diff --git a/pkgs/applications/misc/jekyll/full/Gemfile b/pkgs/applications/misc/jekyll/full/Gemfile
index 8e7499bad61a..2e72350f7e5e 100644
--- a/pkgs/applications/misc/jekyll/full/Gemfile
+++ b/pkgs/applications/misc/jekyll/full/Gemfile
@@ -14,6 +14,7 @@ gem "jekyll-coffeescript"
 gem "jekyll-feed", "~> 0.9"
 gem "jekyll-gist"
 gem "jekyll-paginate"
+gem "jekyll-polyglot"
 gem "jekyll-redirect-from"
 gem "kramdown-syntax-coderay"
 gem "mime-types", "~> 3.0"
diff --git a/pkgs/applications/misc/jekyll/full/Gemfile.lock b/pkgs/applications/misc/jekyll/full/Gemfile.lock
index c4e759289d12..969909ca6d0a 100644
--- a/pkgs/applications/misc/jekyll/full/Gemfile.lock
+++ b/pkgs/applications/misc/jekyll/full/Gemfile.lock
@@ -64,6 +64,8 @@ GEM
       html-pipeline (~> 2.3)
       jekyll (>= 3.7, < 5.0)
     jekyll-paginate (1.1.0)
+    jekyll-polyglot (1.3.3)
+      jekyll (>= 3.0)
     jekyll-redirect-from (0.16.0)
       jekyll (>= 3.3, < 5.0)
     jekyll-sass-converter (2.1.0)
@@ -140,6 +142,7 @@ DEPENDENCIES
   jekyll-gist
   jekyll-mentions
   jekyll-paginate
+  jekyll-polyglot
   jekyll-redirect-from
   jekyll-seo-tag
   jekyll-sitemap
diff --git a/pkgs/applications/misc/jekyll/full/gemset.nix b/pkgs/applications/misc/jekyll/full/gemset.nix
index c21d705fd267..bfbe428c861d 100644
--- a/pkgs/applications/misc/jekyll/full/gemset.nix
+++ b/pkgs/applications/misc/jekyll/full/gemset.nix
@@ -297,6 +297,17 @@
     };
     version = "1.1.0";
   };
+  jekyll-polyglot = {
+    dependencies = ["jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "4ad9140733250b65bc1ffab84650c588d036d23129e82f0349d31e56f1fe10a8";
+      type = "gem";
+    };
+    version = "1.3.3";
+  };
   jekyll-redirect-from = {
     dependencies = ["jekyll"];
     groups = ["default"];
@@ -723,4 +734,4 @@
     };
     version = "2.4.2";
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/applications/misc/obsidian/default.nix b/pkgs/applications/misc/obsidian/default.nix
index 3379e2e9b9d2..bfe215487afa 100644
--- a/pkgs/applications/misc/obsidian/default.nix
+++ b/pkgs/applications/misc/obsidian/default.nix
@@ -30,12 +30,12 @@ let
 
 in stdenv.mkDerivation rec {
   pname = "obsidian";
-  version = "0.10.1";
+  version = "0.10.6";
 
   src = fetchurl {
     url =
       "https://github.com/obsidianmd/obsidian-releases/releases/download/v${version}/obsidian-${version}.asar.gz";
-    sha256 = "wnCgW4EAcg0Oc1fqOZBYKN2g8N27riL+yonoIy0AfxA=";
+    sha256 = "KfGVc3nXu5ilYKQPLc5qaksTwsdhSVtty9CfjSoiCU8=";
   };
 
   nativeBuildInputs = [ makeWrapper graphicsmagick ];
diff --git a/pkgs/applications/misc/osmium-tool/default.nix b/pkgs/applications/misc/osmium-tool/default.nix
index 892038c252ae..78878d79553d 100644
--- a/pkgs/applications/misc/osmium-tool/default.nix
+++ b/pkgs/applications/misc/osmium-tool/default.nix
@@ -7,19 +7,20 @@
 , bzip2
 , expat
 , libosmium
+, lz4
 , protozero
 , zlib
 }:
 
 stdenv.mkDerivation rec {
   pname = "osmium-tool";
-  version = "1.12.1";
+  version = "1.13.0";
 
   src = fetchFromGitHub {
     owner = "osmcode";
     repo = "osmium-tool";
     rev = "v${version}";
-    sha256 = "13142hj8gfgj6w51a62hjzfmzic90xgrnnlnb70hpdqjy86bxv7j";
+    sha256 = "0rn67g4xf01i7pkxrdh87jdj2rzkw5pfkx5wkg9245z5yxjxhqj2";
   };
 
   nativeBuildInputs = [
@@ -33,6 +34,7 @@ stdenv.mkDerivation rec {
     bzip2
     expat
     libosmium
+    lz4
     protozero
     zlib
   ];
@@ -46,7 +48,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     description = "Multipurpose command line tool for working with OpenStreetMap data based on the Osmium library";
     homepage = "https://osmcode.org/osmium-tool/";
-    license = with licenses; [ gpl3 mit bsd3 ];
+    license = with licenses; [ gpl3Plus mit bsd3 ];
     maintainers = with maintainers; [ das-g ];
   };
 }
diff --git a/pkgs/applications/misc/rootbar/default.nix b/pkgs/applications/misc/rootbar/default.nix
new file mode 100644
index 000000000000..2eb3170b88cb
--- /dev/null
+++ b/pkgs/applications/misc/rootbar/default.nix
@@ -0,0 +1,45 @@
+{ stdenv
+, fetchhg
+, pkg-config
+, meson
+, ninja
+, gtk3
+, json_c
+, libpulseaudio
+, wayland
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "rootbar";
+  version = "unstable-2020-11-13";
+
+  src = fetchhg {
+    url = "https://hg.sr.ht/~scoopta/rootbar";
+    rev = "a018e10cfc5e";
+    sha256 = "sha256-t6oDIYCVaCxaYy4bS1vxESaFDNxsx5JQLQK77eVuafE=";
+  };
+
+  nativeBuildInputs = [
+    meson ninja pkg-config wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    json_c
+    libpulseaudio
+    wayland
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/alexays/waybar";
+    description = "A bar for Wayland WMs";
+    longDescription = ''
+      Root Bar is a bar for wlroots based wayland compositors such as sway and
+      was designed to address the lack of good bars for wayland.
+    '';
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/applications/misc/taskwarrior-tui/default.nix b/pkgs/applications/misc/taskwarrior-tui/default.nix
new file mode 100644
index 000000000000..682bc920a0e6
--- /dev/null
+++ b/pkgs/applications/misc/taskwarrior-tui/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, rustPlatform
+, fetchFromGitHub
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "taskwarrior-tui";
+  version = "0.9.5";
+
+  src = fetchFromGitHub {
+    owner = "kdheepak";
+    repo = "taskwarrior-tui";
+    rev = "v${version}";
+    sha256 = "1348ypjphm5f46civbrcxbbahwwl2j47z1hg8ndq1cg2bh5wb8kg";
+  };
+
+  # Because there's a test that requires terminal access
+  doCheck = false;
+
+  cargoSha256 = "11zpy3whzir9mlbvf0jyscqwj9z44a6s5i1bc2cnxyciqy9b57md";
+
+  meta = with stdenv.lib; {
+    description = "A terminal user interface for taskwarrior ";
+    homepage = "https://github.com/kdheepak/taskwarrior-tui";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ matthiasbeyer ];
+  };
+}
diff --git a/pkgs/applications/misc/zola/default.nix b/pkgs/applications/misc/zola/default.nix
index 377260a662db..63d5ba8d484d 100644
--- a/pkgs/applications/misc/zola/default.nix
+++ b/pkgs/applications/misc/zola/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "zola";
-  version = "0.12.2";
+  version = "0.13.0";
 
   src = fetchFromGitHub {
     owner = "getzola";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256:0fb227kgani32ljnw73a0h5zn5361z5lraf79y34a0chcby2qv35";
+    sha256 = "sha256-yTvFQWmNxoB+CNZLHGmzJq7mKuOUxUqV4g8PWlOlRbM=";
   };
 
-  cargoSha256 = "sha256:0ilfr32zcajag05qcpwi5ixz250s427i4xrjf4wrk7qy32bblnr5";
+  cargoSha256 = "sha256:19vijhcs1i02jhz68acil7psv3pcn0jzi1i4y2l05i4m3ayxivjf";
 
   nativeBuildInputs = [ cmake pkg-config ];
   buildInputs = [ openssl oniguruma ]
diff --git a/pkgs/applications/networking/appgate-sdp/default.nix b/pkgs/applications/networking/appgate-sdp/default.nix
new file mode 100644
index 000000000000..c56a6eb65825
--- /dev/null
+++ b/pkgs/applications/networking/appgate-sdp/default.nix
@@ -0,0 +1,169 @@
+{ alsaLib
+, at-spi2-atk
+, at-spi2-core
+, atk
+, bash
+, cairo
+, coreutils
+, cups
+, curl
+, dbus
+, dnsmasq
+, dpkg
+, e2fsprogs
+, expat
+, fetchurl
+, gdk-pixbuf
+, glib
+, gtk3
+, icu
+, iproute
+, krb5
+, lib
+, libX11
+, libXScrnSaver
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXext
+, libXfixes
+, libXi
+, libXrandr
+, libXrender
+, libXtst
+, libsecret
+, libuuid
+, libxcb
+, lttng-ust
+, makeWrapper
+, networkmanager
+, nspr
+, nss
+, openssl
+, pango
+, procps
+, python37
+, python37Packages
+, stdenv
+, systemd
+, zlib
+}:
+with stdenv.lib;
+let
+  deps = [
+    alsaLib
+    at-spi2-atk
+    at-spi2-core
+    atk
+    cairo
+    cups
+    curl
+    dbus
+    expat
+    gdk-pixbuf
+    glib
+    gtk3
+    icu
+    krb5
+    libX11
+    libXScrnSaver
+    libXcomposite
+    libXcursor
+    libXdamage
+    libXext
+    libXfixes
+    libXi
+    libXrandr
+    libXrender
+    libXtst
+    libsecret
+    libuuid
+    libxcb
+    lttng-ust
+    nspr
+    nss
+    openssl
+    pango
+    stdenv.cc.cc
+    systemd
+    zlib
+  ];
+  rpath = stdenv.lib.makeLibraryPath deps ;
+in
+stdenv.mkDerivation rec {
+  pname = "appgate-sdp";
+  version = "5.1.2";
+
+  src = fetchurl {
+    url = "https://bin.appgate-sdp.com/5.1/client/appgate-sdp_${version}_amd64.deb";
+    sha256 = "0v4vfibg1giml3vfz2w7qypqzymvfchi5qm6vfagah2vfbkw7xc2";
+  };
+
+  dontConfigure = true;
+  dontBuild = true;
+  enableParallelBuilding = true;
+
+  buildInputs = [
+    python37
+    python37Packages.dbus-python
+  ];
+
+  nativeBuildInputs = [
+    makeWrapper
+    dpkg
+  ];
+
+  unpackPhase = ''
+    dpkg-deb -x $src $out
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    ln -s "$out/opt/appgate/appgate" "$out/bin/appgate"
+    cp -r $out/usr/share $out/share
+
+    for file in $out/opt/appgate/linux/appgate-resolver.pre \
+                $out/opt/appgate/linux/appgate-dumb-resolver.pre \
+                $out/lib/systemd/system/appgatedriver.service \
+                $out/lib/systemd/system/appgate-dumb-resolver.service \
+                $out/lib/systemd/system/appgate-resolver.service
+    do
+      substituteInPlace $file \
+        --replace "/bin/sh" "${bash}/bin/sh" \
+        --replace "/opt/" "$out/opt/" \
+        --replace "/usr/sbin/dnsmasq" "${dnsmasq}/bin/dnsmasq" \
+        --replace "InaccessiblePaths=/mnt /srv /boot /media" "InaccessiblePaths=-/mnt -/srv -/boot -/media" \
+        --replace "cat" "${coreutils}/bin/cat" \
+        --replace "chattr" "${e2fsprogs}/bin/chattr" \
+        --replace "mv" "${coreutils}/bin/mv" \
+        --replace "pkill" "${procps}/bin/pkill"
+    done
+
+    substituteInPlace $out/opt/appgate/linux/nm.py --replace "/usr/sbin/dnsmasq" "${dnsmasq}/bin/dnsmasq"
+    substituteInPlace $out/opt/appgate/linux/set_dns \
+      --replace "service appgate-resolver stop" "${systemd.out}/bin/systemctl stop appgate-resolver" \
+      --replace "/etc/appgate.conf" "$out/etc/appgate.conf"
+
+  '';
+
+  postFixup = ''
+    find $out -type f -name "*.so" -exec patchelf --set-rpath '$ORIGIN:${rpath}' {} \;
+    for binary in $out/opt/appgate/appgate-driver \
+                  $out/opt/appgate/appgate \
+                  $out/opt/appgate/service/createdump \
+                  $out/opt/appgate/service/appgateservice.bin
+    do
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" --set-rpath "$ORIGIN:$out/opt/appgate/service/:$out/opt/appgate/:${rpath}" $binary
+    done
+
+    wrapProgram $out/opt/appgate/appgate-driver --prefix PATH : ${stdenv.lib.makeBinPath [ iproute networkmanager dnsmasq ]}
+    wrapProgram $out/opt/appgate/linux/set_dns --set PYTHONPATH $PYTHONPATH
+  '';
+  meta = with stdenv.lib; {
+    description = "Appgate SDP (Software Defined Perimeter) desktop client";
+    homepage = https://www.appgate.com/support/software-defined-perimeter-support;
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ymatsiuk ];
+  };
+}
diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.json b/pkgs/applications/networking/browsers/chromium/upstream-info.json
index 5be89852b389..8baa7cc7b4fb 100644
--- a/pkgs/applications/networking/browsers/chromium/upstream-info.json
+++ b/pkgs/applications/networking/browsers/chromium/upstream-info.json
@@ -1,8 +1,8 @@
 {
   "stable": {
-    "version": "87.0.4280.88",
-    "sha256": "1h09g9b2zxad85vd146ymvg3w2kpngpi78yig3dn1vrmhwr4aiiy",
-    "sha256bin64": "0n3fm6wf8zfkv135d50xl8xxrnng3q55vyxkck1da8jyvh18bijb",
+    "version": "87.0.4280.141",
+    "sha256": "0x9k809m36pfirnw2vnr9pk93nxdbgrvna0xf1rs3q91zkbr2x8l",
+    "sha256bin64": "0wq3yi0qyxzcid390w5rh4xjq92fjajvlifjl70g6sqnbk6vgvdp",
     "deps": {
       "gn": {
         "version": "2020-09-09",
@@ -13,14 +13,14 @@
     },
     "chromedriver": {
       "version": "87.0.4280.88",
-      "sha256_linux": "11plh2hs2zpa14ymlbnj92pa58krl28yw4c0s55wk8qsxvzvl02m",
+      "sha256_linux": "1insh1imi25sj4hdkbll5rzwnag8wvfxv4ckshpq8akl8r13p6lj",
       "sha256_darwin": "048hsqp6575r980m769lzznvxypmfcwn89f1d3ik751ymzmb5r78"
     }
   },
   "beta": {
-    "version": "88.0.4324.50",
-    "sha256": "17v0qp05785xc4whsbw6fmf0x5ccjx2mk6n4qy6z2mx2yjjjfv8q",
-    "sha256bin64": "01cphbd56l7g3cdmrvwynkzrpx9h3v7pz6ac76sxlp6irjzhbnva",
+    "version": "88.0.4324.79",
+    "sha256": "1xmssngzg370gazvqngw5mzhfq476fan5y3sp4ggs8fx5anh6jlz",
+    "sha256bin64": "16m2k4kr92236yvfnl276cy77d5324b7ca3grsw990c0b2kgizq7",
     "deps": {
       "gn": {
         "version": "2020-11-05",
@@ -31,15 +31,15 @@
     }
   },
   "dev": {
-    "version": "89.0.4356.6",
-    "sha256": "1jq0wbaaz07kz2190rq3vl2b5spx3qfda4al9ygkm8man817d2nr",
-    "sha256bin64": "0dgvp2my328s4ah0hmp1hg1c3x21gkrz9mjvbfs54r2pjb7y5sbl",
+    "version": "89.0.4381.6",
+    "sha256": "031w24qf5cn9y30pgh736g67p6c10kwpflhvxa24h0v99gqnah2i",
+    "sha256bin64": "1fssdxllq2ncpy8s7ykbq33456hfjlgj1m5147wbg2c5k36rj78s",
     "deps": {
       "gn": {
-        "version": "2020-11-05",
+        "version": "2020-12-22",
         "url": "https://gn.googlesource.com/gn",
-        "rev": "53d92014bf94c3893886470a1c7c1289f8818db0",
-        "sha256": "1xcm07qjk6m2czi150fiqqxql067i832adck6zxrishm70c9jbr9"
+        "rev": "0d67e272bdb8145f87d238bc0b2cb8bf80ccec90",
+        "sha256": "07mrfl9hbjldbgidwwhr482a0s0ppqzwa5j7v5nbqxj18j55iril"
       }
     }
   },
diff --git a/pkgs/applications/networking/cluster/octant/plugins/starboard-octant-plugin.nix b/pkgs/applications/networking/cluster/octant/plugins/starboard-octant-plugin.nix
index f7bcbca16c48..8e5942a033f9 100644
--- a/pkgs/applications/networking/cluster/octant/plugins/starboard-octant-plugin.nix
+++ b/pkgs/applications/networking/cluster/octant/plugins/starboard-octant-plugin.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "starboard-octant-plugin";
-  version = "0.7.1";
+  version = "0.8.0";
 
   src = fetchFromGitHub {
     owner = "aquasecurity";
     repo = pname;
     rev = "v${version}";
-    sha256 = "11c8znbijhvxl2mas205mb18sqw868l6c86ah5hlkqh3niq2gmv3";
+    sha256 = "sha256-wMt/I2zpdM7l+YNwHkAA6sVRWUtlGpN+94jqx2Jy4HA=";
   };
 
-  vendorSha256 = "0rmynfm5afjxc2lxy2rh9y6zhdd2q95wji2q8hcz78zank43rkcq";
+  vendorSha256 = "sha256-fhIIqirEEdqn/n8bBtLw07fEGfnpC/8SOLbkhnytyME=";
 
   meta = with lib; {
     description = "Octant plugin for viewing Starboard security information";
diff --git a/pkgs/applications/networking/cluster/sonobuoy/default.nix b/pkgs/applications/networking/cluster/sonobuoy/default.nix
index 668a229a62e5..f344b8c3eb97 100644
--- a/pkgs/applications/networking/cluster/sonobuoy/default.nix
+++ b/pkgs/applications/networking/cluster/sonobuoy/default.nix
@@ -1,11 +1,11 @@
 { lib, buildGoModule, fetchFromGitHub }:
 
-# SHA of ${version} for the tool's help output
-let rev = "e03f9ee353717ccc5f58c902633553e34b2fe46a";
+# SHA of ${version} for the tool's help output. Unfortunately this is needed in build flags.
+let rev = "f6e19140201d6bf2f1274bf6567087bc25154210";
 in
 buildGoModule rec {
   pname = "sonobuoy";
-  version = "0.19.0";
+  version = "0.20.0"; # Do not forget to update `rev` above
 
   buildFlagsArray =
     let t = "github.com/vmware-tanzu/sonobuoy";
@@ -17,7 +17,7 @@ buildGoModule rec {
     '';
 
   src = fetchFromGitHub {
-    sha256 = "1gw58a30akidk15wk8kk7f8lsyqr1q180j6fzr4462ahwxdbjgkr";
+    sha256 = "11qawsv82i1pl4mwfc85wb4fbq961bplvmygnjfm79m8z87863ri";
     rev = "v${version}";
     repo = "sonobuoy";
     owner = "vmware-tanzu";
diff --git a/pkgs/applications/networking/cluster/starboard/default.nix b/pkgs/applications/networking/cluster/starboard/default.nix
index e8ffa353539e..3850eb756382 100644
--- a/pkgs/applications/networking/cluster/starboard/default.nix
+++ b/pkgs/applications/networking/cluster/starboard/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "starboard";
-  version = "0.7.1";
+  version = "0.8.0";
 
   src = fetchFromGitHub {
     owner = "aquasecurity";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0p0c459xih580ix3279fr45mm3q9w887rs7w1yrikh09xpcisdfr";
+    sha256 = "sha256-KRVMgrJ7xtv2SYa249sSDV8PObStAe+UGEgZWv43sk4=";
   };
 
-  vendorSha256 = "07cz4p8k927ash5ncw1r56bcn592imgywbyzkvhnn50pap91m0q0";
+  vendorSha256 = "sha256-AIMa0lUXFGvhnt8v7l+NIhXLlik5cGYL1OqINNElnx0=";
 
   subPackages = [ "cmd/starboard" ];
 
diff --git a/pkgs/applications/networking/cluster/terragrunt/default.nix b/pkgs/applications/networking/cluster/terragrunt/default.nix
index a6a9631481f6..83704f9ea936 100644
--- a/pkgs/applications/networking/cluster/terragrunt/default.nix
+++ b/pkgs/applications/networking/cluster/terragrunt/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "terragrunt";
-  version = "0.26.7";
+  version = "0.27.0";
 
   src = fetchFromGitHub {
     owner = "gruntwork-io";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1431n6zs2mfkgh281xi0d7m9hxifrrsnd46fnpb54mr6lj9h0sdb";
+    sha256 = "sha256-MbhJ1f6Da+kkkCV85kH8Yv74cMzp7JvxeQb0By9aGp8=";
   };
 
-  vendorSha256 = "18ix11g709fvh8h02k3p2bmzrq5fjzaqa50h3g74s3hyl2gc9s9h";
+  vendorSha256 = "sha256-AMxBzUHRsq1HOMtvgYqIw22Cky7gQ7/2hI8wQnxaXb0=";
 
   doCheck = false;
 
diff --git a/pkgs/applications/networking/ipfs-cluster/default.nix b/pkgs/applications/networking/ipfs-cluster/default.nix
index 39f4d0d23343..2fe9365a84d5 100644
--- a/pkgs/applications/networking/ipfs-cluster/default.nix
+++ b/pkgs/applications/networking/ipfs-cluster/default.nix
@@ -2,18 +2,19 @@
 
 buildGoModule rec {
   pname = "ipfs-cluster";
-  version = "0.13.0";
-  rev = "v${version}";
+  version = "unstable-2020-10-20";
 
-  vendorSha256 = "00fkyxxi4iz16v0j33270x8qrspqpsv9j6csnikjy0klyb038pfq";
+  vendorSha256 = "0abfhl4v4yqy89aqn13ymj4rw5zhr92a9fh1abgpkr19adnyrs3d";
 
-  doCheck = false;
+  patches = [
+      ./test.patch
+  ];
 
   src = fetchFromGitHub {
     owner = "ipfs";
     repo = "ipfs-cluster";
-    inherit rev;
-    sha256 = "0jf3ngxqkgss5f1kifp5lp3kllb21jxc475ysl01ma8l3smqdvya";
+    rev = "c78f7839a2d5645806e01bfbf7af862600f8fbc4";
+    sha256 = "0fschpysma2piy2bfas56yapxm2cl6nj986ww3sp7ysldjzadmkk";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/networking/ipfs-cluster/test.patch b/pkgs/applications/networking/ipfs-cluster/test.patch
new file mode 100644
index 000000000000..65f10fec8ef1
--- /dev/null
+++ b/pkgs/applications/networking/ipfs-cluster/test.patch
@@ -0,0 +1,12 @@
+diff --git a/peer_manager_test.go b/peer_manager_test.go
+index 521e754..cf0d777 100644
+--- a/peer_manager_test.go
++++ b/peer_manager_test.go
+@@ -76,6 +76,7 @@ func clusterAddr(c *Cluster) ma.Multiaddr {
+ }
+ 
+ func TestClustersPeerAdd(t *testing.T) {
++	t.Skip("test is disabld by nixos")
+ 	ctx := context.Background()
+ 	clusters, mocks, boot := peerManagerClusters(t)
+ 	defer shutdownClusters(t, clusters, mocks)
diff --git a/pkgs/applications/networking/lieer/default.nix b/pkgs/applications/networking/lieer/default.nix
index 700ad011dff3..a2c05bda6386 100644
--- a/pkgs/applications/networking/lieer/default.nix
+++ b/pkgs/applications/networking/lieer/default.nix
@@ -2,13 +2,13 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "lieer";
-  version = "1.2";
+  version = "1.3";
 
   src = fetchFromGitHub {
     owner = "gauteh";
     repo = "lieer";
     rev = "v${version}";
-    sha256 = "0qp8sycclzagkiszqk1pw2fr8s8s195bzy8r27dj7f5zx350nxk5";
+    sha256 = "12sl7d381l1gjaam419xc8gxmsprxf0hgksz1f974qmmijvr02bh";
   };
 
   propagatedBuildInputs = with python3Packages; [
@@ -16,6 +16,7 @@ python3Packages.buildPythonApplication rec {
     oauth2client
     google_api_python_client
     tqdm
+    setuptools
   ];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/networking/p2p/tribler/default.nix b/pkgs/applications/networking/p2p/tribler/default.nix
index d30697a4df00..83f517e625a4 100644
--- a/pkgs/applications/networking/p2p/tribler/default.nix
+++ b/pkgs/applications/networking/p2p/tribler/default.nix
@@ -19,40 +19,41 @@ stdenv.mkDerivation rec {
     python3Packages.python
   ];
 
-  pythonPath = [
-    python3Packages.libtorrent-rasterbar
-    python3Packages.twisted
-    python3Packages.netifaces
-    python3Packages.pycrypto
-    python3Packages.pyasn1
-    python3Packages.requests
-    python3Packages.m2crypto
-    python3Packages.pyqt5
-    python3Packages.chardet
-    python3Packages.cherrypy
-    python3Packages.cryptography
-    python3Packages.libnacl
-    python3Packages.configobj
-    python3Packages.decorator
-    python3Packages.feedparser
-    python3Packages.service-identity
-    python3Packages.psutil
-    python3Packages.pillow
-    python3Packages.networkx
-    python3Packages.pony
-    python3Packages.lz4
-    python3Packages.pyqtgraph
+  pythonPath = with python3Packages; [
+    libtorrent-rasterbar
+    twisted
+    netifaces
+    pycrypto
+    pyasn1
+    requests
+    m2crypto
+    pyqt5
+    chardet
+    cherrypy
+    cryptography
+    libnacl
+    configobj
+    decorator
+    feedparser
+    service-identity
+    psutil
+    pillow
+    networkx
+    pony
+    lz4
+    pyqtgraph
 
     # there is a BTC feature, but it requires some unclear version of
     # bitcoinlib, so this doesn't work right now.
-    # python3Packages.bitcoinlib
+    # bitcoinlib
   ];
 
   postPatch = ''
     ${stdenv.lib.optionalString enablePlayer ''
       substituteInPlace "./TriblerGUI/vlc.py" --replace "ctypes.CDLL(p)" "ctypes.CDLL('${libvlc}/lib/libvlc.so')"
-      substituteInPlace "./TriblerGUI/widgets/videoplayerpage.py" --replace "if vlc and vlc.plugin_path" "if vlc"
-      substituteInPlace "./TriblerGUI/widgets/videoplayerpage.py" --replace "os.environ['VLC_PLUGIN_PATH'] = vlc.plugin_path" "os.environ['VLC_PLUGIN_PATH'] = '${libvlc}/lib/vlc/plugins'"
+      substituteInPlace "./TriblerGUI/widgets/videoplayerpage.py" \
+        --replace "if vlc and vlc.plugin_path" "if vlc" \
+        --replace "os.environ['VLC_PLUGIN_PATH'] = vlc.plugin_path" "os.environ['VLC_PLUGIN_PATH'] = '${libvlc}/lib/vlc/plugins'"
     ''}
   '';
 
diff --git a/pkgs/applications/networking/syncthing/default.nix b/pkgs/applications/networking/syncthing/default.nix
index 84b571a20f0c..c6767f2e0ae1 100644
--- a/pkgs/applications/networking/syncthing/default.nix
+++ b/pkgs/applications/networking/syncthing/default.nix
@@ -3,17 +3,17 @@
 let
   common = { stname, target, postInstall ? "" }:
     buildGoModule rec {
-      version = "1.12.0";
+      version = "1.12.1";
       name = "${stname}-${version}";
 
       src = fetchFromGitHub {
         owner  = "syncthing";
         repo   = "syncthing";
         rev    = "v${version}";
-        sha256 = "09kqc66pnklhmlcn66c5zydnvy2mfs2hqzd1465ydww8bbgcncss";
+        sha256 = "1jyqkprb9ps8xc86qnf140wbx5kvshyihxxgym409kfks6dk3cq5";
       };
 
-      vendorSha256 = "1jw0k1wm9mfsa2yr2fi2j8mrlykrlcwfnii07rafv9dnnwabs022";
+      vendorSha256 = "1xlkc47wfhsf6gzq9sgimlzqnrqdsjgc1zzfkjp3xzbbv5ay7wca";
 
       doCheck = false;
 
diff --git a/pkgs/applications/science/biology/fastp/default.nix b/pkgs/applications/science/biology/fastp/default.nix
new file mode 100644
index 000000000000..c68486dbcd6b
--- /dev/null
+++ b/pkgs/applications/science/biology/fastp/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, fetchFromGitHub
+, zlib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "fastp";
+  version = "0.20.1";
+
+  src = fetchFromGitHub {
+    owner = "OpenGene";
+    repo = "fastp";
+    rev = "v${version}";
+    sha256 = "sha256-pANwppkO9pfV9vctB7HmNCzYRtf+Xt+5HMKzvFuvyFM=";
+  };
+
+  buildInputs = [ zlib ];
+
+  installPhase = ''
+    install -D fastp $out/bin/fastp
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Ultra-fast all-in-one FASTQ preprocessor";
+    license = licenses.mit;
+    homepage = "https://github.com/OpenGene/fastp";
+    maintainers = with maintainers; [ jbedo ];
+    platforms = platforms.x86_64;
+  };
+}
diff --git a/pkgs/applications/science/chemistry/octopus/default.nix b/pkgs/applications/science/chemistry/octopus/default.nix
index f8eb064e1fd7..05f93a1a2055 100644
--- a/pkgs/applications/science/chemistry/octopus/default.nix
+++ b/pkgs/applications/science/chemistry/octopus/default.nix
@@ -1,22 +1,34 @@
 { stdenv, fetchFromGitLab, symlinkJoin, gfortran, perl, procps
 , libyaml, libxc, fftw, blas, lapack, gsl, netcdf, arpack, autoreconfHook
+, python3
 }:
 
 assert (!blas.isILP64) && (!lapack.isILP64);
 
 stdenv.mkDerivation rec {
   pname = "octopus";
-  version = "10.0";
+  version = "10.3";
 
   src = fetchFromGitLab {
     owner = "octopus-code";
     repo = "octopus";
     rev = version;
-    sha256 = "1c6q20y0x9aacwa7vp6gj3yvfzain7hnk6skxmvg3wazp02l91kn";
+    sha256 = "1axr3j53mi30gm3f645ga5jkhxbc7rbx432w2k2lgg6g9dv3fcs4";
   };
 
   nativeBuildInputs = [ perl procps autoreconfHook ];
-  buildInputs = [ libyaml gfortran libxc blas lapack gsl fftw netcdf arpack ];
+  buildInputs = [
+    libyaml
+    gfortran
+    libxc
+    blas
+    lapack
+    gsl
+    fftw
+    netcdf
+    arpack
+    (python3.withPackages (ps: [ ps.pyyaml ]))
+  ];
 
   configureFlags = [
     "--with-yaml-prefix=${libyaml}"
@@ -44,7 +56,7 @@ stdenv.mkDerivation rec {
     description = "Real-space time dependent density-functional theory code";
     homepage = "https://octopus-code.org";
     maintainers = with maintainers; [ markuskowa ];
-    license = licenses.gpl2;
+    license = with licenses; [ gpl2Only asl20 lgpl3Plus bsd3 ];
     platforms = [ "x86_64-linux" ];
   };
 }
diff --git a/pkgs/applications/science/electronics/diylc/default.nix b/pkgs/applications/science/electronics/diylc/default.nix
new file mode 100644
index 000000000000..28f12ee22146
--- /dev/null
+++ b/pkgs/applications/science/electronics/diylc/default.nix
@@ -0,0 +1,71 @@
+{ stdenv, fetchurl, makeDesktopItem, unzip, bash, jre8 }:
+
+let
+  pname = "diylc";
+  version = "4.15.1";
+  files = {
+    app = fetchurl {
+      url = "https://github.com/bancika/diy-layout-creator/releases/download/v${version}/diylc-${version}.zip";
+      sha256 = "09vzbxas654n8npxljqljf930y5gcjfvv3r4dv97dwk5sy66xvaf";
+    };
+    icon16 = fetchurl {
+      url = "https://raw.githubusercontent.com/bancika/diy-layout-creator/v${version}/diylc/diylc-core/src/org/diylc/core/images/icon_small.png";
+      sha256 = "1is50aidfwzwfzwqv57s2hwhx0r5c21cp77bkl93xkdqkh2wd8x4";
+    };
+    icon32 = fetchurl {
+      url = "https://raw.githubusercontent.com/bancika/diy-layout-creator/v${version}/diylc/diylc-core/src/org/diylc/core/images/icon_medium.png";
+      sha256 = "0a45p18n84xz1nd3zv3y16jlimvqzhbzg3q3f4lawgx4rcrn2n3d";
+    };
+    icon48 = fetchurl {
+      url = "https://raw.githubusercontent.com/bancika/diy-layout-creator/v${version}/diylc/diylc-core/src/org/diylc/core/images/icon_large.png";
+      sha256 = "06dkz0dcy8hfmnzr5ri5n1sh8r7mg83kzbvs3zy58wwhgzs1ddk6";
+    };
+  };
+  launcher = makeDesktopItem {
+    name = "diylc";
+    desktopName = "DIY Layout Creator";
+    comment = "Multi platform circuit layout and schematic drawing tool";
+    exec = "diylc";
+    icon = "diylc_icon";
+    categories = "Development;Electronics;";
+  };
+in
+stdenv.mkDerivation rec {
+  inherit pname version;
+
+  dontUnpack = true;
+
+  buildInputs = [ jre8 ];
+  nativeBuildInputs = [ unzip ];
+
+  installPhase = ''
+    install -d $out/share/diylc
+    ${unzip}/bin/unzip -UU ${files.app} -d $out/share/diylc
+    rm $out/share/diylc/diylc.exe
+    rm $out/share/diylc/run.sh
+
+    # Nope, the icon cannot be named 'diylc' because KDE does not like it.
+    install -Dm644 ${files.icon16} $out/share/icons/hicolor/16x16/apps/diylc_icon.png
+    install -Dm644 ${files.icon32} $out/share/icons/hicolor/32x32/apps/diylc_icon.png
+    install -Dm644 ${files.icon48} $out/share/icons/hicolor/48x48/apps/diylc_icon.png
+
+    install -d $out/share/applications
+    ln -s ${launcher}/share/applications/* $out/share/applications/
+
+    install -d $out/bin
+    cat <<EOF > $out/bin/diylc
+    #!${bash}/bin/sh
+    cd $out/share/diylc
+    ${jre8}/bin/java -Xms512m -Xmx2048m -Dorg.diylc.scriptRun=true -Dfile.encoding=UTF-8 -cp diylc.jar:lib org.diylc.DIYLCStarter
+    EOF
+    chmod +x $out/bin/diylc
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Multi platform circuit layout and schematic drawing tool";
+    homepage = "https://bancika.github.io/diy-layout-creator/";
+    changelog = "https://github.com/bancika/diy-layout-creator/releases";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/science/electronics/kicad/update.sh b/pkgs/applications/science/electronics/kicad/update.sh
index cfd78323b77a..099440956ae7 100755
--- a/pkgs/applications/science/electronics/kicad/update.sh
+++ b/pkgs/applications/science/electronics/kicad/update.sh
@@ -144,7 +144,7 @@ for version in "${all_versions[@]}"; do
           for lib in "${libs[@]}"; do
             echo "Checking ${lib}" >&2
             url="${gitlab}/libraries/kicad-${lib}.git"
-            lib_rev="$(${get_rev} "${url}" "${version}" | cut -f1 | head -n1)"
+            lib_rev="$(${get_rev} "${url}" "${version}" | cut -f1 | tail -n1)"
             has_rev="$(grep -sm 1 "\"${pname}\"" -A 19 "${file}" | grep -sm 1 "${lib_rev}" || true)"
             has_hash="$(grep -sm 1 "\"${pname}\"" -A 20 "${file}" | grep -sm 1 "${lib}.sha256" || true)"
             if [[ -n ${has_rev} && -n ${has_hash} && -z ${clean} ]]; then
@@ -173,8 +173,8 @@ printf "}\n"
 } > "${tmp}"
 
 if grep '""' "${tmp}"; then
-	echo "empty value detected, out of space?" >&2
-	exit "1"
+  echo "empty value detected, out of space?" >&2
+  exit "1"
 fi
 
 mv "${tmp}" "${file}"
diff --git a/pkgs/applications/science/electronics/kicad/versions.nix b/pkgs/applications/science/electronics/kicad/versions.nix
index 9f00f3fa8ba8..8a5e5d8f5f5c 100644
--- a/pkgs/applications/science/electronics/kicad/versions.nix
+++ b/pkgs/applications/science/electronics/kicad/versions.nix
@@ -3,19 +3,19 @@
 {
   "kicad" = {
     kicadVersion = {
-      version =			"5.1.8";
+      version =			"5.1.9";
       src = {
-        rev =			"db9833491010954bc27fac92c83d2864bd95c23c";
-        sha256 =		"08ni9j2lw2hjc1csk6rkydcxwdal6da17ch60zkjij5vfsif2hix";
+        rev =			"73d0e3b20dec05c4350efa5b69916eb29a7bfcb5";
+        sha256 =		"1cqh3bc9y140hbryfk9qavs2y3lj5sm9q0qjxcf4mm472afzckky";
       };
     };
     libVersion = {
-      version =			"5.1.8";
+      version =			"5.1.9";
       libSources = {
-        i18n.rev =		"78adcd19e7ed53f4889d6db65a33dd8ec2d323e9";
-        i18n.sha256 =		"0x0w2m6d3xfm22y4anp5j2j67iwzby149ynj6qjlw2kcsi8kwk1j";
-        symbols.rev =		"bf475af94877e8fd9cf80e667578ff61835e02bb";
-        symbols.sha256 =	"1ii3r813653ng2ycggnknqx4g3ja7dbm4qyxrf9aq48ws0xkvhx3";
+        i18n.rev =		"04f3231f60d55400cb81564b2cd465a57d5192d5";
+        i18n.sha256 =		"04jq1dcag6i2ljjfqrib65mn4wg4c4nmi7i946l3bywc0rkqsx1f";
+        symbols.rev =		"6dec5004b6a2679c19d4857bda2f90c5ab3a5726";
+        symbols.sha256 =	"0n25rq32jwyigfw26faqraillwv6zbi2ywy26dkz5zqlf5xp56ad";
         templates.rev =		"1ccbaf3704e8ff4030d0915f71e051af621ef7d7";
         templates.sha256 =	"1a8xfcbdbb4ylrb5m7n2jjk9kwvgmlx1pmnn2cwj327a2b3m4jjs";
         footprints.rev =	"302ac78bac21825532f970fb92714fa5973ad79b";
@@ -27,25 +27,25 @@
   };
   "kicad-unstable" = {
     kicadVersion = {
-      version =			"2020-12-01";
+      version =			"2020-12-23";
       src = {
-        rev =			"3c521942ed52e83482c82d426170b4fbf327f846";
-        sha256 =		"sha256:09qab69sy3n44kjlzxxx7gbksyr1kg8n14kz0zf8n71zfcqagci4";
+        rev =			"912657dd238ad78cfc5d9d5e426ea850d5554fb3";
+        sha256 =		"1p5kr4d4zpajwdmya1f351y1ix8qmvsx1hrnvhzh7yc3g72kgxah";
       };
     };
     libVersion = {
-      version =			"2020-12-01";
+      version =			"2020-12-23";
       libSources = {
         i18n.rev =		"e89d9a89bec59199c1ade56ee2556591412ab7b0";
-        i18n.sha256 =		"sha256:04zaqyhj3qr4ymyd3k5vjpcna64j8klpsygcgjcv29s3rdi8glfl";
+        i18n.sha256 =		"04zaqyhj3qr4ymyd3k5vjpcna64j8klpsygcgjcv29s3rdi8glfl";
         symbols.rev =		"e538abb015b4f289910a6f26b2f1b9cb8bf2efdb";
-        symbols.sha256 =	"sha256:117y4cm46anlrnw6y6mdjgl1a5gab6h6m7cwx3q7qb284m9bs5gi";
+        symbols.sha256 =	"117y4cm46anlrnw6y6mdjgl1a5gab6h6m7cwx3q7qb284m9bs5gi";
         templates.rev =		"32a4f6fab863976fdcfa232e3e08fdcf3323a954";
-        templates.sha256 =	"sha256:13r94dghrh9slpj7nkzv0zqv5hk49s6pxm4q5ndqx0y8037ivmhk";
+        templates.sha256 =	"13r94dghrh9slpj7nkzv0zqv5hk49s6pxm4q5ndqx0y8037ivmhk";
         footprints.rev =	"15ffd67e01257d4d8134dbd6708cb58977eeccbe";
-        footprints.sha256 =	"sha256:1ad5k3wh2zqfibrar7pd3g363jk2q51dvraxnq3zlxa2x4znh7mw";
+        footprints.sha256 =	"1ad5k3wh2zqfibrar7pd3g363jk2q51dvraxnq3zlxa2x4znh7mw";
         packages3d.rev =	"d8b7e8c56d535f4d7e46373bf24c754a8403da1f";
-        packages3d.sha256 =	"sha256:0dh8ixg0w43wzj5h3164dz6l1vl4llwxhi3qcdgj1lgvrs28aywd";
+        packages3d.sha256 =	"0dh8ixg0w43wzj5h3164dz6l1vl4llwxhi3qcdgj1lgvrs28aywd";
       };
     };
   };
diff --git a/pkgs/applications/science/logic/coq/default.nix b/pkgs/applications/science/logic/coq/default.nix
index 2ebe75d3bc50..9d0876d8d054 100644
--- a/pkgs/applications/science/logic/coq/default.nix
+++ b/pkgs/applications/science/logic/coq/default.nix
@@ -5,57 +5,76 @@
 # - The exact version can be specified through the `version` argument to
 #   the derivation; it defaults to the latest stable version.
 
-{ stdenv, fetchFromGitHub, writeText, pkgconfig, gnumake42
-, ocamlPackages, ncurses
+{ stdenv, fetchzip, writeText, pkgconfig, gnumake42
+, customOCamlPackages ? null
+, ocamlPackages_4_05, ocamlPackages_4_09, ocamlPackages_4_10, ncurses
 , buildIde ? !(stdenv.isDarwin && stdenv.lib.versionAtLeast version "8.10")
 , glib, gnome3, wrapGAppsHook
 , csdp ? null
-, version
-}:
-
+, version, coq-version ? null,
+}@args:
+let lib = import ../../../../build-support/coq/extra-lib.nix {inherit (stdenv) lib;}; in
+with builtins; with lib;
 let
-  sha256 = {
-   "8.5pl1"    = "1976ki5xjg2r907xj9p7gs0kpdinywbwcqlgxqw75dgp0hkgi00n";
-   "8.5pl2"    = "109rrcrx7mz0fj7725kjjghfg5ydwb24hjsa5hspa27b4caah7rh";
-   "8.5pl3"    = "15c3rdk59nifzihsp97z4vjxis5xmsnrvpb86qiazj143z2fmdgw";
-   "8.6"       = "148mb48zpdax56c0blfi7v67lx014lnmrvxxasi28hsibyz2lvg4";
-   "8.6.1"     = "0llrxcxwy5j87vbbjnisw42rfw1n1pm5602ssx64xaxx3k176g6l";
-   "8.7.0"     = "1h18b7xpnx3ix9vsi5fx4zdcbxy7bhra7gd5c5yzxmk53cgf1p9m";
-   "8.7.1"     = "0gjn59jkbxwrihk8fx9d823wjyjh5m9gvj9l31nv6z6bcqhgdqi8";
-   "8.7.2"     = "0a0657xby8wdq4aqb2xsxp3n7pmc2w4yxjmrb2l4kccs1aqvaj4w";
-   "8.8.0" = "13a4fka22hdxsjk11mgjb9ffzplfxyxp1sg5v1c8nk1grxlscgw8";
-   "8.8.1" = "1hlf58gwazywbmfa48219amid38vqdl94yz21i11b4map6jfwhbk";
-   "8.8.2" = "1lip3xja924dm6qblisk1bk0x8ai24s5xxqxphbdxj6djglj68fd";
-   "8.9.0" = "1dkgdjc4n1m15m1p724hhi5cyxpqbjw6rxc5na6fl3v4qjjfnizh";
-   "8.9.1" = "1xrq6mkhpq994bncmnijf8jwmwn961kkpl4mwwlv7j3dgnysrcv2";
-   "8.10.0" = "138jw94wp4mg5dgjc2asn8ng09ayz1mxdznq342n0m469j803gzg";
-   "8.10.1" = "072v2zkjzf7gj48137wpr3c9j0hg9pdhlr5l8jrgrwynld8fp7i4";
-   "8.10.2" = "0znxmpy71bfw0p6x47i82jf5k7v41zbz9bdpn901ysn3ir8l3wrz";
-   "8.11.0" = "1rfdic6mp7acx2zfwz7ziqk12g95bl9nyj68z4n20a5bcjv2pxpn";
-   "8.11.1" = "0qriy9dy36dajsv5qmli8gd6v55mah02ya334nw49ky19v7518m0";
-   "8.11.2" = "0f77ccyxdgbf1nrj5fa8qvrk1cyfy06fv8gj9kzfvlcgn0cf48sa";
-   "8.12.0" = "18dc7k0piv6v064zgdadpw6mkkxk7j663hb3svgj5236fihjr0cz";
-   "8.12.1" = "1rkcyjjrzcqw9xk93hsq0vvji4f8r5iq0f739mghk60bghkpnb7q";
-   "8.12.2" = "18gscfm039pqhq4msq01nraig5dm9ab98bjca94zldf8jvdv0x2n";
-   "8.13+beta1" = "1v4a6dpj41flspa4ihcr7m5ahqz10kbn62fmrldmv7gzq6jsyfyq";
-  }.${version};
-  coq-version = stdenv.lib.versions.majorMinor version;
-  versionAtLeast = stdenv.lib.versionAtLeast coq-version;
-  ideFlags = stdenv.lib.optionalString (buildIde && !versionAtLeast "8.10")
+  release = {
+   "8.5pl1".sha256     = "1976ki5xjg2r907xj9p7gs0kpdinywbwcqlgxqw75dgp0hkgi00n";
+   "8.5pl2".sha256     = "109rrcrx7mz0fj7725kjjghfg5ydwb24hjsa5hspa27b4caah7rh";
+   "8.5pl3".sha256     = "15c3rdk59nifzihsp97z4vjxis5xmsnrvpb86qiazj143z2fmdgw";
+   "8.6.0".sha256      = "148mb48zpdax56c0blfi7v67lx014lnmrvxxasi28hsibyz2lvg4";
+   "8.6.0".rev         = "V8.6";
+   "8.6.1".sha256      = "0llrxcxwy5j87vbbjnisw42rfw1n1pm5602ssx64xaxx3k176g6l";
+   "8.7.0".sha256      = "1h18b7xpnx3ix9vsi5fx4zdcbxy7bhra7gd5c5yzxmk53cgf1p9m";
+   "8.7.1".sha256      = "0gjn59jkbxwrihk8fx9d823wjyjh5m9gvj9l31nv6z6bcqhgdqi8";
+   "8.7.2".sha256      = "0a0657xby8wdq4aqb2xsxp3n7pmc2w4yxjmrb2l4kccs1aqvaj4w";
+   "8.8.0".sha256      = "13a4fka22hdxsjk11mgjb9ffzplfxyxp1sg5v1c8nk1grxlscgw8";
+   "8.8.1".sha256      = "1hlf58gwazywbmfa48219amid38vqdl94yz21i11b4map6jfwhbk";
+   "8.8.2".sha256      = "1lip3xja924dm6qblisk1bk0x8ai24s5xxqxphbdxj6djglj68fd";
+   "8.9.0".sha256      = "1dkgdjc4n1m15m1p724hhi5cyxpqbjw6rxc5na6fl3v4qjjfnizh";
+   "8.9.1".sha256      = "1xrq6mkhpq994bncmnijf8jwmwn961kkpl4mwwlv7j3dgnysrcv2";
+   "8.10.0".sha256     = "138jw94wp4mg5dgjc2asn8ng09ayz1mxdznq342n0m469j803gzg";
+   "8.10.1".sha256     = "072v2zkjzf7gj48137wpr3c9j0hg9pdhlr5l8jrgrwynld8fp7i4";
+   "8.10.2".sha256     = "0znxmpy71bfw0p6x47i82jf5k7v41zbz9bdpn901ysn3ir8l3wrz";
+   "8.11.0".sha256     = "1rfdic6mp7acx2zfwz7ziqk12g95bl9nyj68z4n20a5bcjv2pxpn";
+   "8.11.1".sha256     = "0qriy9dy36dajsv5qmli8gd6v55mah02ya334nw49ky19v7518m0";
+   "8.11.2".sha256     = "0f77ccyxdgbf1nrj5fa8qvrk1cyfy06fv8gj9kzfvlcgn0cf48sa";
+   "8.12.0".sha256     = "18dc7k0piv6v064zgdadpw6mkkxk7j663hb3svgj5236fihjr0cz";
+   "8.12.1".sha256     = "1rkcyjjrzcqw9xk93hsq0vvji4f8r5iq0f739mghk60bghkpnb7q";
+   "8.12.2".sha256     = "18gscfm039pqhq4msq01nraig5dm9ab98bjca94zldf8jvdv0x2n";
+   "8.13+beta1".sha256 = "1v4a6dpj41flspa4ihcr7m5ahqz10kbn62fmrldmv7gzq6jsyfyq";
+  };
+  releaseRev = v: "V${v}";
+  fetched = import ../../../../build-support/coq/meta-fetch/default.nix
+    { inherit stdenv fetchzip; }
+    { inherit release releaseRev; location = { owner = "coq"; repo = "coq";}; }
+    args.version;
+  version = fetched.version;
+  coq-version = args.coq-version or (if version != "dev" then versions.majorMinor version else "dev");
+  versionAtLeast = v: (coq-version == "dev") || (stdenv.lib.versionAtLeast coq-version v);
+  ideFlags = optionalString (buildIde && !versionAtLeast "8.10")
     "-lablgtkdir ${ocamlPackages.lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt";
   csdpPatch = if csdp != null then ''
     substituteInPlace plugins/micromega/sos.ml --replace "; csdp" "; ${csdp}/bin/csdp"
     substituteInPlace plugins/micromega/coq_micromega.ml --replace "System.is_in_system_path \"csdp\"" "true"
   '' else "";
+  ocamlPackages = if !isNull customOCamlPackages then customOCamlPackages
+    else with versions; switch coq-version [
+      { case = range "8.11" "8.13"; out = ocamlPackages_4_10; }
+      { case = range "8.7" "8.10";  out = ocamlPackages_4_09; }
+      { case = range "8.5" "8.6";   out = ocamlPackages_4_05; }
+    ] ocamlPackages_4_10;
+  ocamlBuildInputs = [ ocamlPackages.ocaml ocamlPackages.findlib ]
+    ++ optional (!versionAtLeast "8.10") ocamlPackages.camlp5
+    ++ optional (!versionAtLeast "8.13") ocamlPackages.num
+    ++ optional (versionAtLeast "8.13") ocamlPackages.zarith;
 self = stdenv.mkDerivation {
   pname = "coq";
-  inherit version;
+  inherit (fetched) version src;
 
   passthru = {
     inherit coq-version;
-    inherit ocamlPackages;
+    inherit ocamlPackages ocamlBuildInputs;
     # For compatibility
-    inherit (ocamlPackages) ocaml camlp5 findlib num;
+    inherit (ocamlPackages) ocaml camlp5 findlib num ;
     emacsBufferSetup = pkgs: ''
       ; Propagate coq paths to children
       (inherit-local-permanent coq-prog-name "${self}/bin/coqtop")
@@ -67,7 +86,7 @@ self = stdenv.mkDerivation {
         (coq-prog-args))
       (mapc (lambda (arg)
         (when (file-directory-p (concat arg "/lib/coq/${coq-version}/user-contrib"))
-          (setenv "COQPATH" (concat (getenv "COQPATH") ":" arg "/lib/coq/${coq-version}/user-contrib")))) '(${stdenv.lib.concatStringsSep " " (map (pkg: "\"${pkg}\"") pkgs)}))
+          (setenv "COQPATH" (concat (getenv "COQPATH") ":" arg "/lib/coq/${coq-version}/user-contrib")))) '(${concatStringsSep " " (map (pkg: "\"${pkg}\"") pkgs)}))
       ; TODO Abstract this pattern from here and nixBufferBuilders.withPackages!
       (defvar nixpkgs--coq-buffer-count 0)
       (when (eq nixpkgs--coq-buffer-count 0)
@@ -102,27 +121,12 @@ self = stdenv.mkDerivation {
     '';
   };
 
-  src = fetchFromGitHub {
-    owner = "coq";
-    repo = "coq";
-    rev = "V${version}";
-    inherit sha256;
-  };
-
-  nativeBuildInputs = [ pkgconfig ]
-  ++ stdenv.lib.optional (!versionAtLeast "8.6") gnumake42
-  ;
-  buildInputs = [ ncurses ocamlPackages.ocaml ocamlPackages.findlib ]
-  ++ stdenv.lib.optional (!versionAtLeast "8.10") ocamlPackages.camlp5
-  ++ stdenv.lib.optional (!versionAtLeast "8.12") ocamlPackages.num
-  ++ stdenv.lib.optionals buildIde
-    (if versionAtLeast "8.10"
-     then [ ocamlPackages.lablgtk3-sourceview3 glib gnome3.defaultIconTheme wrapGAppsHook ]
-     else [ ocamlPackages.lablgtk ]);
-
-  propagatedBuildInputs =
-     stdenv.lib.optional (versionAtLeast "8.13") ocamlPackages.zarith
-  ++ stdenv.lib.optional (coq-version == "8.12") ocamlPackages.num;
+  nativeBuildInputs = [ pkgconfig ] ++ optional (!versionAtLeast "8.6") gnumake42;
+  buildInputs = [ ncurses ] ++ ocamlBuildInputs
+    ++ optionals buildIde
+      (if versionAtLeast "8.10"
+       then [ ocamlPackages.lablgtk3-sourceview3 glib gnome3.defaultIconTheme wrapGAppsHook ]
+       else [ ocamlPackages.lablgtk ]);
 
   postPatch = ''
     UNAME=$(type -tp uname)
diff --git a/pkgs/applications/science/logic/lean/default.nix b/pkgs/applications/science/logic/lean/default.nix
index 88e1b4fbc0e1..0684abd5ab31 100644
--- a/pkgs/applications/science/logic/lean/default.nix
+++ b/pkgs/applications/science/logic/lean/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "lean";
-  version = "3.23.0";
+  version = "3.24.0";
 
   src = fetchFromGitHub {
     owner  = "leanprover-community";
     repo   = "lean";
     rev    = "v${version}";
-    sha256 = "09mklc1p6ms1jayg2f89hqfmhca3h5744lli936l38ypn1d00sxx";
+    sha256 = "npzBuZ37KrUYwC0TglryVTqui/3/t1ma1Zjpnty0d7c=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/applications/science/math/qalculate-gtk/default.nix b/pkgs/applications/science/math/qalculate-gtk/default.nix
index 09ead07dc09d..ba7ac5505e4e 100644
--- a/pkgs/applications/science/math/qalculate-gtk/default.nix
+++ b/pkgs/applications/science/math/qalculate-gtk/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "qalculate-gtk";
-  version = "3.15.0";
+  version = "3.16.0";
 
   src = fetchFromGitHub {
     owner = "qalculate";
     repo = "qalculate-gtk";
     rev = "v${version}";
-    sha256 = "1w0r9vv1h3zbfdvk8965g5plfkz5clf81riil5b394ms9vsw0bx5";
+    sha256 = "1vqzrh5zxwfvih6c3lak0wkkw6bajl88xzl1zk84gxsk9wdymrk4";
   };
 
   hardeningDisable = [ "format" ];
diff --git a/pkgs/applications/terminal-emulators/alacritty/default.nix b/pkgs/applications/terminal-emulators/alacritty/default.nix
index cd372b79c26b..13a67c6236ff 100644
--- a/pkgs/applications/terminal-emulators/alacritty/default.nix
+++ b/pkgs/applications/terminal-emulators/alacritty/default.nix
@@ -52,16 +52,16 @@ let
 in
 rustPlatform.buildRustPackage rec {
   pname = "alacritty";
-  version = "0.6.0";
+  version = "0.7.1";
 
   src = fetchFromGitHub {
     owner = "alacritty";
     repo = pname;
     rev = "v${version}";
-    sha256 = "vQdNwNiUvoJWRT1foPRadirI2zWjnzU3sGnIxeHKlj8=";
+    sha256 = "8alCFtr+3aJsqQ2Ra8u5/SRHfDvMq2kRvRCKo/zwMK0=";
   };
 
-  cargoSha256 = "1PQSg6EmwVMZj2ALw6qsbtPMCtALVHx5TR05FjGD/QE=";
+  cargoSha256 = "kqRlxieChnhWtYYf67gi+2bncIzO56xpnv2uLjcINVM=";
 
   nativeBuildInputs = [
     cmake
diff --git a/pkgs/applications/terminal-emulators/germinal/default.nix b/pkgs/applications/terminal-emulators/germinal/default.nix
new file mode 100644
index 000000000000..b44e48fafae9
--- /dev/null
+++ b/pkgs/applications/terminal-emulators/germinal/default.nix
@@ -0,0 +1,55 @@
+{ stdenv
+, fetchFromGitHub
+, autoreconfHook
+, pkg-config
+, appstream-glib
+, dbus
+, pango
+, pcre2
+, tmux
+, vte
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "germinal";
+  version = "26";
+
+  src = fetchFromGitHub {
+    owner = "Keruspe";
+    repo = "Germinal";
+    rev = "v${version}";
+    sha256 = "sha256-HUi+skF4bJj5CY2cNTOC4tl7jhvpXYKqBx2rqKzjlo0=";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkg-config wrapGAppsHook ];
+  buildInputs = [
+    appstream-glib
+    dbus
+    pango
+    pcre2
+    vte
+  ];
+
+  configureFlags = [
+    "--with-dbusservicesdir=${placeholder "out"}/etc/dbus-1/system-services/"
+  ];
+
+  dontWrapGApps = true;
+
+  fixupPhase = ''
+    runHook preFixup
+    wrapProgram $out/bin/germinal \
+     --prefix PATH ":" "${stdenv.lib.makeBinPath [ tmux ]}" \
+      "''${gappsWrapperArgs[@]}"
+    runHook postFixup
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A minimal terminal emulator";
+    homepage = "https://github.com/Keruspe/Germinal";
+    license = with licenses; gpl3Plus;
+    platforms = with platforms; unix;
+    maintainers = with maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/pkgs/applications/terminal-emulators/wezterm/default.nix b/pkgs/applications/terminal-emulators/wezterm/default.nix
index 35b2500c7c97..a30afa1ce68a 100644
--- a/pkgs/applications/terminal-emulators/wezterm/default.nix
+++ b/pkgs/applications/terminal-emulators/wezterm/default.nix
@@ -1,4 +1,5 @@
-{ rustPlatform
+{ stdenv
+, rustPlatform
 , lib
 , fetchFromGitHub
 
@@ -8,6 +9,11 @@
 , openssl
 , perl
 
+# Apple frameworks
+, CoreGraphics
+, Cocoa
+, Foundation
+
 , dbus
 , libX11
 , xcbutil
@@ -25,6 +31,10 @@
 }:
 let
   runtimeDeps = [
+    zlib
+    fontconfig
+    freetype
+  ] ++ stdenv.lib.optionals (stdenv.isLinux) [
     libX11
     xcbutil
     libxcb
@@ -33,13 +43,14 @@ let
     libxkbcommon
     dbus
     libglvnd
-    zlib
     egl-wayland
     wayland
     libGLU
     libGL
-    fontconfig
-    freetype
+  ] ++ stdenv.lib.optionals (stdenv.isDarwin) [
+    Foundation
+    CoreGraphics
+    Cocoa
   ];
   pname = "wezterm";
 in
@@ -67,10 +78,21 @@ rustPlatform.buildRustPackage {
   buildInputs = runtimeDeps;
 
   installPhase = ''
+  '' + stdenv.lib.optionalString stdenv.isLinux ''
     for artifact in wezterm wezterm-gui wezterm-mux-server strip-ansi-escapes; do
       patchelf --set-rpath "${lib.makeLibraryPath runtimeDeps}" $releaseDir/$artifact
       install -D $releaseDir/$artifact -t $out/bin
     done
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+  mkdir -p "$out/Applications"
+  OUT_APP="$out/Applications/WezTerm.app"
+  cp -r assets/macos/WezTerm.app "$OUT_APP"
+  rm $OUT_APP/*.dylib
+  cp -r assets/shell-integration/* "$OUT_APP"
+  cp $releaseDir/wezterm "$OUT_APP"
+  cp $releaseDir/wezterm-mux-server "$OUT_APP"
+  cp $releaseDir/wezterm-gui "$OUT_APP"
+  cp $releaseDir/strip-ansi-escapes "$OUT_APP"
   '';
 
   # prevent further changes to the RPATH
diff --git a/pkgs/applications/version-management/dvc/default.nix b/pkgs/applications/version-management/dvc/default.nix
index b9ac8b139cbb..ac1659cccf8b 100644
--- a/pkgs/applications/version-management/dvc/default.nix
+++ b/pkgs/applications/version-management/dvc/default.nix
@@ -41,7 +41,7 @@ buildPythonApplication rec {
     distro
     appdirs
   ]
-  ++ lib.optional enableGoogle google_cloud_storage
+  ++ lib.optional enableGoogle google-cloud-storage
   ++ lib.optional enableAWS boto3
   ++ lib.optional enableAzure azure-storage-blob
   ++ lib.optional enableSSH paramiko;
diff --git a/pkgs/applications/version-management/git-and-tools/radicle-upstream/default.nix b/pkgs/applications/version-management/git-and-tools/radicle-upstream/default.nix
index f7b6aa153140..9f0949aef529 100644
--- a/pkgs/applications/version-management/git-and-tools/radicle-upstream/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/radicle-upstream/default.nix
@@ -2,12 +2,12 @@
 
 let
   pname = "radicle-upstream";
-  version = "0.1.5";
+  version = "0.1.6";
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "https://releases.radicle.xyz/radicle-upstream-${version}.AppImage";
-    sha256 =  "1q5p6bvzi5awxd9a3xvvdhy26bz0dx8drb1z0zzqdvqqcxxyydq7";
+    sha256 =  "1s299rxala6gqj69j5q4d4n5wfdk2zsb4r9qrhml0m79b4f79yar";
   };
 
   contents = appimageTools.extractType2 { inherit name src; };
diff --git a/pkgs/applications/version-management/git-repo/default.nix b/pkgs/applications/version-management/git-repo/default.nix
index db18e765b009..e6f6e69fcaaf 100644
--- a/pkgs/applications/version-management/git-repo/default.nix
+++ b/pkgs/applications/version-management/git-repo/default.nix
@@ -4,13 +4,13 @@
 
 stdenv.mkDerivation rec {
   pname = "git-repo";
-  version = "2.10";
+  version = "2.11.1";
 
   src = fetchFromGitHub {
     owner = "android";
     repo = "tools_repo";
     rev = "v${version}";
-    sha256 = "0jd28281wys2iy7pbyyrzkzrkzq9ms7p9pbj6j2fha6bg1bh7rkz";
+    sha256 = "sha256-6XsjxTYmjr/3smwwS7c+Mq1sqfgKAhWzHOY8TWlIKHU=";
   };
 
   patches = [ ./import-ssl-module.patch ];
diff --git a/pkgs/applications/version-management/pijul/default.nix b/pkgs/applications/version-management/pijul/default.nix
index 1439f7922489..4a64057cf11f 100644
--- a/pkgs/applications/version-management/pijul/default.nix
+++ b/pkgs/applications/version-management/pijul/default.nix
@@ -13,14 +13,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "pijul";
-  version = "1.0.0-alpha.24";
+  version = "1.0.0-alpha.31";
 
   src = fetchCrate {
     inherit version pname;
-    sha256 = "1h1vgx0zlymnhalqsgmp9gv6sxbizmyryldx5vzl6djl23dvzd6s";
+    sha256 = "sha256-dSwQlALN0E87o86sasuNFPTZN6SRCuxP6pI7wi4uRf4";
   };
 
-  cargoSha256 = "1yx7qqfyabhrf6mcca4frdcp9a426khp90nznhshhm71liqr9y44";
+  cargoSha256 = "sha256-Xwk5bX9o41M/1BmkOpAscGQHikhzV+9qAwVz0qI7FRA";
 
   cargoBuildFlags = stdenv.lib.optional gitImportSupport "--features=git";
 
diff --git a/pkgs/applications/version-management/sourcehut/builds.nix b/pkgs/applications/version-management/sourcehut/builds.nix
index e5fc7c338604..493402bd2b13 100644
--- a/pkgs/applications/version-management/sourcehut/builds.nix
+++ b/pkgs/applications/version-management/sourcehut/builds.nix
@@ -45,6 +45,8 @@ in buildPythonPackage rec {
     cp ${buildWorker "${src}/worker"}/bin/worker $out/bin/builds.sr.ht-worker
   '';
 
+  dontUseSetuptoolsCheck = true;
+
   meta = with stdenv.lib; {
     homepage = "https://git.sr.ht/~sircmpwn/builds.sr.ht";
     description = "Continuous integration service for the sr.ht network";
diff --git a/pkgs/applications/version-management/sourcehut/dispatch.nix b/pkgs/applications/version-management/sourcehut/dispatch.nix
index fa557ce78aa2..552b643951d0 100644
--- a/pkgs/applications/version-management/sourcehut/dispatch.nix
+++ b/pkgs/applications/version-management/sourcehut/dispatch.nix
@@ -24,6 +24,8 @@ buildPythonPackage rec {
     export PKGVER=${version}
   '';
 
+  dontUseSetuptoolsCheck = true;
+
   meta = with stdenv.lib; {
     homepage = "https://dispatch.sr.ht/~sircmpwn/dispatch.sr.ht";
     description = "Task dispatcher and service integration tool for the sr.ht network";
diff --git a/pkgs/applications/version-management/sourcehut/git.nix b/pkgs/applications/version-management/sourcehut/git.nix
index 3611ad93e17e..46870dab413a 100644
--- a/pkgs/applications/version-management/sourcehut/git.nix
+++ b/pkgs/applications/version-management/sourcehut/git.nix
@@ -67,6 +67,8 @@ in buildPythonPackage rec {
     cp ${buildAPI "${src}/api"}/bin/api $out/bin/gitsrht-api
   '';
 
+  dontUseSetuptoolsCheck = true;
+
   meta = with stdenv.lib; {
     homepage = "https://git.sr.ht/~sircmpwn/git.sr.ht";
     description = "Git repository hosting service for the sr.ht network";
diff --git a/pkgs/applications/version-management/sourcehut/hg.nix b/pkgs/applications/version-management/sourcehut/hg.nix
index 73c9dfeb71e2..81c51324eb9c 100644
--- a/pkgs/applications/version-management/sourcehut/hg.nix
+++ b/pkgs/applications/version-management/sourcehut/hg.nix
@@ -25,6 +25,8 @@ buildPythonPackage rec {
     export PKGVER=${version}
   '';
 
+  dontUseSetuptoolsCheck = true;
+
   meta = with stdenv.lib; {
     homepage = "https://git.sr.ht/~sircmpwn/hg.sr.ht";
     description = "Mercurial repository hosting service for the sr.ht network";
diff --git a/pkgs/applications/version-management/sourcehut/hub.nix b/pkgs/applications/version-management/sourcehut/hub.nix
index 5c9736564c39..b3cf8f0a9fb1 100644
--- a/pkgs/applications/version-management/sourcehut/hub.nix
+++ b/pkgs/applications/version-management/sourcehut/hub.nix
@@ -22,6 +22,8 @@ buildPythonPackage rec {
     export PKGVER=${version}
   '';
 
+  dontUseSetuptoolsCheck = true;
+
   meta = with stdenv.lib; {
     homepage = "https://git.sr.ht/~sircmpwn/hub.sr.ht";
     description = "Project hub service for the sr.ht network";
diff --git a/pkgs/applications/version-management/sourcehut/lists.nix b/pkgs/applications/version-management/sourcehut/lists.nix
index 880dc60f0b3a..d15aada60166 100644
--- a/pkgs/applications/version-management/sourcehut/lists.nix
+++ b/pkgs/applications/version-management/sourcehut/lists.nix
@@ -26,6 +26,8 @@ buildPythonPackage rec {
     export PKGVER=${version}
   '';
 
+  dontUseSetuptoolsCheck = true;
+
   meta = with stdenv.lib; {
     homepage = "https://git.sr.ht/~sircmpwn/lists.sr.ht";
     description = "Mailing list service for the sr.ht network";
diff --git a/pkgs/applications/version-management/sourcehut/man.nix b/pkgs/applications/version-management/sourcehut/man.nix
index 8072c74d2d0f..9f00180ff186 100644
--- a/pkgs/applications/version-management/sourcehut/man.nix
+++ b/pkgs/applications/version-management/sourcehut/man.nix
@@ -23,6 +23,8 @@ buildPythonPackage rec {
     export PKGVER=${version}
   '';
 
+  dontUseSetuptoolsCheck = true;
+
   meta = with stdenv.lib; {
     homepage = "https://git.sr.ht/~sircmpwn/man.sr.ht";
     description = "Wiki service for the sr.ht network";
diff --git a/pkgs/applications/version-management/sourcehut/meta.nix b/pkgs/applications/version-management/sourcehut/meta.nix
index 6cbae6715172..8887bdbb9564 100644
--- a/pkgs/applications/version-management/sourcehut/meta.nix
+++ b/pkgs/applications/version-management/sourcehut/meta.nix
@@ -48,6 +48,8 @@ in buildPythonPackage rec {
     cp ${buildAPI "${src}/api"}/bin/api $out/bin/metasrht-api
   '';
 
+  dontUseSetuptoolsCheck = true;
+
   meta = with stdenv.lib; {
     homepage = "https://git.sr.ht/~sircmpwn/meta.sr.ht";
     description = "Account management service for the sr.ht network";
diff --git a/pkgs/applications/version-management/sourcehut/paste.nix b/pkgs/applications/version-management/sourcehut/paste.nix
index a2fdaa05efca..e5bb5b379d14 100644
--- a/pkgs/applications/version-management/sourcehut/paste.nix
+++ b/pkgs/applications/version-management/sourcehut/paste.nix
@@ -23,6 +23,8 @@ buildPythonPackage rec {
     export PKGVER=${version}
   '';
 
+  dontUseSetuptoolsCheck = true;
+
   meta = with stdenv.lib; {
     homepage = "https://git.sr.ht/~sircmpwn/paste.sr.ht";
     description = "Ad-hoc text file hosting service for the sr.ht network";
diff --git a/pkgs/applications/version-management/sparkleshare/default.nix b/pkgs/applications/version-management/sparkleshare/default.nix
index 6f639ecd77fa..a7d1f86652c1 100644
--- a/pkgs/applications/version-management/sparkleshare/default.nix
+++ b/pkgs/applications/version-management/sparkleshare/default.nix
@@ -1,5 +1,6 @@
 {
   appindicator-sharp,
+  bash,
   coreutils,
   fetchFromGitHub,
   git,
@@ -57,6 +58,7 @@ stdenv.mkDerivation rec {
         --set PATH ${symlinkJoin {
           name = "mono-path";
           paths = [
+            bash
             coreutils
             git
             git-lfs
diff --git a/pkgs/applications/version-management/tortoisehg/default.nix b/pkgs/applications/version-management/tortoisehg/default.nix
index 2743d4f827fb..6c97d1536619 100644
--- a/pkgs/applications/version-management/tortoisehg/default.nix
+++ b/pkgs/applications/version-management/tortoisehg/default.nix
@@ -4,16 +4,16 @@
 let
   tortoisehgSrc = fetchurl rec {
     meta.name = "tortoisehg-${meta.version}";
-    meta.version = "5.2.1";
-    url = "https://bitbucket.org/tortoisehg/thg/get/14221e991a5b623e0072d3bd340b759dbe9072ca.tar.gz";
-    sha256 = "01rpzf5z99izcdda1ps9bhqvhw6qghagd8c1y7x19rv223zi05dv";
+    meta.version = "5.6";
+    url = "https://www.mercurial-scm.org/release/tortoisehg/targz/tortoisehg-${meta.version}.tar.gz";
+    sha256 = "031bafj88wggpvw0lgvl0djhlbhs9nls9vzwvni8yn0m0bgzc9gr";
   };
 
   tortoiseMercurial = mercurial.overridePythonAttrs (old: rec {
     inherit (tortoisehgSrc.meta) version;
     src = fetchurl {
       url = "https://mercurial-scm.org/release/mercurial-${version}.tar.gz";
-      sha256 = "1pxkd37b0a1mi2zakk1hi122lgz1ffy2fxdnbs8acwlqpw55bc8q";
+      sha256 = "1hk2y30zzdnlv8f71kabvh0xi9c7qhp28ksh20vpd0r712sv79yz";
     };
   });
 
diff --git a/pkgs/applications/video/gnomecast/default.nix b/pkgs/applications/video/gnomecast/default.nix
index e4814e40c1fd..486159135055 100644
--- a/pkgs/applications/video/gnomecast/default.nix
+++ b/pkgs/applications/video/gnomecast/default.nix
@@ -1,4 +1,4 @@
-{ lib, python3Packages, gtk3, gobject-introspection, ffmpeg_3, wrapGAppsHook }:
+{ stdenv, lib, python3Packages, gtk3, gobject-introspection, ffmpeg_3, wrapGAppsHook }:
 
 with python3Packages;
 buildPythonApplication rec {
@@ -24,5 +24,6 @@ buildPythonApplication rec {
     description = "A native Linux GUI for Chromecasting local files";
     homepage = "https://github.com/keredson/gnomecast";
     license = with licenses; [ gpl3 ];
+    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/applications/video/jellyfin-mpv-shim/default.nix b/pkgs/applications/video/jellyfin-mpv-shim/default.nix
index 825aac4dad29..475b04c58620 100644
--- a/pkgs/applications/video/jellyfin-mpv-shim/default.nix
+++ b/pkgs/applications/video/jellyfin-mpv-shim/default.nix
@@ -53,6 +53,10 @@ buildPythonApplication rec {
     pywebview
   ];
 
+  # no tests
+  doCheck = false;
+  pythonImportsCheck = [ "jellyfin_mpv_shim" ];
+
   meta = with stdenv.lib; {
     homepage = "https://github.com/iwalton3/jellyfin-mpv-shim";
     description = "Allows casting of videos to MPV via the jellyfin mobile and web app";
diff --git a/pkgs/applications/video/makemkv/default.nix b/pkgs/applications/video/makemkv/default.nix
index 6f47307f4a6a..47fb6fc9b1b8 100644
--- a/pkgs/applications/video/makemkv/default.nix
+++ b/pkgs/applications/video/makemkv/default.nix
@@ -13,21 +13,21 @@
 }:
 
 let
-  version = "1.15.3";
+  version = "1.15.4";
   # Using two URLs as the first one will break as soon as a new version is released
   src_bin = fetchurl {
     urls = [
       "http://www.makemkv.com/download/makemkv-bin-${version}.tar.gz"
       "http://www.makemkv.com/download/old/makemkv-bin-${version}.tar.gz"
     ];
-    hash = "sha256-Y23aetnwqLGaBIgJ/AP0oCrh8P5jpVrcMJgmc0Oe+i8=";
+    hash = "sha256-Reun5hp7Rnsf6N5yL6iQ1Vbhnz/AKnt/jYRqyOK625o=";
   };
   src_oss = fetchurl {
     urls = [
       "http://www.makemkv.com/download/makemkv-oss-${version}.tar.gz"
       "http://www.makemkv.com/download/old/makemkv-oss-${version}.tar.gz"
     ];
-    hash = "sha256-Qruq9YKAaNF1pDtOhptP95UjFL2NA4EuROR4v6XZHEw=";
+    hash = "sha256-gtBi1IRNF5ASk/ZdzkDmOuEIT9gazNaRNCftqbLEP+M=";
   };
 in mkDerivation {
   pname = "makemkv";
diff --git a/pkgs/applications/video/mpc-qt/default.nix b/pkgs/applications/video/mpc-qt/default.nix
index d9de3eb699d4..d9d02ce792dc 100644
--- a/pkgs/applications/video/mpc-qt/default.nix
+++ b/pkgs/applications/video/mpc-qt/default.nix
@@ -29,6 +29,7 @@ mkDerivation rec {
     homepage = "https://gitlab.com/mpc-qt/mpc-qt";
     license = licenses.gpl2;
     platforms = platforms.unix;
+    broken = stdenv.isDarwin;
     maintainers = with maintainers; [ romildo ];
   };
 }
diff --git a/pkgs/applications/video/mpv/default.nix b/pkgs/applications/video/mpv/default.nix
index 2b9605aa3c26..02135fe52ed1 100644
--- a/pkgs/applications/video/mpv/default.nix
+++ b/pkgs/applications/video/mpv/default.nix
@@ -1,4 +1,4 @@
-{ config, stdenv, fetchFromGitHub
+{ config, stdenv, fetchFromGitHub, fetchpatch
 , addOpenGLRunpath, docutils, perl, pkgconfig, python3, wafHook, which
 , ffmpeg, freefont_ttf, freetype, libass, libpthreadstubs, mujs
 , nv-codec-headers, lua, libuchardet, libiconv ? null
@@ -104,6 +104,14 @@ in stdenv.mkDerivation rec {
     sha256 = "sha256-3l32qQBpvWVjbLp5CZtO039oDQeH7C/cNAKtJxrzlRk=";
   };
 
+  patches = [
+    # To make mpv build with libplacebo 3.104.0:
+    (fetchpatch { # vo_gpu: placebo: update for upstream API changes
+      url = "https://github.com/mpv-player/mpv/commit/7c4465cefb27d4e0d07535d368febdf77b579566.patch";
+      sha256 = "1yfc6220ak5kc5kf7zklmsa944nr9q0qaa27l507pgrmvcyiyzrx";
+    })
+  ];
+
   postPatch = ''
     patchShebangs ./TOOLS/
   '';
diff --git a/pkgs/applications/video/openshot-qt/default.nix b/pkgs/applications/video/openshot-qt/default.nix
index 9245bdf03e43..ede47ad061f6 100644
--- a/pkgs/applications/video/openshot-qt/default.nix
+++ b/pkgs/applications/video/openshot-qt/default.nix
@@ -55,8 +55,5 @@ mkDerivationWith python3Packages.buildPythonApplication rec {
     license = with licenses; gpl3Plus;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = with platforms; unix;
-    # Cannot use a newer Qt (5.15) version because it requires qtwebkit
-    # and our qtwebkit fails to build with 5.15. 01bcfd3579219d60e5d07df309a000f96b2b658b
-    broken = true;
   };
 }
diff --git a/pkgs/applications/video/openshot-qt/libopenshot.nix b/pkgs/applications/video/openshot-qt/libopenshot.nix
index 1b6084a1d2f9..1ab7a5266a23 100644
--- a/pkgs/applications/video/openshot-qt/libopenshot.nix
+++ b/pkgs/applications/video/openshot-qt/libopenshot.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub
+{ stdenv, fetchFromGitHub, fetchpatch
 , pkgconfig, cmake, doxygen
 , libopenshot-audio, imagemagick, ffmpeg_3
 , swig, python3
@@ -19,7 +19,15 @@ stdenv.mkDerivation rec {
     sha256 = "1mxjkgjmjzgf628y3rscc6rqf55hxgjpmvwxlncfk1216i5xskwp";
   };
 
-  patchPhase = ''
+  patches = [
+    (fetchpatch {
+      name = "fix-build-with-gcc-10.patch";
+      url = "https://github.com/OpenShot/libopenshot/commit/13290364e7bea54164ab83d973951f2898ad9e23.diff";
+      sha256 = "0i7rpdsr8y9dphil8yq75qbh20vfqjc2hp5ahv0ws58z9wj6ngnz";
+    })
+  ];
+
+  postPatch = ''
     sed -i 's/{UNITTEST++_INCLUDE_DIR}/ENV{UNITTEST++_INCLUDE_DIR}/g' tests/CMakeLists.txt
     sed -i 's/{_REL_PYTHON_MODULE_PATH}/ENV{_REL_PYTHON_MODULE_PATH}/g' src/bindings/python/CMakeLists.txt
     export _REL_PYTHON_MODULE_PATH=$(toPythonPath $out)
diff --git a/pkgs/applications/video/plex-mpv-shim/default.nix b/pkgs/applications/video/plex-mpv-shim/default.nix
index e25c101b5dfb..5006bf8ddaa4 100644
--- a/pkgs/applications/video/plex-mpv-shim/default.nix
+++ b/pkgs/applications/video/plex-mpv-shim/default.nix
@@ -13,6 +13,9 @@ buildPythonApplication rec {
 
   propagatedBuildInputs = [ mpv requests python-mpv-jsonipc ];
 
+  # does not contain tests
+  doCheck = false;
+
   meta = with stdenv.lib; {
     homepage = "https://github.com/iwalton3/plex-mpv-shim";
     description = "Allows casting of videos to MPV via the Plex mobile and web app";
diff --git a/pkgs/applications/virtualization/nvidia-docker/default.nix b/pkgs/applications/virtualization/nvidia-docker/default.nix
index d0d7125721f8..0df2efebd820 100644
--- a/pkgs/applications/virtualization/nvidia-docker/default.nix
+++ b/pkgs/applications/virtualization/nvidia-docker/default.nix
@@ -1,66 +1,99 @@
-{ stdenv, lib, fetchFromGitHub, fetchpatch, callPackage, makeWrapper
-, buildGoPackage, runc, glibc }:
+{ stdenv
+, lib
+, fetchFromGitHub
+, fetchpatch
+, callPackage
+, makeWrapper
+, buildGoModule
+, buildGoPackage
+, glibc
+, docker
+, linkFarm
+, containerRuntimePath ? "${docker}/libexec/docker/runc"
+}:
 
 with lib; let
-
   libnvidia-container = callPackage ./libnvc.nix { };
+  isolatedContainerRuntimePath = linkFarm "isolated_container_runtime_path" [
+    {
+      name = "runc";
+      path = containerRuntimePath;
+    }
+  ];
 
-  nvidia-container-runtime = fetchFromGitHub {
-    owner = "NVIDIA";
-    repo = "nvidia-container-runtime";
-    rev = "runtime-v2.0.0";
-    sha256 = "0jcj5xxbg7x7gyhbb67h3ds6vly62gx7j02zm6lg102h34jajj7a";
-  };
-
-  nvidia-container-runtime-hook = buildGoPackage {
-    pname = "nvidia-container-runtime-hook";
-    version = "1.4.0";
-
-    goPackagePath = "nvidia-container-runtime-hook";
-
-    src = "${nvidia-container-runtime}/hook/nvidia-container-runtime-hook";
+  nvidia-container-runtime = buildGoPackage rec {
+    pname = "nvidia-container-runtime";
+    version = "3.4.0";
+    src = fetchFromGitHub {
+      owner = "NVIDIA";
+      repo = "nvidia-container-runtime";
+      rev = "v${version}";
+      sha256 = "095mks0r4079vawi50pk4zb5jk0g6s9idg2s1w55a0d27jkknldr";
+    };
+    goPackagePath = "github.com/nvidia-container-runtime/src";
+    buildFlagsArray = [ "-ldflags=" "-s -w" ];
+    postInstall = ''
+      mv $out/bin/{src,nvidia-container-runtime}
+    '';
   };
 
-  nvidia-runc = runc.overrideAttrs (oldAttrs: rec {
-    name = "nvidia-runc";
-    version = "1.0.0-rc6";
+  nvidia-container-toolkit = buildGoModule rec {
+    pname = "nvidia-container-toolkit";
+    version = "1.3.0";
     src = fetchFromGitHub {
-      owner = "opencontainers";
-      repo = "runc";
+      owner = "NVIDIA";
+      repo = "nvidia-container-toolkit";
       rev = "v${version}";
-      sha256 = "1jwacb8xnmx5fr86gximhbl9dlbdwj3rpf27hav9q1si86w5pb1j";
+      sha256 = "04284bhgx4j55vg9ifvbji2bvmfjfy3h1lq7q356ffgw3yr9n0hn";
     };
-    patches = [ "${nvidia-container-runtime}/runtime/runc/3f2f8b84a77f73d38244dd690525642a72156c64/0001-Add-prestart-hook-nvidia-container-runtime-hook-to-t.patch" ];
-  });
+    vendorSha256 = "17zpiyvf22skfcisflsp6pn56y6a793jcx89kw976fq2x5br1bz7";
+    buildFlagsArray = [ "-ldflags=" "-s -w" ];
+    postInstall = ''
+      mv $out/bin/{pkg,${pname}}
+      cp $out/bin/{${pname},nvidia-container-runtime-hook}
+    '';
+  };
 
-in stdenv.mkDerivation rec {
+in
+stdenv.mkDerivation rec {
   pname = "nvidia-docker";
-  version = "2.0.3";
+  version = "2.5.0";
 
   src = fetchFromGitHub {
     owner = "NVIDIA";
     repo = "nvidia-docker";
     rev = "v${version}";
-    sha256 = "1vx5m591mnvcb9vy0196x5lh3r8swjsk0fnlv5h62m7m4m07v6wx";
+    sha256 = "1n1k7fnimky67s12p2ycaq9mgk245fchq62vgd7bl3bzfcbg0z4h";
   };
 
   nativeBuildInputs = [ makeWrapper ];
 
   buildPhase = ''
     mkdir bin
+
     cp nvidia-docker bin
+    substituteInPlace bin/nvidia-docker --subst-var-by VERSION ${version}
+
     cp ${libnvidia-container}/bin/nvidia-container-cli bin
-    cp ${nvidia-container-runtime-hook}/bin/nvidia-container-runtime-hook bin
-    cp ${nvidia-runc}/bin/runc bin/nvidia-container-runtime
+    cp ${nvidia-container-toolkit}/bin/nvidia-container-{toolkit,runtime-hook} bin
+    cp ${nvidia-container-runtime}/bin/nvidia-container-runtime bin
   '';
 
   installPhase = ''
     mkdir -p $out/{bin,etc}
     cp -r bin $out
+
     wrapProgram $out/bin/nvidia-container-cli \
       --prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:/run/opengl-driver-32/lib
+
+    # nvidia-container-runtime invokes docker-runc or runc if that isn't available on PATH
+    wrapProgram $out/bin/nvidia-container-runtime --prefix PATH : ${isolatedContainerRuntimePath}
+
     cp ${./config.toml} $out/etc/config.toml
     substituteInPlace $out/etc/config.toml --subst-var-by glibcbin ${lib.getBin glibc}
+
+    cp ${./podman-config.toml} $out/etc/podman-config.toml
+    substituteInPlace $out/etc/podman-config.toml --subst-var-by glibcbin ${lib.getBin glibc}
   '';
 
   meta = {
@@ -68,5 +101,6 @@ in stdenv.mkDerivation rec {
     description = "NVIDIA container runtime for Docker";
     license = licenses.bsd3;
     platforms = platforms.linux;
+    maintainers = with lib.maintainers; [ cpcloud ];
   };
 }
diff --git a/pkgs/applications/virtualization/nvidia-docker/libnvc-ldconfig-and-path-fixes.patch b/pkgs/applications/virtualization/nvidia-docker/libnvc-ldconfig-and-path-fixes.patch
index 9ae8d6b5e756..d4638791a01c 100644
--- a/pkgs/applications/virtualization/nvidia-docker/libnvc-ldconfig-and-path-fixes.patch
+++ b/pkgs/applications/virtualization/nvidia-docker/libnvc-ldconfig-and-path-fixes.patch
@@ -86,7 +86,7 @@ index 30e3cfd..6d12a50 100644
          if (info->libs == NULL)
                  goto fail;
          if (ldcache_resolve(&ld, LIB_ARCH, root, libs,
--            info->libs, info->nlibs, select_libraries, info) < 0)
+-            info->libs, info->nlibs, select_libraries_fn, info) < 0)
 +            info->libs, info->nlibs, info->nvrm_version) < 0)
                  goto fail;
  
@@ -95,7 +95,7 @@ index 30e3cfd..6d12a50 100644
          if (info->libs32 == NULL)
                  goto fail;
          if (ldcache_resolve(&ld, LIB32_ARCH, root, libs,
--            info->libs32, info->nlibs32, select_libraries, info) < 0)
+-            info->libs32, info->nlibs32, select_libraries_fn, info) < 0)
 +            info->libs32, info->nlibs32, info->nvrm_version) < 0)
                  goto fail;
          rv = 0;
diff --git a/pkgs/applications/virtualization/nvidia-docker/libnvc.nix b/pkgs/applications/virtualization/nvidia-docker/libnvc.nix
index 6079f215ec80..95d66582618e 100644
--- a/pkgs/applications/virtualization/nvidia-docker/libnvc.nix
+++ b/pkgs/applications/virtualization/nvidia-docker/libnvc.nix
@@ -9,23 +9,23 @@
 , libtirpc
 }:
 let
-  modp-ver = "396.51";
+  modp-ver = "450.57";
   nvidia-modprobe = fetchFromGitHub {
     owner = "NVIDIA";
     repo = "nvidia-modprobe";
     rev = modp-ver;
-    sha256 = "1fw2qwc84k64agw6fx2v0mjf88aggph9c6qhs4cv7l3gmflv8qbk";
+    sha256 = "0r4f6lpbbqqs9932xd2mr7bxn6a3xdalcwq332fc1amrrkgzfyv7";
   };
 in
 stdenv.mkDerivation rec {
   pname = "libnvidia-container";
-  version = "1.0.6";
+  version = "1.3.1";
 
   src = fetchFromGitHub {
     owner = "NVIDIA";
     repo = "libnvidia-container";
     rev = "v${version}";
-    sha256 = "1pnpc9knwh8d1zqb28zc3spkjc00w0z10vd3jna8ksvpl35jl7w3";
+    sha256 = "0j6b8z9x9hrrs4xp11zyjjd7kyl7fzcicpiis8k1qb1q2afnqsrq";
   };
 
   patches = [
@@ -58,7 +58,10 @@ stdenv.mkDerivation rec {
     mkdir -p deps/src/nvidia-modprobe-${modp-ver}
     cp -r ${nvidia-modprobe}/* deps/src/nvidia-modprobe-${modp-ver}
     chmod -R u+w deps/src
-    touch deps/src/nvidia-modprobe-${modp-ver}/.download_stamp
+    pushd deps/src
+    patch -p0 < ${./modprobe.patch}
+    touch nvidia-modprobe-${modp-ver}/.download_stamp
+    popd
   '';
 
   NIX_CFLAGS_COMPILE = [ "-I${libtirpc.dev}/include/tirpc" ];
diff --git a/pkgs/applications/virtualization/nvidia-docker/modprobe.patch b/pkgs/applications/virtualization/nvidia-docker/modprobe.patch
new file mode 100644
index 000000000000..8e7b0a723ec0
--- /dev/null
+++ b/pkgs/applications/virtualization/nvidia-docker/modprobe.patch
@@ -0,0 +1,29 @@
+diff -ruN nvidia-modprobe-450.57/modprobe-utils/nvidia-modprobe-utils.c nvidia-modprobe-450.57/modprobe-utils/nvidia-modprobe-utils.c
+--- nvidia-modprobe-450.57/modprobe-utils/nvidia-modprobe-utils.c	2020-07-09 17:06:05.000000000 +0000
++++ nvidia-modprobe-450.57/modprobe-utils/nvidia-modprobe-utils.c	2020-08-18 12:43:03.223871514 +0000
+@@ -840,10 +840,10 @@
+     return mknod_helper(major, minor_num, vgpu_dev_name, NV_PROC_REGISTRY_PATH);
+ }
+
+-static int nvidia_cap_get_device_file_attrs(const char* cap_file_path,
+-                                            int *major,
+-                                            int *minor,
+-                                            char *name)
++int nvidia_cap_get_device_file_attrs(const char* cap_file_path,
++                                     int *major,
++                                     int *minor,
++                                     char *name)
+ {
+     char field[32];
+     FILE *fp;
+diff -ruN nvidia-modprobe-450.57/modprobe-utils/nvidia-modprobe-utils.h nvidia-modprobe-450.57/modprobe-utils/nvidia-modprobe-utils.h
+--- nvidia-modprobe-450.57/modprobe-utils/nvidia-modprobe-utils.h	2020-07-09 17:06:05.000000000 +0000
++++ nvidia-modprobe-450.57/modprobe-utils/nvidia-modprobe-utils.h	2020-08-18 12:43:44.227745050 +0000
+@@ -81,6 +81,7 @@
+ int nvidia_nvswitch_get_file_state(int minor);
+ int nvidia_cap_mknod(const char* cap_file_path, int *minor);
+ int nvidia_cap_get_file_state(const char* cap_file_path);
++int nvidia_cap_get_device_file_attrs(const char* cap_file_path, int *major, int *minor, char *name);
+ int nvidia_get_chardev_major(const char *name);
+
+ #endif /* NV_LINUX */
diff --git a/pkgs/applications/virtualization/nvidia-docker/podman-config.toml b/pkgs/applications/virtualization/nvidia-docker/podman-config.toml
new file mode 100644
index 000000000000..eb39699b96b3
--- /dev/null
+++ b/pkgs/applications/virtualization/nvidia-docker/podman-config.toml
@@ -0,0 +1,13 @@
+disable-require = true
+#swarm-resource = "DOCKER_RESOURCE_GPU"
+
+[nvidia-container-cli]
+#root = "/run/nvidia/driver"
+#path = "/usr/bin/nvidia-container-cli"
+environment = []
+#debug = "/var/log/nvidia-container-runtime-hook.log"
+ldcache = "/tmp/ld.so.cache"
+load-kmods = true
+no-cgroups = true
+#user = "root:video"
+ldconfig = "@@glibcbin@/bin/ldconfig"
diff --git a/pkgs/build-support/coq/default.nix b/pkgs/build-support/coq/default.nix
new file mode 100644
index 000000000000..7e925e2473e1
--- /dev/null
+++ b/pkgs/build-support/coq/default.nix
@@ -0,0 +1,92 @@
+{ lib, stdenv, coqPackages, coq, fetchzip }@args:
+let lib = import ./extra-lib.nix {inherit (args) lib;}; in
+with builtins; with lib;
+let
+  isGitHubDomain = d: match "^github.*" d != null;
+  isGitLabDomain = d: match "^gitlab.*" d != null;
+in
+{ pname,
+  version ? null,
+  fetcher ? null,
+  owner ? "coq-community",
+  domain ? "github.com",
+  repo ? pname,
+  defaultVersion ? null,
+  releaseRev ? (v: v),
+  displayVersion ? {},
+  release ? {},
+  extraBuildInputs ? [],
+  namePrefix ? [],
+  enableParallelBuilding ? true,
+  extraInstallFlags ? [],
+  setCOQBIN ? true,
+  mlPlugin ? false,
+  useMelquiondRemake ? null,
+  dropAttrs ? [],
+  keepAttrs ? [],
+  dropDerivationAttrs ? [],
+  ...
+}@args:
+let
+  args-to-remove = foldl (flip remove) ([
+    "version" "fetcher" "repo" "owner" "domain" "releaseRev"
+    "displayVersion" "defaultVersion" "useMelquiondRemake"
+    "release" "extraBuildInputs" "extraPropagatedBuildInputs" "namePrefix" "meta"
+    "extraInstallFlags" "setCOQBIN" "mlPlugin"
+    "dropAttrs" "dropDerivationAttrs" "keepAttrs" ] ++ dropAttrs) keepAttrs;
+  fetch = import ../coq/meta-fetch/default.nix
+    { inherit stdenv fetchzip; } ({
+      inherit release releaseRev;
+      location = { inherit domain owner repo; };
+    } // optionalAttrs (args?fetcher) {inherit fetcher;});
+  fetched = fetch (if !isNull version then version else defaultVersion);
+  namePrefix = args.namePrefix or [ "coq" ];
+  display-pkg = n: sep: v:
+    let d = displayVersion.${n} or (if sep == "" then ".." else true); in
+    n + optionalString (v != "" && v != null) (switch d [
+      { case = true;       out = sep + v; }
+      { case = ".";        out = sep + versions.major v; }
+      { case = "..";       out = sep + versions.majorMinor v; }
+      { case = "...";      out = sep + versions.majorMinorPatch v; }
+      { case = isFunction; out = optionalString (d v != "") (sep + d v); }
+      { case = isString;   out = optionalString (d != "") (sep + d); }
+    ] "") + optionalString (v == null) "-broken";
+  append-version = p: n: p + display-pkg n "" coqPackages.${n}.version + "-";
+  prefix-name = foldl append-version "" namePrefix;
+  var-coqlib-install = (optionalString (versions.isGe "8.7" coq.coq-version) "COQMF_") + "COQLIB";
+in
+
+stdenv.mkDerivation (removeAttrs ({
+
+  name = prefix-name + (display-pkg pname "-" fetched.version);
+
+  inherit (fetched) version src;
+
+  buildInputs = [ coq ] ++ optionals mlPlugin coq.ocamlBuildInputs ++ extraBuildInputs;
+  inherit enableParallelBuilding;
+
+  meta = ({ platforms = coq.meta.platforms; } //
+    (switch domain [{
+        case = pred.union isGitHubDomain isGitLabDomain;
+        out = { homepage = "https://${domain}/${owner}/${repo}"; };
+      }] {}) //
+    optionalAttrs (fetched.broken or false) { coqFilter = true; broken = true; }) //
+    (args.meta or {}) ;
+
+} //
+(optionalAttrs setCOQBIN { COQBIN = "${coq}/bin/"; }) //
+(optionalAttrs (!args?installPhase && !args?useMelquiondRemake) {
+  installFlags =
+    [ "${var-coqlib-install}=$(out)/lib/coq/${coq.coq-version}/" ] ++
+    optional (match ".*doc$" (args.installTargets or "") != null)
+      "DOCDIR=$(out)/share/coq/${coq.coq-version}/" ++
+    extraInstallFlags;
+}) //
+(optionalAttrs (args?useMelquiondRemake) rec {
+  COQUSERCONTRIB = "$out/lib/coq/${coq.coq-version}/user-contrib";
+  preConfigurePhases = "autoconf";
+  configureFlags = [ "--libdir=${COQUSERCONTRIB}/${useMelquiondRemake.logpath or ""}" ];
+  buildPhase = "./remake -j$NIX_BUILD_CORES";
+  installPhase = "./remake install";
+}) //
+(removeAttrs args args-to-remove)) dropDerivationAttrs)
diff --git a/pkgs/build-support/coq/extra-lib.nix b/pkgs/build-support/coq/extra-lib.nix
new file mode 100644
index 000000000000..65b48f511267
--- /dev/null
+++ b/pkgs/build-support/coq/extra-lib.nix
@@ -0,0 +1,145 @@
+{ lib }:
+with builtins; with lib; recursiveUpdate lib (rec {
+
+  versions =
+    let
+      truncate = n: v: concatStringsSep "." (take n (splitVersion v));
+      opTruncate = op: v0: v: let n = length (splitVersion v0); in
+         op (truncate n v) (truncate n v0);
+    in rec {
+
+    /* Get string of the first n parts of a version string.
+
+       Example:
+       - truncate 2 "1.2.3-stuff"
+         => "1.2"
+
+       - truncate 4 "1.2.3-stuff"
+         => "1.2.3.stuff"
+    */
+
+    inherit truncate;
+
+    /* Get string of the first three parts (major, minor and patch)
+       of a version string.
+
+       Example:
+         majorMinorPatch "1.2.3-stuff"
+         => "1.2.3"
+    */
+    majorMinorPatch = truncate 3;
+
+    /* Version comparison predicates,
+      - isGe v0 v <-> v is greater or equal than v0   [*]
+      - isLe v0 v <-> v is lesser  or equal than v0   [*]
+      - isGt v0 v <-> v is strictly greater than v0   [*]
+      - isLt v0 v <-> v is strictly lesser  than v0   [*]
+      - isEq v0 v <-> v is equal to v0                [*]
+      - range low high v <-> v is between low and high [**]
+
+    [*]  truncating v to the same number of digits as v0
+    [**] truncating v to low for the lower bound and high for the upper bound
+
+      Examples:
+      - isGe "8.10" "8.10.1"
+        => true
+      - isLe "8.10" "8.10.1"
+        => true
+      - isGt "8.10" "8.10.1"
+        => false
+      - isGt "8.10.0" "8.10.1"
+        => true
+      - isEq "8.10" "8.10.1"
+        => true
+      - range "8.10" "8.11" "8.11.1"
+        => true
+      - range "8.10" "8.11+" "8.11.0"
+        => false
+      - range "8.10" "8.11+" "8.11+beta1"
+        => false
+
+    */
+    isGe = opTruncate versionAtLeast;
+    isGt = opTruncate (flip versionOlder);
+    isLe = opTruncate (flip versionAtLeast);
+    isLt = opTruncate versionOlder;
+    isEq = opTruncate pred.equal;
+    range = low: high: pred.inter (versions.isGe low) (versions.isLe high);
+  };
+
+  /* Returns a list of list, splitting it using a predicate.
+     This is analoguous to builtins.split sep list,
+     with a predicate as a separator and a list instead of a string.
+
+    Type: splitList :: (a -> bool) -> [a] -> [[a]]
+
+    Example:
+      splitList (x: x == "x") [ "y" "x" "z" "t" ]
+      => [ [ "y" ] "x" [ "z" "t" ] ]
+  */
+  splitList = pred: l: # put in file lists
+    let loop = (vv: v: l: if l == [] then vv ++ [v]
+      else let hd = head l; tl = tail l; in
+      if pred hd then loop (vv ++ [ v hd ]) [] tl else loop vv (v ++ [hd]) tl);
+    in loop [] [] l;
+
+  pred = {
+    /* Predicate intersection, union, and complement */
+    inter = p: q: x: p x && q x;
+    union = p: q: x: p x || q x;
+    compl = p:    x: ! p x;
+    true  = p: true;
+    false = p: false;
+
+    /* predicate "being equal to y" */
+    equal = y:    x: x == y;
+  };
+
+  /* Emulate a "switch - case" construct,
+   instead of relying on `if then else if ...` */
+  /* Usage:
+  ```nix
+  switch-if [
+    if-clause-1
+    ..
+    if-clause-k
+  ] default-out
+  ```
+  where a if-clause has the form `{ cond = b; out = r; }`
+  the first branch such as `b` is true */
+
+  switch-if = c: d: (findFirst (getAttr "cond") {} c).out or d;
+
+  /* Usage:
+  ```nix
+  switch x [
+    simple-clause-1
+    ..
+    simple-clause-k
+  ] default-out
+  ```
+  where a simple-clause has the form `{ case = p; out = r; }`
+  the first branch such as `p x` is true
+  or
+  ```nix
+  switch [ x1 .. xn ] [
+    complex-clause-1
+    ..
+    complex-clause-k
+  ] default-out
+  ```
+  where a complex-clause is either a simple-clause
+  or has the form { cases = [ p1 .. pn ]; out = r; }
+  in which case the first branch such as all `pi x` are true
+
+  if the variables p are not functions,
+  they are converted to a equal p
+  if out is missing the default-out is taken */
+
+  switch = var: clauses: default: with pred; let
+      compare = f:  if isFunction f then f else equal f;
+      combine = cl: var:
+        if cl?case then compare cl.case var
+        else all (equal true) (zipListsWith compare cl.cases var); in
+    switch-if (map (cl: { cond = combine cl var; inherit (cl) out; }) clauses) default;
+})
diff --git a/pkgs/build-support/coq/meta-fetch/default.nix b/pkgs/build-support/coq/meta-fetch/default.nix
new file mode 100644
index 000000000000..580d58395ef4
--- /dev/null
+++ b/pkgs/build-support/coq/meta-fetch/default.nix
@@ -0,0 +1,66 @@
+{ stdenv, fetchzip }@args:
+let lib = import ../extra-lib.nix {inherit (args.stdenv) lib;}; in
+with builtins; with lib;
+let
+  default-fetcher = {domain ? "github.com", owner ? "", repo, rev, name ? "source", sha256 ? null, ...}@args:
+    let ext = if args?sha256 then "zip" else "tar.gz";
+        fmt = if args?sha256 then "zip" else "tarball";
+        pr  = match "^#(.*)$" rev;
+        url = switch-if [
+          { cond = isNull pr && !isNull (match "^github.*" domain);
+            out = "https://${domain}/${owner}/${repo}/archive/${rev}.${ext}"; }
+          { cond = !isNull pr && !isNull (match "^github.*" domain);
+            out = "https://api.${domain}/repos/${owner}/${repo}/${fmt}/pull/${head pr}/head"; }
+          { cond = isNull pr && !isNull (match "^gitlab.*" domain);
+            out = "https://${domain}/${owner}/${repo}/-/archive/${rev}/${repo}-${rev}.${ext}"; }
+          { cond = !isNull (match "(www.)?mpi-sws.org" domain);
+            out = "https://www.mpi-sws.org/~${owner}/${repo}/download/${repo}-${rev}.${ext}";}
+        ] (throw "meta-fetch: no fetcher found for domain ${domain} on ${rev}");
+        fetch = x: if args?sha256 then fetchzip (x // { inherit sha256; }) else fetchTarball x;
+    in fetch { inherit url ; };
+in
+{
+  fetcher ? default-fetcher,
+  location,
+  release ? {},
+  releaseRev ? (v: v),
+}:
+let isVersion      = x: isString x && match "^/.*" x == null && release?${x};
+    shortVersion   = x: if (isString x && match "^/.*" x == null)
+      then findFirst (v: versions.majorMinor v == x) null
+        (sort versionAtLeast (attrNames release))
+      else null;
+    isShortVersion = x: shortVersion x != null;
+    isPathString   = x: isString x && match "^/.*" x != null && pathExists x; in
+arg:
+switch arg [
+  { case = isNull;       out = { version = "broken"; src = ""; broken = true; }; }
+  { case = isPathString; out = { version = "dev"; src = arg; }; }
+  { case = pred.union isVersion isShortVersion;
+    out = let v = if isVersion arg then arg else shortVersion arg; in
+      if !release.${v}?sha256 then throw "meta-fetch: a sha256 must be provided for each release"
+      else {
+        version = release.${v}.version or v;
+        src = release.${v}.src or fetcher (location // { rev = releaseRev v; } // release.${v});
+      };
+    }
+  { case = isString;
+    out = let
+        splitted  = filter isString (split ":" arg);
+        rev       = last splitted;
+        has-owner = length splitted > 1;
+        version   = "dev"; in {
+      inherit version;
+      src = fetcher (location // { inherit rev; } //
+        (optionalAttrs has-owner { owner = head splitted; }));
+    }; }
+  { case = isAttrs;
+    out = let
+    { version = arg.version or "dev";
+      src = (arg.fetcher or fetcher) (location // (arg.location or {}));
+    }; }
+  { case = isPath;
+    out = {
+      version = "dev" ;
+      src = builtins.path {path = arg; name = location.name or "source";}; }; }
+] (throw "not a valid source description")
diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix
index 276c7cd1bdb8..ae97d5691331 100644
--- a/pkgs/build-support/docker/default.nix
+++ b/pkgs/build-support/docker/default.nix
@@ -35,7 +35,6 @@
   system,  # Note: This is the cross system we're compiling for
 }:
 
-# WARNING: this API is unstable and may be subject to backwards-incompatible changes in the future.
 let
 
   mkDbExtraCommand = contents: let
diff --git a/pkgs/build-support/emacs/wrapper.nix b/pkgs/build-support/emacs/wrapper.nix
index a3136839122d..ddd150656632 100644
--- a/pkgs/build-support/emacs/wrapper.nix
+++ b/pkgs/build-support/emacs/wrapper.nix
@@ -203,10 +203,6 @@ runCommand
         --subst-var-by wrapperSiteLisp "$deps/share/emacs/site-lisp" \
         --subst-var-by prog "$emacs/Applications/Emacs.app/Contents/MacOS/Emacs"
       chmod +x $out/Applications/Emacs.app/Contents/MacOS/Emacs
-
-      makeWrapper $emacs/Applications/Emacs.app/Contents/MacOS/Emacs $out/Applications/Emacs.app/Contents/MacOS/Emacs \
-        --suffix EMACSLOADPATH ":" "$deps/share/emacs/site-lisp:" \
-        --suffix EMACSNATIVELOADPATH ":" "$deps/share/emacs/native-lisp:"
     fi
 
     mkdir -p $out/share
diff --git a/pkgs/build-support/rust/default-crate-overrides.nix b/pkgs/build-support/rust/default-crate-overrides.nix
index d0e69ad698a8..4ff8640c2ff5 100644
--- a/pkgs/build-support/rust/default-crate-overrides.nix
+++ b/pkgs/build-support/rust/default-crate-overrides.nix
@@ -1,6 +1,7 @@
-{ stdenv, pkgconfig, curl, darwin, libiconv, libgit2, libssh2,
+{ stdenv, pkg-config, curl, darwin, libiconv, libgit2, libssh2,
   openssl, sqlite, zlib, dbus, dbus-glib, gdk-pixbuf, cairo, python3,
-  libsodium, postgresql, gmp, foundationdb, ... }:
+  libsodium, postgresql, gmp, foundationdb, capnproto, nettle, clang,
+  llvmPackages, ... }:
 
 let
   inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
@@ -10,26 +11,30 @@ in
     buildInputs = [ cairo ];
   };
 
+  capnp-rpc = attrs: {
+    nativeBuildInputs = [ capnproto ];
+  };
+
   cargo = attrs: {
     buildInputs = [ openssl zlib curl ]
       ++ stdenv.lib.optionals stdenv.isDarwin [ CoreFoundation Security libiconv ];
   };
 
   libz-sys = attrs: {
-    nativeBuildInputs = [ pkgconfig ];
+    nativeBuildInputs = [ pkg-config ];
     buildInputs = [ zlib ];
     extraLinkFlags = ["-L${zlib.out}/lib"];
   };
 
   curl-sys = attrs: {
-    nativeBuildInputs = [ pkgconfig ];
+    nativeBuildInputs = [ pkg-config ];
     buildInputs = [ zlib curl ];
     propagatedBuildInputs = [ curl zlib ];
     extraLinkFlags = ["-L${zlib.out}/lib"];
   };
 
   dbus = attrs: {
-    nativeBuildInputs = [ pkgconfig ];
+    nativeBuildInputs = [ pkg-config ];
     buildInputs = [ dbus ];
   };
 
@@ -65,36 +70,42 @@ in
 
   libgit2-sys = attrs: {
     LIBGIT2_SYS_USE_PKG_CONFIG = true;
-    nativeBuildInputs = [ pkgconfig ];
+    nativeBuildInputs = [ pkg-config ];
     buildInputs = [ openssl zlib libgit2 ];
   };
 
   libsqlite3-sys = attrs: {
-    nativeBuildInputs = [ pkgconfig ];
+    nativeBuildInputs = [ pkg-config ];
     buildInputs = [ sqlite ];
   };
 
   libssh2-sys = attrs: {
-    nativeBuildInputs = [ pkgconfig ];
+    nativeBuildInputs = [ pkg-config ];
     buildInputs = [ openssl zlib libssh2 ];
   };
 
   libdbus-sys = attrs: {
-    nativeBuildInputs = [ pkgconfig ];
+    nativeBuildInputs = [ pkg-config ];
     buildInputs = [ dbus ];
   };
 
+  nettle-sys = attrs: {
+    nativeBuildInputs = [ pkg-config ];
+    buildInputs = [ nettle clang ];
+    LIBCLANG_PATH = "${llvmPackages.libclang}/lib";
+  };
+
   openssl = attrs: {
     buildInputs = [ openssl ];
   };
 
   openssl-sys = attrs: {
-    nativeBuildInputs = [ pkgconfig ];
+    nativeBuildInputs = [ pkg-config ];
     buildInputs = [ openssl ];
   };
 
   pq-sys = attr: {
-    nativeBuildInputs = [ pkgconfig ];
+    nativeBuildInputs = [ pkg-config ];
     buildInputs = [ postgresql ];
   };
 
@@ -107,12 +118,42 @@ in
     propagatedBuildInputs = [ Security ];
   };
 
+  sequoia-openpgp = attrs: {
+    buildInputs = [ gmp ];
+  };
+
+  sequoia-openpgp-ffi = attrs: {
+    buildInputs = [ gmp ];
+  };
+
+  sequoia-ipc = attrs: {
+    buildInputs = [ gmp ];
+  };
+
+  sequoia-guide = attrs: {
+    buildInputs = [ gmp ];
+  };
+
+  sequoia-store = attrs: {
+    nativeBuildInputs = [ capnproto ];
+    buildInputs = [ sqlite gmp ];
+  };
+
+  sequoia-sq = attrs: {
+    buildInputs = [ sqlite gmp ];
+  };
+
+  sequoia-tool = attrs: {
+    nativeBuildInputs = [ capnproto ];
+    buildInputs = [ sqlite gmp ];
+  };
+
   serde_derive = attrs: {
     buildInputs = stdenv.lib.optional stdenv.isDarwin Security;
   };
 
   thrussh-libsodium = attrs: {
-    nativeBuildInputs = [ pkgconfig ];
+    nativeBuildInputs = [ pkg-config ];
     buildInputs = [ libsodium ];
   };
 
diff --git a/pkgs/common-updater/scripts/update-source-version b/pkgs/common-updater/scripts/update-source-version
index 181561242fc3..90543a9cfc6a 100755
--- a/pkgs/common-updater/scripts/update-source-version
+++ b/pkgs/common-updater/scripts/update-source-version
@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
 set -e
 
-scriptName=update-source-versions # do not use the .wrapped name
+scriptName=update-source-version # do not use the .wrapped name
 
 die() {
     echo "$scriptName: error: $1" >&2
diff --git a/pkgs/data/fonts/fira-code/default.nix b/pkgs/data/fonts/fira-code/default.nix
index 4f0fb1e81c16..a3fac2d69d0b 100644
--- a/pkgs/data/fonts/fira-code/default.nix
+++ b/pkgs/data/fonts/fira-code/default.nix
@@ -7,12 +7,13 @@ in fetchzip {
 
   url = "https://github.com/tonsky/FiraCode/releases/download/${version}/Fira_Code_v${version}.zip";
 
+  # only extract the variable font because everything else is a duplicate
   postFetch = ''
     mkdir -p $out/share/fonts
-    unzip -j $downloadedFile \*.ttf -d $out/share/fonts/truetype
+    unzip -j $downloadedFile '*-VF.ttf' -d $out/share/fonts/truetype
   '';
 
-  sha256 = "16v62wj872ba4w7qxn4l6zjgqh7lrpwh1xax1bp1x9dpz08mnq06";
+  sha256 = "1wbfjgvr9m5azl5w49y0hpqzgcraw6spd1wnxgxlzfx57x6gcw0k";
 
   meta = with stdenv.lib; {
     homepage = "https://github.com/tonsky/FiraCode";
diff --git a/pkgs/data/misc/hackage/default.nix b/pkgs/data/misc/hackage/default.nix
index 351ca123df20..2fcc47149faa 100644
--- a/pkgs/data/misc/hackage/default.nix
+++ b/pkgs/data/misc/hackage/default.nix
@@ -1,6 +1,6 @@
 { fetchurl }:
 
 fetchurl {
-  url = "https://github.com/commercialhaskell/all-cabal-hashes/archive/f20dd1d767313d653d6f0c6dd9a82f92d36ecb4c.tar.gz";
-  sha256 = "1prawfbp6390dlgfvd3hxvgdab7rfkr88j35m5cbk3a4hxghkyj3";
+  url = "https://github.com/commercialhaskell/all-cabal-hashes/archive/545d5cafa765c97ad6026ac96f42a246fea7675b.tar.gz";
+  sha256 = "0v35kbbhmyc5yn1k4v9j32d2bj7zwlwfrwf1cppifdvwdhfs25vv";
 }
diff --git a/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix b/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix
index 7f0c7c4f621d..bf19768ad22a 100644
--- a/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix
+++ b/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix
@@ -44,7 +44,6 @@
 , libsecret
 , libcap_ng
 , numactl
-, xen
 , libapparmor
 , json-glib
 , webkitgtk
@@ -117,7 +116,6 @@ stdenv.mkDerivation rec {
     tracker-miners
     vte
     webkitgtk
-    xen
     yajl
   ];
 
diff --git a/pkgs/desktops/plasma-5/fetch.sh b/pkgs/desktops/plasma-5/fetch.sh
index 2087db493cf0..43ea2d692818 100644
--- a/pkgs/desktops/plasma-5/fetch.sh
+++ b/pkgs/desktops/plasma-5/fetch.sh
@@ -1 +1 @@
-WGET_ARGS=( https://download.kde.org/stable/plasma/5.20.4/ -A '*.tar.xz' )
+WGET_ARGS=( https://download.kde.org/stable/plasma/5.20.5/ -A '*.tar.xz' )
diff --git a/pkgs/desktops/plasma-5/srcs.nix b/pkgs/desktops/plasma-5/srcs.nix
index ecca8c5bfdde..cfd7e5733993 100644
--- a/pkgs/desktops/plasma-5/srcs.nix
+++ b/pkgs/desktops/plasma-5/srcs.nix
@@ -4,395 +4,395 @@
 
 {
   bluedevil = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/bluedevil-5.20.4.tar.xz";
-      sha256 = "522ad4ff3f3fc4e213328f821041d40b5126d0d3ca49ecc9aea35c59e2c64129";
-      name = "bluedevil-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/bluedevil-5.20.5.tar.xz";
+      sha256 = "0bpbvfd6m3ddax484p33a1chvf9mf2mi61cli0vacsan7j84xpmk";
+      name = "bluedevil-5.20.5.tar.xz";
     };
   };
   breeze = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/breeze-5.20.4.tar.xz";
-      sha256 = "b61b3f9961c196bbcfb33519bbec06d19e6267182f7215e21071a5619681b30f";
-      name = "breeze-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/breeze-5.20.5.tar.xz";
+      sha256 = "01zm5hcal6flihd89wn70zi363cmcglfvnc2q6x97lq89silaf6l";
+      name = "breeze-5.20.5.tar.xz";
     };
   };
   breeze-grub = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/breeze-grub-5.20.4.tar.xz";
-      sha256 = "8692b6800e89b97973b50d6915f9ca028cdcb0354c34b54719af54441e3f3feb";
-      name = "breeze-grub-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/breeze-grub-5.20.5.tar.xz";
+      sha256 = "17g2jac96sj6pfacmyi6vvn74lfi9yhmigprcm2pwqg9z093n1m2";
+      name = "breeze-grub-5.20.5.tar.xz";
     };
   };
   breeze-gtk = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/breeze-gtk-5.20.4.tar.xz";
-      sha256 = "8905b3a0ff40a48ed2f00f69b7e30c4658deb9fbd1afc61700a28d078693b61d";
-      name = "breeze-gtk-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/breeze-gtk-5.20.5.tar.xz";
+      sha256 = "1jknfswjcd4abbf249i3gclip4m4v8bp9b5x050zafyjkdcwxd5l";
+      name = "breeze-gtk-5.20.5.tar.xz";
     };
   };
   breeze-plymouth = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/breeze-plymouth-5.20.4.tar.xz";
-      sha256 = "879d4bd8d0c42a5c1f51497a4ee4ebb3e69f7904170bafa392b95e1c0ce05ada";
-      name = "breeze-plymouth-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/breeze-plymouth-5.20.5.tar.xz";
+      sha256 = "0yiqqwms0qrnbxqb8nwmgssrp1f92jwjg8rfzapaq5jxdycl1d9m";
+      name = "breeze-plymouth-5.20.5.tar.xz";
     };
   };
   discover = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/discover-5.20.4.tar.xz";
-      sha256 = "3669648fa39e14a8da059373c9a01caacfd5b126d61daed65d5d7aae7ab30012";
-      name = "discover-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/discover-5.20.5.tar.xz";
+      sha256 = "08dmc8rvbfi1zyk9if588h6948xqcqm9jxdp26q84mzq517x9fn5";
+      name = "discover-5.20.5.tar.xz";
     };
   };
   drkonqi = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/drkonqi-5.20.4.tar.xz";
-      sha256 = "55d4a166ee74c4a935c69cec64ecd8eb3fdd79aae8dcd996f6432a873be3fac8";
-      name = "drkonqi-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/drkonqi-5.20.5.tar.xz";
+      sha256 = "1rl212qmmikbnkyryibpp6gxh4jpklynhgr45ym5gcn3903i3vh9";
+      name = "drkonqi-5.20.5.tar.xz";
     };
   };
   kactivitymanagerd = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/kactivitymanagerd-5.20.4.tar.xz";
-      sha256 = "210215dd9a49fda98febb60f73f4cc95eda3eb9ec96c0db2f2881f6be13afb34";
-      name = "kactivitymanagerd-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/kactivitymanagerd-5.20.5.tar.xz";
+      sha256 = "1jzss3waq8jjzbs3rrxxk9dmr974pj5ryw4rdj8bpkc451wc4068";
+      name = "kactivitymanagerd-5.20.5.tar.xz";
     };
   };
   kde-cli-tools = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/kde-cli-tools-5.20.4.tar.xz";
-      sha256 = "55f35158715bafdd51e448a2760327ed4f91c54fcd3da807dec2736d077b16a3";
-      name = "kde-cli-tools-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/kde-cli-tools-5.20.5.tar.xz";
+      sha256 = "0z32fwc9l8c3xfy1l7v0i26ay8icnxqwrnxz6h8qgjlv6p8b4h04";
+      name = "kde-cli-tools-5.20.5.tar.xz";
     };
   };
   kdecoration = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/kdecoration-5.20.4.tar.xz";
-      sha256 = "8d1224a50a2e8c0ec24faab4453432eb8083b35a63e479523de95dce644226e8";
-      name = "kdecoration-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/kdecoration-5.20.5.tar.xz";
+      sha256 = "1kc166f2gqgspsnvxyk8k3k3mmd1ndhgr1dyjzknqdys32dkm5vf";
+      name = "kdecoration-5.20.5.tar.xz";
     };
   };
   kde-gtk-config = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/kde-gtk-config-5.20.4.tar.xz";
-      sha256 = "db3510cb08788c915be5e034106145597de5a412236b60c57b8db4b64dbbd7b1";
-      name = "kde-gtk-config-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/kde-gtk-config-5.20.5.tar.xz";
+      sha256 = "1f3fvr201wr7jdh1hg8ff7yis7hnv7653hvx0531hx1x2hfdva1r";
+      name = "kde-gtk-config-5.20.5.tar.xz";
     };
   };
   kdeplasma-addons = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/kdeplasma-addons-5.20.4.tar.xz";
-      sha256 = "44768c7fb00386bc4f005c773bca59d8acc354f8a3f43efa6565cefc74d490d7";
-      name = "kdeplasma-addons-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/kdeplasma-addons-5.20.5.tar.xz";
+      sha256 = "1sypmn72fp6l57px3pq9ivzj2r2l3k9vy5006idnfgblzahvpi2n";
+      name = "kdeplasma-addons-5.20.5.tar.xz";
     };
   };
   kgamma5 = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/kgamma5-5.20.4.tar.xz";
-      sha256 = "59b1247dfc3c45247cff62e3706b52c9a1be2cf9cfe6e92c9c7299fc5cb51b41";
-      name = "kgamma5-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/kgamma5-5.20.5.tar.xz";
+      sha256 = "1gy0pgsk3xi129y8h78lcif60ajs3y5fxzj1pl7mn6g72f7mwxld";
+      name = "kgamma5-5.20.5.tar.xz";
     };
   };
   khotkeys = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/khotkeys-5.20.4.tar.xz";
-      sha256 = "13c7e5a38f095056c6411b8dc91fc0640256c0a6f0a5166ba716e2454388d648";
-      name = "khotkeys-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/khotkeys-5.20.5.tar.xz";
+      sha256 = "1iw8rxdl9q45jqsnmqdm1lkymzkyxkrfgch51kxfj34vd4mi66h8";
+      name = "khotkeys-5.20.5.tar.xz";
     };
   };
   kinfocenter = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/kinfocenter-5.20.4.tar.xz";
-      sha256 = "09af2cafde33d0c8a824451ca532a443b6f571e20037fe6b31245c9984e9a6b3";
-      name = "kinfocenter-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/kinfocenter-5.20.5.tar.xz";
+      sha256 = "0k3vvfwrfwmmicw8p81fpqljvmj3n8342avavc49ajmnygls7ssm";
+      name = "kinfocenter-5.20.5.tar.xz";
     };
   };
   kmenuedit = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/kmenuedit-5.20.4.tar.xz";
-      sha256 = "32c2d2eb979e43e4cc0892aa9460eb8ebaf603b77385b9f058a48ca4347dde4b";
-      name = "kmenuedit-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/kmenuedit-5.20.5.tar.xz";
+      sha256 = "0apmhglw74ppps52fhspjdsiy19b219lf68aj8jlpiiqcn80mggf";
+      name = "kmenuedit-5.20.5.tar.xz";
     };
   };
   kscreen = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/kscreen-5.20.4.tar.xz";
-      sha256 = "4063fae5cb40a22a98fd0cc217e9b0ea4aef6518203c4bbe2664d5d01dfb9d9c";
-      name = "kscreen-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/kscreen-5.20.5.tar.xz";
+      sha256 = "1njjkrdgdd6g8avf7ik9fd7j9g4zdbjghli7svcfz2z8h6na626y";
+      name = "kscreen-5.20.5.tar.xz";
     };
   };
   kscreenlocker = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/kscreenlocker-5.20.4.tar.xz";
-      sha256 = "d80d4625a0a48a7a63c5ff8255e8639eb2fb57ebc436c46979949b39fc530126";
-      name = "kscreenlocker-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/kscreenlocker-5.20.5.tar.xz";
+      sha256 = "07y0lhwh4pc5rsdfr5yqb645v37ya97vh3dmy2riw9908hiyybw0";
+      name = "kscreenlocker-5.20.5.tar.xz";
     };
   };
   ksshaskpass = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/ksshaskpass-5.20.4.tar.xz";
-      sha256 = "a391ba0490ca41a33207adb6aff2233165d4aeed119fd056489d6eccfc81f218";
-      name = "ksshaskpass-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/ksshaskpass-5.20.5.tar.xz";
+      sha256 = "1xk55ampbrz56pl739m6r150qcsjq0nw2sxxkpqykgwjh275y4ry";
+      name = "ksshaskpass-5.20.5.tar.xz";
     };
   };
   ksysguard = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/ksysguard-5.20.4.tar.xz";
-      sha256 = "a5f247b24ce75a28f301446fbeb25abf968e77e0c32cd4be9b574a21d3bbfaf4";
-      name = "ksysguard-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/ksysguard-5.20.5.tar.xz";
+      sha256 = "0ddb3m6rygjisv31bc722vxzyb2q14940szfzijcv48z5ixj5x9j";
+      name = "ksysguard-5.20.5.tar.xz";
     };
   };
   kwallet-pam = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/kwallet-pam-5.20.4.tar.xz";
-      sha256 = "0749056e9acbbc194b20be5b0921383013ed6c268c22cf905aeeda32514d3ac9";
-      name = "kwallet-pam-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/kwallet-pam-5.20.5.tar.xz";
+      sha256 = "1wn1zm8bfxxsjvx4rbds60v9ckizj55znpq477vnzrh2xfx13rjk";
+      name = "kwallet-pam-5.20.5.tar.xz";
     };
   };
   kwayland-integration = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/kwayland-integration-5.20.4.tar.xz";
-      sha256 = "2dd985dd8d21cdc7743b9f297d0d582f960339b4714953564f2f047d28cee53d";
-      name = "kwayland-integration-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/kwayland-integration-5.20.5.tar.xz";
+      sha256 = "0rqzq851apw1p4c7salk7rcygjdw7ra0x95xw57vh68w19kn9wrk";
+      name = "kwayland-integration-5.20.5.tar.xz";
     };
   };
   kwayland-server = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/kwayland-server-5.20.4.tar.xz";
-      sha256 = "3edc7b73baa6fa8b0bec51272e8786bab41998b0f675262d5086fdf6c1e9bb44";
-      name = "kwayland-server-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/kwayland-server-5.20.5.tar.xz";
+      sha256 = "0ajxjj2cbrg6rpry3r48q3zhxxkr09498j5in0v1jwijp83n9wz0";
+      name = "kwayland-server-5.20.5.tar.xz";
     };
   };
   kwin = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/kwin-5.20.4.tar.xz";
-      sha256 = "c59861e9d456974bffaff2cb371cd8d31bdb789f89a60af632089c556111662a";
-      name = "kwin-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/kwin-5.20.5.tar.xz";
+      sha256 = "0kiq46gdvfv2811125kw1ncnk1pmpnqkvrz7p3lry72sjd1ja57c";
+      name = "kwin-5.20.5.tar.xz";
     };
   };
   kwrited = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/kwrited-5.20.4.tar.xz";
-      sha256 = "f02b900538246f4df2707585052b732552d2ea115a16f8fbda618fa02e5a1bb2";
-      name = "kwrited-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/kwrited-5.20.5.tar.xz";
+      sha256 = "1h0vbb0bz4r26g4yf88jfzkbi8xbyf44c2y9nmlrmr5lws4bpcmz";
+      name = "kwrited-5.20.5.tar.xz";
     };
   };
   libkscreen = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/libkscreen-5.20.4.tar.xz";
-      sha256 = "ce1bd03a25b101793fa1472ac3fc696079e607a6f45330ea724845bda288d28d";
-      name = "libkscreen-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/libkscreen-5.20.5.tar.xz";
+      sha256 = "0641kk7s4xy5y94rn6xzjnrp4sbl7yn9w9qzlw4925858pgrr9qv";
+      name = "libkscreen-5.20.5.tar.xz";
     };
   };
   libksysguard = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/libksysguard-5.20.4.tar.xz";
-      sha256 = "a89968476cb8a888550e1a5138ab8e86eeb49788187192cba71f79abd4aad422";
-      name = "libksysguard-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/libksysguard-5.20.5.tar.xz";
+      sha256 = "0v2x7sl5gg8a9i1cwx8prv03pcls4q3wfxxs5qs6g5ami1f679d8";
+      name = "libksysguard-5.20.5.tar.xz";
     };
   };
   milou = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/milou-5.20.4.tar.xz";
-      sha256 = "123ac9470a94f2eb6e4212979d2df4160fa15962b1fc18551bfcdfe5aa18a201";
-      name = "milou-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/milou-5.20.5.tar.xz";
+      sha256 = "1hmpdj2zi6nidm6058a6kjgzij8qy9xihv20hi2dhk0f8ys42k3h";
+      name = "milou-5.20.5.tar.xz";
     };
   };
   oxygen = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/oxygen-5.20.4.tar.xz";
-      sha256 = "e58cb6a2e1976a973e24d974556e6306a076ce1295f33a9a1bc56a8715857f67";
-      name = "oxygen-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/oxygen-5.20.5.tar.xz";
+      sha256 = "166jk8ix0dnv92svymaxjwbc08k6q8nag9xr2dc033x5lr2l59qr";
+      name = "oxygen-5.20.5.tar.xz";
     };
   };
   plasma-browser-integration = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/plasma-browser-integration-5.20.4.tar.xz";
-      sha256 = "55057e4f15a1e8b2d2f0489d32f95bb89f610ae99184b587ba90f7db0e8292b4";
-      name = "plasma-browser-integration-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/plasma-browser-integration-5.20.5.tar.xz";
+      sha256 = "03zzmzdlc5a3nrx6izb66s7l3cmangkfjda2mf17g2097rrnb9n2";
+      name = "plasma-browser-integration-5.20.5.tar.xz";
     };
   };
   plasma-desktop = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/plasma-desktop-5.20.4.tar.xz";
-      sha256 = "3864e80bb9b8da596188162b14cd9bb77e7a8abedfb0fa41c8c72d47139d1355";
-      name = "plasma-desktop-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/plasma-desktop-5.20.5.tar.xz";
+      sha256 = "1fc74zgxkp65pj8p58prd5rq7nqspjfcgr70say2imagyj9nwrdx";
+      name = "plasma-desktop-5.20.5.tar.xz";
     };
   };
   plasma-disks = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/plasma-disks-5.20.4.tar.xz";
-      sha256 = "f0110588b2603905962beedd596cfa6eb6371b7bac2186aa845d22237199d845";
-      name = "plasma-disks-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/plasma-disks-5.20.5.tar.xz";
+      sha256 = "0bcwf3g2vy2gf0igg0dyl9x5qc0xx0d5z05n4mi7asg5acl596r1";
+      name = "plasma-disks-5.20.5.tar.xz";
     };
   };
   plasma-integration = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/plasma-integration-5.20.4.tar.xz";
-      sha256 = "4dbaf6a05d69df02e73c88970be3d7a1efb62a3931edf06c9760cd3bb87e1299";
-      name = "plasma-integration-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/plasma-integration-5.20.5.tar.xz";
+      sha256 = "1wydjnmryf2kvfgg6m9kafa5waimccqr531qrq3nisdjc5p1w9x8";
+      name = "plasma-integration-5.20.5.tar.xz";
     };
   };
   plasma-nano = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/plasma-nano-5.20.4.tar.xz";
-      sha256 = "8e23e0ce53654daf4ab688edd6a7852b5d859bfd86b4e1795a60f570dda409bd";
-      name = "plasma-nano-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/plasma-nano-5.20.5.tar.xz";
+      sha256 = "0h276i1dxbiziw258wf6az9mnysp3xxfh7nlxv0g2w1vfnhm23v5";
+      name = "plasma-nano-5.20.5.tar.xz";
     };
   };
   plasma-nm = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/plasma-nm-5.20.4.tar.xz";
-      sha256 = "7b4d1026f2caa709a9ae284cd18342d1c573276f9b4c356ef47779dadb8b57cf";
-      name = "plasma-nm-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/plasma-nm-5.20.5.tar.xz";
+      sha256 = "060f32adr0wlv2bs9swjyxcil7n74cnk48j8b8984wwhk6zz53a6";
+      name = "plasma-nm-5.20.5.tar.xz";
     };
   };
   plasma-pa = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/plasma-pa-5.20.4.tar.xz";
-      sha256 = "56fb4809966aa33290c46fed968f2c7186c415663f032c75b3279c57134674f3";
-      name = "plasma-pa-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/plasma-pa-5.20.5.tar.xz";
+      sha256 = "0xvkbrz3290xxfvv1rqqv7w57j3gdng8m2jyjj1j6dmaackl512d";
+      name = "plasma-pa-5.20.5.tar.xz";
     };
   };
   plasma-phone-components = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/plasma-phone-components-5.20.4.tar.xz";
-      sha256 = "80053324bfb6431946df67e712638f797c2bcd9cb78766629a0372de7f6f727e";
-      name = "plasma-phone-components-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/plasma-phone-components-5.20.5.tar.xz";
+      sha256 = "14h790b2jfs2j2lvv3dwqm20v3nlvah2909g4mhm9kwfdsmgnjms";
+      name = "plasma-phone-components-5.20.5.tar.xz";
     };
   };
   plasma-sdk = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/plasma-sdk-5.20.4.tar.xz";
-      sha256 = "49d29c1c95832c585ea3c0b26f8fb46f5fa0fac726f9f7e9cbf0ab83415a00ea";
-      name = "plasma-sdk-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/plasma-sdk-5.20.5.tar.xz";
+      sha256 = "13cqn700nadqgmn54sy8qbf7waqkgvhzndh73jvmhb0z699z4s6y";
+      name = "plasma-sdk-5.20.5.tar.xz";
     };
   };
   plasma-tests = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/plasma-tests-5.20.4.tar.xz";
-      sha256 = "35234da922aad986db73ca4d2ca1c0440dbff24e200b98584246b060cc7a2735";
-      name = "plasma-tests-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/plasma-tests-5.20.5.tar.xz";
+      sha256 = "0h6wccqp46s3i8dqc6rrh68l8fk662yvz0fdscqv295g1zwhb45j";
+      name = "plasma-tests-5.20.5.tar.xz";
     };
   };
   plasma-thunderbolt = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/plasma-thunderbolt-5.20.4.tar.xz";
-      sha256 = "7c37c66815242b5d1e208df3b4dbf4fe0d8542ac9aa352d06c548fc172348429";
-      name = "plasma-thunderbolt-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/plasma-thunderbolt-5.20.5.tar.xz";
+      sha256 = "06l5zpgn5zmid0rkp8lx228nw72nd991s2cg29yg2h51zyvff4v0";
+      name = "plasma-thunderbolt-5.20.5.tar.xz";
     };
   };
   plasma-vault = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/plasma-vault-5.20.4.tar.xz";
-      sha256 = "525226a143e6bb173e8106ed2f2313a529ed380a0a1488b096a60af6d08d881c";
-      name = "plasma-vault-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/plasma-vault-5.20.5.tar.xz";
+      sha256 = "0b9jnzx5040sgzqsnzjz61sxnlsmbqfsk8mvqclgqphgiqsbcnm2";
+      name = "plasma-vault-5.20.5.tar.xz";
     };
   };
   plasma-workspace = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/plasma-workspace-5.20.4.tar.xz";
-      sha256 = "12bfe6c3f62e4d1d2f7bc02ccb2e2ed5aee2ffe21c310987e42a2205374c30c9";
-      name = "plasma-workspace-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/plasma-workspace-5.20.5.tar.xz";
+      sha256 = "0966nqyqs7hb7fp3a3jxhm64iqwbafd29sbagigx9d7gj8qg8zim";
+      name = "plasma-workspace-5.20.5.tar.xz";
     };
   };
   plasma-workspace-wallpapers = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/plasma-workspace-wallpapers-5.20.4.tar.xz";
-      sha256 = "4740d67e85910ed398c048916963f31c6632698d6a4494bc09cc1b0cd14e2808";
-      name = "plasma-workspace-wallpapers-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/plasma-workspace-wallpapers-5.20.5.tar.xz";
+      sha256 = "03z7pcba8kkmb70dn7gsqldxgb8lky6qw040p5ik1j07516xm6z3";
+      name = "plasma-workspace-wallpapers-5.20.5.tar.xz";
     };
   };
   plymouth-kcm = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/plymouth-kcm-5.20.4.tar.xz";
-      sha256 = "0cde268064c92b89c5b2a5f8c033983d372406656d446f52b77611effd67ad77";
-      name = "plymouth-kcm-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/plymouth-kcm-5.20.5.tar.xz";
+      sha256 = "0lwir088h3mjdxc6zzbd74g7alfnsrhf7m0p7ma6prncdj25pcyz";
+      name = "plymouth-kcm-5.20.5.tar.xz";
     };
   };
   polkit-kde-agent = {
-    version = "1-5.20.4";
+    version = "1-5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/polkit-kde-agent-1-5.20.4.tar.xz";
-      sha256 = "f01a7b3443553810b0c9e6f25d2ca51eeac7c5e9fd624505852e77183e294b61";
-      name = "polkit-kde-agent-1-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/polkit-kde-agent-1-5.20.5.tar.xz";
+      sha256 = "1rkvnci93xvxga6cvw99aaivkn8897kyqdw7p9hmk09qvg2qb92v";
+      name = "polkit-kde-agent-1-5.20.5.tar.xz";
     };
   };
   powerdevil = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/powerdevil-5.20.4.tar.xz";
-      sha256 = "864128ea9178701bc322f728402cf9277b3c6feaa15fe425aa2adf92464bd28d";
-      name = "powerdevil-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/powerdevil-5.20.5.tar.xz";
+      sha256 = "1w3figagjxmrbc7hs81bllfkpq6f9mn4mwj7zjzxjf7d5fkmryrj";
+      name = "powerdevil-5.20.5.tar.xz";
     };
   };
   sddm-kcm = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/sddm-kcm-5.20.4.tar.xz";
-      sha256 = "c61e136c10b98a91e1bd48ca5bbdd2a15b197a38b83d7ad5ccd289200524935e";
-      name = "sddm-kcm-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/sddm-kcm-5.20.5.tar.xz";
+      sha256 = "1zw9y6knrx848f529m45iszr0xplr9lnck242ddmzj3x7qz0x1az";
+      name = "sddm-kcm-5.20.5.tar.xz";
     };
   };
   systemsettings = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/systemsettings-5.20.4.tar.xz";
-      sha256 = "e87eedfb40a0255348cf2a775ca0ea15bbce37687eedd521f2200670315953b9";
-      name = "systemsettings-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/systemsettings-5.20.5.tar.xz";
+      sha256 = "1b1j9hl9nzd4qqs255yd3svsb492w8i6l6ccihllwzqwkb1kpq5j";
+      name = "systemsettings-5.20.5.tar.xz";
     };
   };
   xdg-desktop-portal-kde = {
-    version = "5.20.4";
+    version = "5.20.5";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.4/xdg-desktop-portal-kde-5.20.4.tar.xz";
-      sha256 = "cb3d856f7caeae7bd02a3e9e43f12ee3d432aa399df9d40db0636199b7ed4df8";
-      name = "xdg-desktop-portal-kde-5.20.4.tar.xz";
+      url = "${mirror}/stable/plasma/5.20.5/xdg-desktop-portal-kde-5.20.5.tar.xz";
+      sha256 = "07g70517p89araa305if2xgwpfd7sdbknl880hqn2mqaqd9m83gl";
+      name = "xdg-desktop-portal-kde-5.20.5.tar.xz";
     };
   };
 }
diff --git a/pkgs/development/compilers/cakelisp/default.nix b/pkgs/development/compilers/cakelisp/default.nix
new file mode 100644
index 000000000000..500c15a2aaa2
--- /dev/null
+++ b/pkgs/development/compilers/cakelisp/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub, gcc }:
+
+stdenv.mkDerivation rec {
+  pname = "cakelisp";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "makuto";
+    repo = "cakelisp";
+    rev = "v${version}";
+    sha256 = "126va59jy7rvy6c2wrf8j44m307f2d8jixqkc49s9wllxprj1dmg";
+  };
+
+  buildInputs = [ gcc ];
+
+  postPatch = ''
+    substituteInPlace runtime/HotReloading.cake \
+        --replace '"/usr/bin/g++"' '"${gcc}/bin/g++"'
+    substituteInPlace src/ModuleManager.cpp \
+        --replace '"/usr/bin/g++"' '"${gcc}/bin/g++"'
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+    substituteInPlace Build.sh --replace '--export-dynamic' '-export_dynamic'
+    substituteInPlace runtime/HotReloading.cake --replace '--export-dynamic' '-export_dynamic'
+    substituteInPlace Bootstrap.cake --replace '--export-dynamic' '-export_dynamic'
+  '';
+
+  buildPhase = ''
+    ./Build.sh
+  '';
+
+  installPhase = ''
+    install -Dm755 bin/cakelisp -t $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A performance-oriented Lisp-like language";
+    homepage = "https://github.com/makuto/cakelisp";
+    license = licenses.gpl3Plus;
+    platforms = platforms.darwin ++ platforms.linux;
+    maintainers = [ maintainers.sbond75 ];
+  };
+}
diff --git a/pkgs/development/compilers/computecpp/default.nix b/pkgs/development/compilers/computecpp/default.nix
index 7cfc60f050e4..acdcc2014f89 100644
--- a/pkgs/development/compilers/computecpp/default.nix
+++ b/pkgs/development/compilers/computecpp/default.nix
@@ -9,11 +9,11 @@
 
 stdenv.mkDerivation rec {
   pname = "computecpp";
-  version = "2.2.1";
+  version = "2.3.0";
 
   src = fetchzip {
     url = "https://computecpp.codeplay.com/downloads/computecpp-ce/${version}/x86_64-linux-gnu.tar.gz";
-    hash = "sha256-niXNWbkXjd35col6dS66HdxFurXfJw/Xb2c5njukxcg=";
+    hash = "sha256-AUHSls4BOX20PVKzDAp3RqpeRDwgbgYzz6CRvRN+kdk=";
     stripRoot = true;
   };
 
diff --git a/pkgs/development/compilers/glslang/default.nix b/pkgs/development/compilers/glslang/default.nix
index b3364b185da9..991541014438 100644
--- a/pkgs/development/compilers/glslang/default.nix
+++ b/pkgs/development/compilers/glslang/default.nix
@@ -1,4 +1,5 @@
-{ stdenv, fetchFromGitHub
+{ stdenv
+, fetchFromGitHub
 , bison
 , cmake
 , jq
@@ -10,7 +11,7 @@
 }:
 # glslang requires custom versions of spirv-tools and spirb-headers.
 # The exact versions are taken from:
-# https://github.com/KhronosGroup/glslang/blob/master/known_good.json
+# https://github.com/KhronosGroup/glslang/blob/${version}/known_good.json
 
 let
   localSpirv-tools = if argSpirv-tools == null
@@ -18,8 +19,8 @@ let
       src = fetchFromGitHub {
         owner = "KhronosGroup";
         repo = "SPIRV-Tools";
-        rev = "fd8e130510a6b002b28eee5885a9505040a9bdc9";
-        sha256 = "00b7xgyrcb2qq63pp3cnw5q1xqx2d9rfn65lai6n6r89s1vh3vg6";
+        rev = "b27b1afd12d05bf238ac7368bb49de73cd620a8e";
+        sha256 = "0v26ws6qx23jn4dcpsq6rqmdxgyxpl5pcvfm90wb3nz6iqbqx294";
       };
     })
     else argSpirv-tools;
@@ -29,8 +30,8 @@ let
       src = fetchFromGitHub {
         owner = "KhronosGroup";
         repo = "SPIRV-Headers";
-        rev = "f8bf11a0253a32375c32cad92c841237b96696c0";
-        sha256 = "1znwjy02dl9rshqzl87rqsv9mfczw7gvwfhcirbl81idahgp4p6l";
+        rev = "f027d53ded7e230e008d37c8b47ede7cd308e19d";
+        sha256 = "12gp2mqcar6jj57jw9isfr62yn72kmvdcl0zga4gvrlyfhnf582q";
       };
     })
     else argSpirv-headers;
@@ -38,13 +39,13 @@ in
 
 stdenv.mkDerivation rec {
   pname = "glslang";
-  version = "8.13.3743";
+  version = "11.1.0";
 
   src = fetchFromGitHub {
     owner = "KhronosGroup";
     repo = "glslang";
     rev = version;
-    sha256 = "0d20wfpp2fmbnz1hnsjr9xc62lxpj86ik2qyviqbni0pqj212cry";
+    sha256 = "1j81pghy7whyr8ygk7lx6g6qph61rky7fkkc8xp87c7n695a48rw";
   };
 
   # These get set at all-packages, keep onto them for child drvs
@@ -75,7 +76,7 @@ stdenv.mkDerivation rec {
     inherit (src.meta) homepage;
     description = "Khronos reference front-end for GLSL and ESSL";
     license = licenses.asl20;
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     maintainers = [ maintainers.ralith ];
   };
 }
diff --git a/pkgs/development/compilers/rust/1_45.nix b/pkgs/development/compilers/rust/1_45.nix
index b4d887f2e964..25ecb1dc0010 100644
--- a/pkgs/development/compilers/rust/1_45.nix
+++ b/pkgs/development/compilers/rust/1_45.nix
@@ -33,7 +33,7 @@ import ./default.nix {
   # building
   bootstrapVersion = "1.44.1";
 
-  # fetch hashes by running `print-hashes.sh 1.45.0`
+  # fetch hashes by running `print-hashes.sh ${bootstrapVersion}`
   bootstrapHashes = {
     i686-unknown-linux-gnu = "e69689b0a1b66599cf83e7dd54f839419007e44376195e93e301a3175da3d854";
     x86_64-unknown-linux-gnu = "a41df89a461a580536aeb42755e43037556fba2e527dd13a1e1bb0749de28202";
diff --git a/pkgs/development/compilers/rust/1_48.nix b/pkgs/development/compilers/rust/1_48.nix
index 6b4b10f12d3e..fff02b9bf800 100644
--- a/pkgs/development/compilers/rust/1_48.nix
+++ b/pkgs/development/compilers/rust/1_48.nix
@@ -35,7 +35,7 @@ import ./default.nix {
   # building
   bootstrapVersion = "1.47.0";
 
-  # fetch hashes by running `print-hashes.sh 1.45.2`
+  # fetch hashes by running `print-hashes.sh ${bootstrapVersion}`
   bootstrapHashes = {
     i686-unknown-linux-gnu = "84bf092130ea5216fc701871e633563fc1c01b6528f60cb0767e96cd8eec30bf";
     x86_64-unknown-linux-gnu = "d0e11e1756a072e8e246b05d54593402813d047d12e44df281fbabda91035d96";
diff --git a/pkgs/development/compilers/rust/rls/default.nix b/pkgs/development/compilers/rust/rls/default.nix
index 06b1b9b1e648..7534a52fe0f0 100644
--- a/pkgs/development/compilers/rust/rls/default.nix
+++ b/pkgs/development/compilers/rust/rls/default.nix
@@ -39,9 +39,9 @@ rustPlatform.buildRustPackage {
     $out/bin/rls --version
   '';
 
-  RUST_SRC_PATH = rustPlatform.rustcSrc;
+  RUST_SRC_PATH = rustPlatform.rustLibSrc;
   postInstall = ''
-    wrapProgram $out/bin/rls --set-default RUST_SRC_PATH ${rustPlatform.rustcSrc}
+    wrapProgram $out/bin/rls --set-default RUST_SRC_PATH ${rustPlatform.rustLibSrc}
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/coq-modules/Cheerios/default.nix b/pkgs/development/coq-modules/Cheerios/default.nix
index 3f9f3b1ac9cd..6c5216f0d018 100644
--- a/pkgs/development/coq-modules/Cheerios/default.nix
+++ b/pkgs/development/coq-modules/Cheerios/default.nix
@@ -1,32 +1,13 @@
-{ stdenv, fetchFromGitHub, coq, StructTact }:
+{ lib, mkCoqDerivation, coq, StructTact, version ? null }:
 
-let param =
-  {
-      version = "20200201";
-      rev = "9c7f66e57b91f706d70afa8ed99d64ed98ab367d";
-      sha256 = "1h55s6lk47bk0lv5ralh81z55h799jbl9mhizmqwqzy57y8wqgs1";
-  };
-in
-
-stdenv.mkDerivation {
-  name = "coq${coq.coq-version}-Cheerios-${param.version}";
-
-  src = fetchFromGitHub {
-    owner = "uwplse";
-    repo = "cheerios";
-    inherit (param) rev sha256;
-  };
-
-  buildInputs = [ coq ];
+with lib; mkCoqDerivation {
+  pname   = "cheerios";
+  owner   = "uwplse";
+  inherit version;
+  defaultVersion = if versions.isGe "8.6" coq.coq-version then "20200201" else null;
+  release."20200201".rev    = "9c7f66e57b91f706d70afa8ed99d64ed98ab367d";
+  release."20200201".sha256 = "1h55s6lk47bk0lv5ralh81z55h799jbl9mhizmqwqzy57y8wqgs1";
 
   propagatedBuildInputs = [ StructTact ];
-  enableParallelBuilding = true;
-
   preConfigure = "patchShebangs ./configure";
-
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.6" "8.7" "8.8" "8.9" "8.10" "8.11" "8.12" ];
- };
 }
diff --git a/pkgs/development/coq-modules/CoLoR/default.nix b/pkgs/development/coq-modules/CoLoR/default.nix
index 1d3e5a07b03d..4c5b6a4f6a9a 100644
--- a/pkgs/development/coq-modules/CoLoR/default.nix
+++ b/pkgs/development/coq-modules/CoLoR/default.nix
@@ -1,58 +1,28 @@
-{ stdenv, fetchFromGitHub, coq, bignums }:
+{ lib, mkCoqDerivation, coq, bignums, version ? null }:
 
-let
-  coqVersions = {
-    "8.6" = "1.4.0";
-    "8.7" = "1.4.0";
-    "8.8" = "1.6.0";
-    "8.9" = "1.6.0";
-    "8.10" = "1.7.0";
-    "8.11" = "1.7.0";
-  };
-  params = {
-    "1.4.0" = {
-      version = "1.4.0";
-      rev = "168c6b86c7d3f87ee51791f795a8828b1521589a";
-      sha256 = "1d2whsgs3kcg5wgampd6yaqagcpmzhgb6a0hp6qn4lbimck5dfmm";
-    };
-    "1.6.0" = {
-      version = "1.6.0";
-      rev = "328aa06270584b578edc0d2925e773cced4f14c8";
-      sha256 = "07sy9kw1qlynsqy251adgi8b3hghrc9xxl2rid6c82mxfsp329sd";
-    };
-    "1.7.0" = {
-      version = "1.7.0";
-      rev = "08b5481ed6ea1a5d2c4c068b62156f5be6d82b40";
-      sha256 = "1w7fmcpf0691gcwq00lm788k4ijlwz3667zj40j5jjc8j8hj7cq3";
-    };
-  };
-  param = params.${coqVersions.${coq.coq-version}};
-in
+with lib; mkCoqDerivation {
+  pname = "color";
+  owner = "fblanqui";
+  inherit version;
+  defaultVersion = with versions; switch coq.coq-version [
+    {case = range "8.10" "8.11"; out = "1.7.0"; }
+    {case = range "8.8"  "8.9";  out = "1.6.0"; }
+    {case = range "8.6"  "8.7";  out = "1.4.0"; }
+  ] null;
 
-stdenv.mkDerivation {
-  name = "coq${coq.coq-version}-CoLoR-${param.version}";
-
-  src = fetchFromGitHub {
-    owner = "fblanqui";
-    repo = "color";
-    inherit (param) rev sha256;
-  };
+  release."1.7.0".rev    = "08b5481ed6ea1a5d2c4c068b62156f5be6d82b40";
+  release."1.7.0".sha256 = "1w7fmcpf0691gcwq00lm788k4ijlwz3667zj40j5jjc8j8hj7cq3";
+  release."1.6.0".rev    = "328aa06270584b578edc0d2925e773cced4f14c8";
+  release."1.6.0".sha256 = "07sy9kw1qlynsqy251adgi8b3hghrc9xxl2rid6c82mxfsp329sd";
+  release."1.4.0".rev    = "168c6b86c7d3f87ee51791f795a8828b1521589a";
+  release."1.4.0".sha256 = "1d2whsgs3kcg5wgampd6yaqagcpmzhgb6a0hp6qn4lbimck5dfmm";
 
-  buildInputs = [ coq bignums ];
+  extraBuildInputs = [ bignums ];
   enableParallelBuilding = false;
 
-  installPhase = ''
-    make -f Makefile.coq COQLIB=$out/lib/coq/${coq.coq-version}/ install
-  '';
-
-  meta = with stdenv.lib; {
+  meta = {
     homepage = "http://color.inria.fr/";
     description = "CoLoR is a library of formal mathematical definitions and proofs of theorems on rewriting theory and termination whose correctness has been mechanically checked by the Coq proof assistant.";
     maintainers = with maintainers; [ jpas jwiegley ];
-    platforms = coq.meta.platforms;
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.hasAttr v coqVersions;
   };
 }
diff --git a/pkgs/development/coq-modules/HoTT/default.nix b/pkgs/development/coq-modules/HoTT/default.nix
index 7b52838505e2..706943cf8d02 100644
--- a/pkgs/development/coq-modules/HoTT/default.nix
+++ b/pkgs/development/coq-modules/HoTT/default.nix
@@ -1,18 +1,14 @@
-{ stdenv, fetchFromGitHub, autoconf, automake, coq }:
+{ lib, mkCoqDerivation, autoconf, automake, coq, version ? null }:
 
-stdenv.mkDerivation rec {
-  name = "coq${coq.coq-version}-HoTT-${version}";
-  version = "20170921";
+with lib; mkCoqDerivation {
+  pname = "HoTT";
+  owner = "HoTT";
+  inherit version;
+  defaultVersion = if coq.coq-version == "8.6" then "20170921" else null;
+  release."20170921".rev    = "e3557740a699167e6adb1a65855509d55a392fa1";
+  release."20170921".sha256 = "0zwfp8g62b50vmmbb2kmskj3v6w7qx1pbf43yw0hr7asdz2zbx5v";
 
-  src = fetchFromGitHub {
-    owner = "HoTT";
-    repo = "HoTT";
-    rev = "e3557740a699167e6adb1a65855509d55a392fa1";
-    sha256 = "0zwfp8g62b50vmmbb2kmskj3v6w7qx1pbf43yw0hr7asdz2zbx5v";
-  };
-
-  buildInputs = [ autoconf automake coq ];
-  enableParallelBuilding = true;
+  extraBuildInputs = [ autoconf automake ];
 
   preConfigure = ''
     patchShebangs ./autogen.sh
@@ -44,18 +40,9 @@ stdenv.mkDerivation rec {
     rmdir $out/share
   '';
 
-  installFlags = [
-    "COQBIN=${coq}/bin"
-  ];
-
-  meta = with stdenv.lib; {
+  meta = {
     homepage = "http://homotopytypetheory.org/";
     description = "Homotopy type theory";
     maintainers = with maintainers; [ siddharthist ];
-    platforms = coq.meta.platforms;
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: v == "8.6";
   };
 }
diff --git a/pkgs/development/coq-modules/InfSeqExt/default.nix b/pkgs/development/coq-modules/InfSeqExt/default.nix
index 387e41859039..8236705b58f2 100644
--- a/pkgs/development/coq-modules/InfSeqExt/default.nix
+++ b/pkgs/development/coq-modules/InfSeqExt/default.nix
@@ -1,31 +1,11 @@
-{ stdenv, fetchFromGitHub, coq }:
-
-let param =
-  {
-      version = "20200131";
-      rev = "203d4c20211d6b17741f1fdca46dbc091f5e961a";
-      sha256 = "0xylkdmb2dqnnqinf3pigz4mf4zmczcbpjnn59g5g76m7f2cqxl0";
-  };
-in
-
-stdenv.mkDerivation {
-  name = "coq${coq.coq-version}-InfSeqExt-${param.version}";
-
-  src = fetchFromGitHub {
-    owner = "DistributedComponents";
-    repo = "InfSeqExt";
-    inherit (param) rev sha256;
-  };
-
-  buildInputs = [ coq ];
-
-  enableParallelBuilding = true;
-
+{ lib, mkCoqDerivation, coq, version ? null }:
+
+mkCoqDerivation {
+  pname = "InfSeqExt";
+  owner = "DistributedComponents";
+  inherit version;
+  defaultVersion = if lib.versions.isGe "8.5" coq.coq-version then "20200131" else null;
+  release."20200131".rev    = "203d4c20211d6b17741f1fdca46dbc091f5e961a";
+  release."20200131".sha256 = "0xylkdmb2dqnnqinf3pigz4mf4zmczcbpjnn59g5g76m7f2cqxl0";
   preConfigure = "patchShebangs ./configure";
-
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.5" "8.6" "8.7" "8.8" "8.9" "8.10" "8.11" "8.12" ];
- };
 }
diff --git a/pkgs/development/coq-modules/QuickChick/default.nix b/pkgs/development/coq-modules/QuickChick/default.nix
index a167b7988dcd..32ef1ad633cf 100644
--- a/pkgs/development/coq-modules/QuickChick/default.nix
+++ b/pkgs/development/coq-modules/QuickChick/default.nix
@@ -1,96 +1,46 @@
-{ stdenv, fetchFromGitHub, coq, ssreflect, coq-ext-lib, simple-io }:
-
-let params =
-  {
-    "8.5" = {
-      version = "20170512";
-      rev = "31eb050ae5ce57ab402db9726fb7cd945a0b4d03";
-      sha256 = "033ch10i5wmqyw8j6wnr0dlbnibgfpr1vr0c07q3yj6h23xkmqpg";
-    };
-
-    "8.6" = {
-      version = "20171102";
-      rev = "0fdb769e1dc87a278383b44a9f5102cc7ccbafcf";
-      sha256 = "0fri4nih40vfb0fbr82dsi631ydkw48xszinq43lyinpknf54y17";
-    };
-
-    "8.8" = {
-      version = "20190311";
-      rev = "22af9e9a223d0038f05638654422e637e863b355";
-      sha256 = "00rnr19lg6lg0haq1sy4ld38p7imzand6fc52fvfq27gblxkp2aq";
-    };
-
-    "8.9" = rec {
-      version = "1.1.0";
-      rev = "v${version}";
-      sha256 = "1c34v1k37rk7v0xk2czv5n79mbjxjrm6nh3llg2mpfmdsqi68wf3";
-    };
-
-    "8.10" = rec {
-      version = "1.2.1";
-      rev = "v${version}";
-      sha256 = "17vz88xjzxh3q7hs6hnndw61r3hdfawxp5awqpgfaxx4w6ni8z46";
-    };
-
-    "8.11" = rec {
-      version = "1.3.2";
-      rev = "v${version}";
-      sha256 = "0lciwaqv288dh2f13xk2x0lrn6zyrkqy6g4yy927wwzag2gklfrs";
-    };
-
-    "8.12" = rec {
-      version = "1.4.0";
-      rev = "v${version}";
-      sha256 = "068p48pm5yxjc3yv8qwzp25bp9kddvxj81l31mjkyx3sdrsw3kyc";
-    };
-  };
-  param = params.${coq.coq-version};
-in
-
-let inherit (stdenv.lib) maintainers optional optionals versionAtLeast; in
-
-let recent = versionAtLeast coq.coq-version "8.8"; in
-
-stdenv.mkDerivation {
-
-  name = "coq${coq.coq-version}-QuickChick-${param.version}";
-
-  src = fetchFromGitHub {
-    owner = "QuickChick";
-    repo = "QuickChick";
-    inherit (param) rev sha256;
-  };
-
-  preConfigure = stdenv.lib.optionalString recent
+{ lib, mkCoqDerivation, coq, ssreflect, coq-ext-lib, simple-io }:
+with lib;
+let recent = versions.isGe "8.7" coq.coq-version; in
+mkCoqDerivation {
+  pname = "QuickChick";
+  owner = "QuickChick";
+  defaultVersion = with versions; switch [ coq.coq-version ssreflect.version ] [
+      { cases = [ "8.12" pred.true  ]; out = "1.4.0"; }
+      { cases = [ "8.11" pred.true  ]; out = "1.3.2"; }
+      { cases = [ "8.10" pred.true  ]; out = "1.2.1"; }
+      { cases = [ "8.9"  pred.true  ];  out = "1.1.0"; }
+      { cases = [ "8.8"  pred.true  ];  out = "20190311"; }
+      { cases = [ "8.7"  isLe "1.8" ];  out = "1.0.0"; }
+      { cases = [ "8.6"  pred.true  ];  out = "20171102"; }
+      { cases = [ "8.5"  pred.true  ];  out = "20170512"; }
+    ] null;
+  release."1.4.0".sha256    = "068p48pm5yxjc3yv8qwzp25bp9kddvxj81l31mjkyx3sdrsw3kyc";
+  release."1.3.2".sha256    = "0lciwaqv288dh2f13xk2x0lrn6zyrkqy6g4yy927wwzag2gklfrs";
+  release."1.2.1".sha256    = "17vz88xjzxh3q7hs6hnndw61r3hdfawxp5awqpgfaxx4w6ni8z46";
+  release."1.1.0".sha256    = "1c34v1k37rk7v0xk2czv5n79mbjxjrm6nh3llg2mpfmdsqi68wf3";
+  release."1.0.0".sha256    = "1gqy9a4yavd0sa7kgysf9gf2lq4p8dmn4h89y8081f2j8zli0w5y";
+  release."20190311".rev    = "22af9e9a223d0038f05638654422e637e863b355";
+  release."20190311".sha256 = "00rnr19lg6lg0haq1sy4ld38p7imzand6fc52fvfq27gblxkp2aq";
+  release."20171102".rev    = "0fdb769e1dc87a278383b44a9f5102cc7ccbafcf";
+  release."20171102".sha256 = "0fri4nih40vfb0fbr82dsi631ydkw48xszinq43lyinpknf54y17";
+  release."20170512".rev    = "31eb050ae5ce57ab402db9726fb7cd945a0b4d03";
+  release."20170512".sha256 = "033ch10i5wmqyw8j6wnr0dlbnibgfpr1vr0c07q3yj6h23xkmqpg";
+  releaseRev = v: "v${v}";
+
+  preConfigure = optionalString recent
     "substituteInPlace Makefile --replace quickChickTool.byte quickChickTool.native";
 
-  buildInputs = [ coq ]
-  ++ (with coq.ocamlPackages; [ ocaml findlib ])
-  ++ optionals (recent && !versionAtLeast coq.coq-version "8.10")
-       (with coq.ocamlPackages; [ camlp5 ocamlbuild ])
-  ++ optional recent coq.ocamlPackages.num
-  ;
+  mlPlugin = true;
+  extraBuildInputs = optional recent coq.ocamlPackages.num;
   propagatedBuildInputs = [ ssreflect ]
-  ++ optionals recent [ coq-ext-lib simple-io ]
-  ++ optional (versionAtLeast coq.coq-version "8.10")
-       coq.ocamlPackages.ocamlbuild
-  ;
+    ++ optionals recent [ coq-ext-lib simple-io ]
+    ++ optional  recent coq.ocamlPackages.ocamlbuild;
+  extraInstallFlags = [ "-f Makefile.coq" ];
 
   enableParallelBuilding = false;
 
-  installPhase = ''
-    make -f Makefile.coq COQLIB=$out/lib/coq/${coq.coq-version}/ install
-  '';
-
   meta = {
-    homepage = "https://github.com/QuickChick/QuickChick";
     description = "Randomized property-based testing plugin for Coq; a clone of Haskell QuickCheck";
     maintainers = with maintainers; [ jwiegley ];
-    platforms = coq.meta.platforms;
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.hasAttr v params;
   };
-
 }
diff --git a/pkgs/development/coq-modules/StructTact/default.nix b/pkgs/development/coq-modules/StructTact/default.nix
index 798aaabe6773..9770b9fb9c45 100644
--- a/pkgs/development/coq-modules/StructTact/default.nix
+++ b/pkgs/development/coq-modules/StructTact/default.nix
@@ -1,31 +1,11 @@
-{ stdenv, fetchFromGitHub, coq }:
-
-let param =
-  {
-      version = "20181102";
-      rev = "82a85b7ec07e71fa6b30cfc05f6a7bfb09ef2510";
-      sha256 = "08zry20flgj7qq37xk32kzmg4fg6d4wi9m7pf9aph8fd3j2a0b5v";
-  };
-in
-
-stdenv.mkDerivation {
-  name = "coq${coq.coq-version}-StructTact-${param.version}";
-
-  src = fetchFromGitHub {
-    owner = "uwplse";
-    repo = "StructTact";
-    inherit (param) rev sha256;
-  };
-
-  buildInputs = [ coq ];
-
-  enableParallelBuilding = true;
-
+{ lib, mkCoqDerivation, coq, version ? null }:
+
+with lib; mkCoqDerivation {
+  pname = "StructTact";
+  owner = "uwplse";
+  inherit version;
+  defaultVersion = if versions.isGe "8.5" coq.coq-version then "20181102" else null;
+  release."20181102".rev =    "82a85b7ec07e71fa6b30cfc05f6a7bfb09ef2510";
+  release."20181102".sha256 = "08zry20flgj7qq37xk32kzmg4fg6d4wi9m7pf9aph8fd3j2a0b5v";
   preConfigure = "patchShebangs ./configure";
-
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
-
-  passthru = {
-    compatibleCoqVersions = v: stdenv.lib.versionAtLeast v "8.5";
- };
 }
diff --git a/pkgs/development/coq-modules/VST/default.nix b/pkgs/development/coq-modules/VST/default.nix
index a625aa54c148..af560ec49a0b 100644
--- a/pkgs/development/coq-modules/VST/default.nix
+++ b/pkgs/development/coq-modules/VST/default.nix
@@ -1,17 +1,15 @@
-{ stdenv, fetchFromGitHub, coq, compcert }:
+{ lib, mkCoqDerivation, coq, compcert, version ? null }:
 
-stdenv.mkDerivation rec {
+with lib; mkCoqDerivation {
   pname = "coq${coq.coq-version}-VST";
-  version = "2.6";
-
-  src = fetchFromGitHub {
-    owner = "PrincetonUniversity";
-    repo = "VST";
-    rev = "v${version}";
-    sha256 = "00bf9hl4pvmsqa08lzjs1mrxyfgfxq4k6778pnldmc8ichm90jgk";
-  };
-
-  buildInputs = [ coq ];
+  namePrefix = [];
+  displayVersion = { coq = false; };
+  owner = "PrincetonUniversity";
+  repo = "VST";
+  inherit version;
+  defaultVersion = if coq.coq-version == "8.11" then "2.6" else null;
+  release."2.6".sha256 = "00bf9hl4pvmsqa08lzjs1mrxyfgfxq4k6778pnldmc8ichm90jgk";
+  releaseRev = v: "v${v}";
   propagatedBuildInputs = [ compcert ];
 
   preConfigure = "patchShebangs util";
@@ -30,14 +28,9 @@ stdenv.mkDerivation rec {
     done
   '';
 
-  enableParallelBuilding = true;
-
-  passthru.compatibleCoqVersions = stdenv.lib.flip builtins.elem [ "8.11" ];
-
   meta = {
     description = "Verified Software Toolchain";
     homepage = "https://vst.cs.princeton.edu/";
     inherit (compcert.meta) platforms;
   };
-
 }
diff --git a/pkgs/development/coq-modules/Velisarios/default.nix b/pkgs/development/coq-modules/Velisarios/default.nix
index 92c9b2569ca4..08322fb7fc40 100644
--- a/pkgs/development/coq-modules/Velisarios/default.nix
+++ b/pkgs/development/coq-modules/Velisarios/default.nix
@@ -1,41 +1,14 @@
-{ stdenv, fetchFromGitHub, coq }:
+{ lib, mkCoqDerivation, coq, version ? null }:
 
-let params =
-  {
-    "8.6" = {
-      version = "20180221";
-      rev = "e1eee1f10d5d46331a560bd8565ac101229d0d6b";
-      sha256 = "0l9885nxy0n955fj1gnijlxl55lyxiv9yjfmz8hmfrn9hl8vv1m2";
-    };
+with lib; mkCoqDerivation {
+  pname = "Velisarios";
+  owner = "vrahli";
+  inherit version;
+  defaultVersion = if versions.range "8.6" "8.8" coq.coq-version then "20180221" else null;
 
-    "8.7" = {
-      version = "20180221";
-      rev = "e1eee1f10d5d46331a560bd8565ac101229d0d6b";
-      sha256 = "0l9885nxy0n955fj1gnijlxl55lyxiv9yjfmz8hmfrn9hl8vv1m2";
-    };
-
-    "8.8" = {
-      version = "20180221";
-      rev = "e1eee1f10d5d46331a560bd8565ac101229d0d6b";
-      sha256 = "0l9885nxy0n955fj1gnijlxl55lyxiv9yjfmz8hmfrn9hl8vv1m2";
-    };
-  };
-  param = params.${coq.coq-version};
-in
-
-stdenv.mkDerivation {
-  name = "coq${coq.coq-version}-Velisarios-${param.version}";
-
-  src = fetchFromGitHub {
-    owner = "vrahli";
-    repo = "Velisarios";
-    inherit (param) rev sha256;
-  };
-
-  buildInputs = [
-    coq coq.ocaml coq.camlp5 coq.findlib
-  ];
-  enableParallelBuilding = true;
+  release."20180221".rev    = "e1eee1f10d5d46331a560bd8565ac101229d0d6b";
+  release."20180221".sha256 = "0l9885nxy0n955fj1gnijlxl55lyxiv9yjfmz8hmfrn9hl8vv1m2";
+  mlPlugin = true;
 
   buildPhase = "make -j$NIX_BUILD_CORES";
   preBuild = "./create-makefile.sh";
@@ -43,8 +16,4 @@ stdenv.mkDerivation {
     mkdir -p $out/lib/coq/${coq.coq-version}/Velisarios
     cp -pR model/*.vo $out/lib/coq/${coq.coq-version}/Velisarios
   '';
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.6" "8.7" "8.8" ];
- };
 }
diff --git a/pkgs/development/coq-modules/Verdi/default.nix b/pkgs/development/coq-modules/Verdi/default.nix
index 927cd832452b..d3769eb2c4db 100644
--- a/pkgs/development/coq-modules/Verdi/default.nix
+++ b/pkgs/development/coq-modules/Verdi/default.nix
@@ -1,37 +1,19 @@
-{ stdenv, fetchFromGitHub, coq, Cheerios, InfSeqExt, ssreflect }:
+{ lib, mkCoqDerivation, coq, Cheerios, InfSeqExt, ssreflect, version ? null }:
+
+
+with lib; mkCoqDerivation {
+  pname = "verdi";
+  owner = "uwplse";
+  inherit version;
+  defaultVersion = with versions; switch coq.coq-version [
+    { case = isGe "8.7"; out = "20200131"; }
+    { case = isEq "8.6"; out = "20181102"; }
+  ] null;
+  release."20200131".rev    = "fdb4ede19d2150c254f0ebcfbed4fb9547a734b0";
+  release."20200131".sha256 = "1a2k19f9q5k5djbxplqmmpwck49kw3lrm3aax920h4yb40czkd8m";
+  release."20181102".rev    = "25b79cf1be5527ab8dc1b8314fcee93e76a2e564";
+  release."20181102".sha256 = "1vw47c37k5vaa8vbr6ryqy8riagngwcrfmb3rai37yi9xhdqg55z";
 
-let param =
-  if stdenv.lib.versionAtLeast coq.coq-version "8.7" then
-  {
-      version = "20200131";
-      rev = "fdb4ede19d2150c254f0ebcfbed4fb9547a734b0";
-      sha256 = "1a2k19f9q5k5djbxplqmmpwck49kw3lrm3aax920h4yb40czkd8m";
-  } else {
-      version = "20181102";
-      rev = "25b79cf1be5527ab8dc1b8314fcee93e76a2e564";
-      sha256 = "1vw47c37k5vaa8vbr6ryqy8riagngwcrfmb3rai37yi9xhdqg55z";
-  };
-in
-
-stdenv.mkDerivation {
-  name = "coq${coq.coq-version}-verdi-${param.version}";
-
-  src = fetchFromGitHub {
-    owner = "uwplse";
-    repo = "verdi";
-    inherit (param) rev sha256;
-  };
-
-  buildInputs = [ coq ];
   propagatedBuildInputs = [ Cheerios InfSeqExt ssreflect ];
-
-  enableParallelBuilding = true;
-
   preConfigure = "patchShebangs ./configure";
-
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.6" "8.7" "8.8" "8.9" "8.10" "8.11" "8.12" ];
- };
 }
diff --git a/pkgs/development/coq-modules/autosubst/default.nix b/pkgs/development/coq-modules/autosubst/default.nix
index 9507dc6751ae..b2609d5dfc32 100644
--- a/pkgs/development/coq-modules/autosubst/default.nix
+++ b/pkgs/development/coq-modules/autosubst/default.nix
@@ -1,33 +1,22 @@
-{ stdenv, fetchgit, coq, mathcomp }:
+{ lib, mkCoqDerivation, coq, mathcomp, version ? null }:
 
-stdenv.mkDerivation rec {
+with lib; mkCoqDerivation {
+  pname   = "autosubst";
+  owner   = "uds-psl";
+  inherit version;
+  defaultVersion = with versions;
+    if range "8.5" "8.7" coq.coq-version then "5b40a32e" else null;
 
-  name = "coq-autosubst-${coq.coq-version}-${version}";
-  version = "5b40a32e";
+  release."5b40a32e".rev    = "1c3bb3bbf5477e3b33533a0fc090399f45fe3034";
+  release."5b40a32e".sha256 = "1wqfzc9az85fvx71xxfii502jgc3mp0r3xwfb8vnb03vkk625ln0";
 
-  src = fetchgit {
-    url = "git://github.com/uds-psl/autosubst.git";
-    rev = "1c3bb3bbf5477e3b33533a0fc090399f45fe3034";
-    sha256 = "06pcjbngzwqyncvfwzz88j33wvdj9kizxyg5adp7y6186h8an341";
-  };
-
-  buildInputs = [ coq ];
-  propagatedBuildInputs = [ mathcomp ];
+  propagatedBuildInputs = [ mathcomp.ssreflect ];
 
   patches = [./0001-changes-to-work-with-Coq-8.6.patch];
 
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
-
-  meta = with stdenv.lib; {
+  meta = {
     homepage = "https://www.ps.uni-saarland.de/autosubst/";
     description = "Automation for de Bruijn syntax and substitution in Coq";
     maintainers = with maintainers; [ jwiegley ];
-    platforms = coq.meta.platforms;
   };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.5" "8.6" "8.7" ];
-  };
-
-
 }
diff --git a/pkgs/development/coq-modules/bignums/default.nix b/pkgs/development/coq-modules/bignums/default.nix
index f0434c4ae471..84dc92a3cd5f 100644
--- a/pkgs/development/coq-modules/bignums/default.nix
+++ b/pkgs/development/coq-modules/bignums/default.nix
@@ -1,64 +1,25 @@
-{ stdenv, fetchFromGitHub, coq }:
-
-let params = {
-      "8.6" = {
-        rev = "v8.6.0";
-        sha256 = "0553pcsy21cyhmns6k9qggzb67az8kl31d0lwlnz08bsqswigzrj";
-      };
-      "8.7" = {
-        rev = "V8.7.0";
-        sha256 = "11c4sdmpd3l6jjl4v6k213z9fhrmmm1xnly3zmzam1wrrdif4ghl";
-      };
-      "8.8" = {
-        rev = "V8.8.0";
-        sha256 = "1ymxyrvjygscxkfj3qkq66skl3vdjhb670rzvsvgmwrjkrakjnfg";
-      };
-      "8.9" = {
-        rev = "V8.9.0";
-        sha256 = "03qz1w2xb2j5p06liz5yyafl0fl9vprcqm6j0iwi7rxwghl00p01";
-      };
-      "8.10" = {
-        rev = "V8.10.0";
-        sha256 = "0bpb4flckn4nqxbs3wjiznyx1k7r8k93qdigp3qwmikp2lxvcbw5";
-      };
-      "8.11" = {
-        rev = "V8.11.0";
-        sha256 = "1xcd7c7qlvs0narfba6px34zq0mz8rffnhxw0kzhhg6i4iw115dp";
-      };
-      "8.12" = {
-        rev = "V8.12.0";
-        sha256 = "14ijb3qy2hin3g4djx437jmnswxxq7lkfh3dwh9qvrds9a015yg8";
-      };
-      "8.13" = {
-        rev = "V8.13.0";
-        sha256 = "1n66i7hd9222b2ks606mak7m4f0dgy02xgygjskmmav6h7g2sx7y";
-      };
-    };
-    param = params.${coq.coq-version};
-in
-
-stdenv.mkDerivation {
-
-  name = "coq${coq.coq-version}-bignums";
-
-  src = fetchFromGitHub {
-    owner = "coq";
-    repo = "bignums";
-    inherit (param) rev sha256;
-  };
-
-  buildInputs = with coq.ocamlPackages; [ ocaml findlib coq ]
-  ++ stdenv.lib.optional (!stdenv.lib.versionAtLeast coq.coq-version "8.10") camlp5
-  ;
-
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
-
-  meta = with stdenv.lib; {
-    license = licenses.lgpl2;
-    platforms = coq.meta.platforms;
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.hasAttr v params;
-  };
+{ lib, mkCoqDerivation, coq, version ? null }:
+
+with lib; mkCoqDerivation {
+  pname = "bignums";
+  owner = "coq";
+  displayVersion = { bignums = ""; };
+  inherit version;
+  defaultVersion = if versions.isGe "8.5" coq.coq-version
+    then "${coq.coq-version}.0" else null;
+
+  release."8.13.0".sha256 = "1n66i7hd9222b2ks606mak7m4f0dgy02xgygjskmmav6h7g2sx7y";
+  release."8.12.0".sha256 = "14ijb3qy2hin3g4djx437jmnswxxq7lkfh3dwh9qvrds9a015yg8";
+  release."8.11.0".sha256 = "1xcd7c7qlvs0narfba6px34zq0mz8rffnhxw0kzhhg6i4iw115dp";
+  release."8.10.0".sha256 = "0bpb4flckn4nqxbs3wjiznyx1k7r8k93qdigp3qwmikp2lxvcbw5";
+  release."8.9.0".sha256  = "03qz1w2xb2j5p06liz5yyafl0fl9vprcqm6j0iwi7rxwghl00p01";
+  release."8.8.0".sha256  = "1ymxyrvjygscxkfj3qkq66skl3vdjhb670rzvsvgmwrjkrakjnfg";
+  release."8.7.0".sha256  = "11c4sdmpd3l6jjl4v6k213z9fhrmmm1xnly3zmzam1wrrdif4ghl";
+  release."8.6.0".rev     = "v8.6.0";
+  release."8.6.0".sha256  = "0553pcsy21cyhmns6k9qggzb67az8kl31d0lwlnz08bsqswigzrj";
+  releaseRev = v: "V${v}";
+
+  mlPlugin = true;
+
+  meta = { license = licenses.lgpl2; };
 }
diff --git a/pkgs/development/coq-modules/category-theory/default.nix b/pkgs/development/coq-modules/category-theory/default.nix
index 1178b1558ff7..339bcb9d6b09 100644
--- a/pkgs/development/coq-modules/category-theory/default.nix
+++ b/pkgs/development/coq-modules/category-theory/default.nix
@@ -1,54 +1,26 @@
-{ stdenv, fetchgit, coq, ssreflect, equations }:
+{ lib, mkCoqDerivation, coq, ssreflect, equations, version ? null }:
 
-let
-  params =
-    let
-    v20180709 = {
-      version = "20180709";
-      rev = "3b9ba7b26a64d49a55e8b6ccea570a7f32c11ead";
-      sha256 = "0f2nr8dgn1ab7hr7jrdmr1zla9g9h8216q4yf4wnff9qkln8sbbs";
-    };
-    v20190414 = {
-      version = "20190414";
-      rev = "706fdb4065cc2302d92ac2bce62cb59713253119";
-      sha256 = "16lg4xs2wzbdbsn148xiacgl4wq4xwfqjnjkdhfr3w0qh1s81hay";
-    };
-  in {
-    "8.6" = v20180709;
-    "8.7" = v20180709;
-    "8.8" = v20190414;
-    "8.9" = v20190414;
-  };
-  param = params.${coq.coq-version};
-in
+with lib; mkCoqDerivation {
 
-stdenv.mkDerivation {
+  pname = "category-theory";
+  owner = "jwiegley";
 
-  name = "coq${coq.coq-version}-category-theory-${param.version}";
+  release."20190414".rev    = "706fdb4065cc2302d92ac2bce62cb59713253119";
+  release."20190414".sha256 = "16lg4xs2wzbdbsn148xiacgl4wq4xwfqjnjkdhfr3w0qh1s81hay";
+  release."20180709".rev    = "3b9ba7b26a64d49a55e8b6ccea570a7f32c11ead";
+  release."20180709".sha256 = "0f2nr8dgn1ab7hr7jrdmr1zla9g9h8216q4yf4wnff9qkln8sbbs";
 
-  src = fetchgit {
-    url = "git://github.com/jwiegley/category-theory.git";
-    inherit (param) rev sha256;
-  };
+  inherit version;
+  defaultVersion = with versions; switch coq.coq-version [
+    { case = range "8.8" "8.9"; out = "20190414"; }
+    { case = range "8.6" "8.7"; out = "20180709"; }
+  ] null;
 
-  buildInputs = [ coq ] ++ (with coq.ocamlPackages; [ ocaml camlp5 findlib ]);
+  mlPlugin = true;
   propagatedBuildInputs = [ ssreflect equations ];
 
-  buildFlags = [ "JOBS=$(NIX_BUILD_CORES)" ];
-
-  installPhase = ''
-    make -f Makefile.coq COQLIB=$out/lib/coq/${coq.coq-version}/ install
-  '';
-
-  meta = with stdenv.lib; {
-    homepage = "https://github.com/jwiegley/category-theory";
+  meta = {
     description = "A formalization of category theory in Coq for personal study and practical work";
     maintainers = with maintainers; [ jwiegley ];
-    platforms = coq.meta.platforms;
   };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.hasAttr v params;
-  };
-
 }
diff --git a/pkgs/development/coq-modules/contribs/default.nix b/pkgs/development/coq-modules/contribs/default.nix
index d2787f0948e0..cb6dedca3551 100644
--- a/pkgs/development/coq-modules/contribs/default.nix
+++ b/pkgs/development/coq-modules/contribs/default.nix
@@ -1,27 +1,16 @@
-{ stdenv, fetchFromGitHub, coq }:
+{ lib, mkCoqDerivation, coq, callPackage }:
 
-let mkContrib = repo: revs: param:
-  stdenv.mkDerivation rec {
-    name = "coq${coq.coq-version}-${repo}-${version}";
-    version = param.version;
-
-    src = fetchFromGitHub {
+with lib; let mkContrib = pname: coqs: param:
+  let contribVersion = {version ? null}: mkCoqDerivation ({
+      inherit pname version;
       owner = "coq-contribs";
-      repo = repo;
-      rev = param.rev;
-      sha256 = param.sha256;
-    };
-
-    buildInputs = with coq.ocamlPackages; [ ocaml camlp5 findlib coq ];
-
-    installFlags =
-       stdenv.lib.optional (stdenv.lib.versionAtLeast coq.coq-version "8.9") "-f Makefile.coq"
-    ++ [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
-
-    passthru = {
-      compatibleCoqVersions = v: builtins.elem v revs;
-    };
-  }; in
+      mlPlugin = true;
+    } // optionalAttrs (builtins.elem coq.coq-version coqs) ({
+      defaultVersion = param.version;
+      release = { "${param.version}" = { inherit (param) rev sha256; }; };
+    } // (removeAttrs param [ "version" "rev" "sha256" ]))
+  ); in
+  makeOverridable contribVersion {} ; in
 {
   aac-tactics = mkContrib "aac-tactics" [ "8.7" "8.8" ] {
     "8.7" = {
@@ -353,10 +342,10 @@ let mkContrib = repo: revs: param:
     sha256 = "02jcp74i5icv92xkq3mcx91786d56622ghgnjiz3b51wfqs6ldic";
   };
 
-  firing-squad = mkContrib "firing-squad" [ "8.6" "8.7" ] {
-    version = "v8.5.0-9-gbe728cd";
-    rev = "be728cddbee58088809b51c25425d2a4bdf9b823";
-    sha256 = "0i0v5x6lncjasxk22pras3644ff026q8jai45dbimf2fz73312c9";
+  firing-squad = mkContrib "firing-squad" [ "8.6" ] {
+      version = "v8.5.0-9-gbe728cd";
+      rev = "be728cddbee58088809b51c25425d2a4bdf9b823";
+      sha256 = "0i0v5x6lncjasxk22pras3644ff026q8jai45dbimf2fz73312c9";
   };
 
   float = mkContrib "float" [ "8.7" ] {
@@ -525,6 +514,7 @@ let mkContrib = repo: revs: param:
     version = "v8.6.0";
     rev = "6279ed83244dc4aec2e23ffb4c87e3f10a50326d";
     sha256 = "1yvlnqwa7ka4a0yg0j7zrzvayhsm1shvsjjawjv552sxc9519aag";
+    installFlags = [ "COQBIN=$(out)/lib/coq/${coq.coq-version}/bin/" ]; # hack
   };
 
   ipc = mkContrib "ipc" [ "8.6" "8.7" ] {
@@ -635,12 +625,6 @@ let mkContrib = repo: revs: param:
     sha256 = "19csz50846gvfwmhhc37nmlvf70g53cpb1kpmcnjlj82y8r63ajz";
   };
 
-  math-classes = mkContrib "math-classes" [ "8.6" ] {
-    version = "v8.6.0-19-ge2c6453";
-    rev = "e2c6453e2f6cc1b7f0e1371675f4a76b19fab2c7";
-    sha256 = "0das56i8wi7v0s30lbadjlfqas1jlq0mm13yxq6s7zqqbdl5r0bk";
-  };
-
   maths = mkContrib "maths" [ "8.5" "8.6" "8.7" ] {
     version = "v8.6.0";
     rev = "75a2f84990c1dc83a18ee7decc1445c122664222";
diff --git a/pkgs/development/coq-modules/coq-bits/default.nix b/pkgs/development/coq-modules/coq-bits/default.nix
index 9665c5400d85..410280925dcc 100644
--- a/pkgs/development/coq-modules/coq-bits/default.nix
+++ b/pkgs/development/coq-modules/coq-bits/default.nix
@@ -1,38 +1,24 @@
-{ stdenv, fetchFromGitHub, coq, mathcomp-algebra }:
+{ lib, mkCoqDerivation, coq, mathcomp, version ? null }:
 
-let
-  version = "20190812";
-in
+with lib; mkCoqDerivation {
+  pname = "coq-bits";
+  repo = "bits";
+  inherit version;
+  defaultVersion = if versions.isGe "8.7" coq.version then "20190812" else null;
 
-stdenv.mkDerivation {
-  name = "coq${coq.coq-version}-coq-bits-${version}";
+  release."20190812".rev    = "1.0.0";
+  release."20190812".sha256 = "0nv5mdgrd075dpd8bc7h0xc5i95v0pkm0bfyq5rj6ii1s54dwcjl";
 
-  src = fetchFromGitHub {
-    owner = "coq-community";
-    repo = "bits";
-    rev = "1.0.0";
-    sha256 = "0nv5mdgrd075dpd8bc7h0xc5i95v0pkm0bfyq5rj6ii1s54dwcjl";
-  };
-
-  buildInputs = [ coq ];
-  propagatedBuildInputs = [ mathcomp-algebra ];
-
-  enableParallelBuilding = true;
+  propagatedBuildInputs = [ mathcomp.algebra ];
 
   installPhase = ''
     make -f Makefile CoqMakefile
     make -f CoqMakefile COQLIB=$out/lib/coq/${coq.coq-version}/ install
   '';
 
-  meta = with stdenv.lib; {
-    homepage = "https://github.com/coq-community/bits";
+  meta = {
     description = "A formalization of bitset operations in Coq";
     license = licenses.asl20;
     maintainers = with maintainers; [ ptival ];
-    platforms = coq.meta.platforms;
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.7" "8.8" "8.9" "8.10" "8.11" "8.12" ];
   };
 }
diff --git a/pkgs/development/coq-modules/coq-elpi/default.nix b/pkgs/development/coq-modules/coq-elpi/default.nix
index 230320671a7f..18dbeaea201d 100644
--- a/pkgs/development/coq-modules/coq-elpi/default.nix
+++ b/pkgs/development/coq-modules/coq-elpi/default.nix
@@ -1,43 +1,33 @@
-{ stdenv, fetchFromGitHub, which, coq }:
+{ lib, mkCoqDerivation, which, coq, version ? null }:
 
-let params = {
-  "8.11" = rec {
-    version = "1.6.0_8.11";
-    rev = "v${version}";
-    sha256 = "0ahxjnzmd7kl3gl38kyjqzkfgllncr2ybnw8bvgrc6iddgga7bpq";
-  };
-  "8.12" = rec {
-    version = "1.6.0";
-    rev = "v${version}";
-    sha256 = "0kf99i43mlf750fr7fric764mm495a53mg5kahnbp6zcjcxxrm0b";
-  };
-};
-  param = params.${coq.coq-version};
-in
-
-stdenv.mkDerivation rec {
-  name = "coq${coq.coq-version}-elpi-${param.version}";
-
-  src = fetchFromGitHub {
-    owner = "LPCIC";
-    repo = "coq-elpi";
-    inherit (param) rev sha256;
-  };
+with builtins; with lib; let
+  elpi = coq.ocamlPackages.elpi.override (
+    optionalAttrs (coq.coq-version == "8.11") { version = "1.11.4"; }
+  );
+in mkCoqDerivation {
+  pname = "elpi";
+  repo  = "coq-elpi";
+  owner = "LPCIC";
+  inherit version;
+  defaultVersion = lib.switch coq.coq-version [
+    { case = "8.13"; out = "1.8.1"; }
+    { case = "8.12"; out = "1.8.0"; }
+    { case = "8.11"; out = "1.6.0_8.11"; }
+  ] null;
+  release."1.8.1".sha256      = "1fbbdccdmr8g4wwpihzp4r2xacynjznf817lhijw6kqfav75zd0r";
+  release."1.8.0".sha256      = "13ywjg94zkbki22hx7s4gfm9rr87r4ghsgan23xyl3l9z8q0idd1";
+  release."1.7.0".sha256      = "1ws5cqr0xawv69prgygbl3q6dgglbaw0vc397h9flh90kxaqgyh8";
+  release."1.6.0_8.11".sha256 = "0ahxjnzmd7kl3gl38kyjqzkfgllncr2ybnw8bvgrc6iddgga7bpq";
+  release."1.6.0".sha256      = "0kf99i43mlf750fr7fric764mm495a53mg5kahnbp6zcjcxxrm0b";
+  releaseRev = v: "v${v}";
 
   nativeBuildInputs = [ which ];
-  buildInputs = [ coq coq.ocaml ] ++ (with coq.ocamlPackages; [ findlib elpi ]);
-
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
+  mlPlugin = true;
+  extraBuildInputs = [ elpi ];
 
   meta = {
     description = "Coq plugin embedding ELPI.";
-    maintainers = [ stdenv.lib.maintainers.cohencyril ];
-    license = stdenv.lib.licenses.lgpl21;
-    inherit (coq.meta) platforms;
-    inherit (src.meta) homepage;
-  };
-
-  passthru = {
-    compatibleCoqVersions = stdenv.lib.flip builtins.hasAttr params;
+    maintainers = [ maintainers.cohencyril ];
+    license = licenses.lgpl21;
   };
 }
diff --git a/pkgs/development/coq-modules/coq-ext-lib/default.nix b/pkgs/development/coq-modules/coq-ext-lib/default.nix
index e0ca52086206..8acb0643781d 100644
--- a/pkgs/development/coq-modules/coq-ext-lib/default.nix
+++ b/pkgs/development/coq-modules/coq-ext-lib/default.nix
@@ -1,63 +1,29 @@
-{ stdenv, fetchFromGitHub, coq, ...}@args:
-
-let
-  hashes = {
-    "0.9.4" = "1y66pamgsdxlq2w1338lj626ln70cwj7k53hxcp933g8fdsa4hp0";
-    "0.9.5" = "1b4cvz3llxin130g13calw5n1zmvi6wdd5yb8a41q7yyn2hd3msg";
-    "0.9.7" = "00v4bm4glv1hy08c8xsm467az6d1ashrznn8p2bmbmmp52lfg7ag";
-    "0.10.0" = "1kxi5bmjwi5zqlqgkyzhhxwgcih7wf60cyw9398k2qjkmi186r4a";
-    "0.10.1" = "0r1vspad8fb8bry3zliiz4hfj4w1iib1l2gm115a94m6zbiksd95";
-    "0.10.2" = "1b150rc5bmz9l518r4m3vwcrcnnkkn9q5lrwygkh0a7mckgg2k9f";
-    "0.10.3" = "0795gs2dlr663z826mp63c8h2zfadn541dr8q0fvnvi2z7kfyslb";
-    "0.11.1" = "0dmf1p9j8lm0hwaq0af18jxdwg869xi2jm8447zng7krrq3kvkg5";
-    "0.11.2" = "0iyka81g26x5n99xic7kqn8vxqjw8rz7vw9rs27iw04lf137vzv6";
-    "0.11.3" = "1w99nzpk72lffxis97k235axss5lmzhy5z3lga2i0si95mbpil42";
-  };
-
-  default-versions = {
-    "8.5" = "0.9.4";
-    "8.6" = "0.9.5";
-    "8.7" = "0.9.7";
-    "8.8" = "0.11.3";
-    "8.9" = "0.11.3";
-    "8.10" = "0.11.3";
-    "8.11" = "0.11.3";
-    "8.12" = "0.11.3";
-  };
-
-  param = rec {
-    version = args.version or default-versions.${coq.coq-version};
-    sha256 = hashes.${version};
-  };
-
-in
-
-stdenv.mkDerivation rec {
-
-  name = "coq${coq.coq-version}-coq-ext-lib-${version}";
-  inherit (param) version;
-
-  src = fetchFromGitHub {
-    owner = "coq-community";
-    repo = "coq-ext-lib";
-    rev = "v${version}";
-    inherit (param) sha256;
-  };
-
-  buildInputs = [ coq ];
-
-  enableParallelBuilding = true;
-
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
-
-  meta = with stdenv.lib; {
-    homepage = "https://github.com/coq-ext-lib/coq-ext-lib";
+{ lib, mkCoqDerivation, coq, version ? null }:
+
+with lib; mkCoqDerivation rec {
+  pname = "coq-ext-lib";
+  owner = "coq-ext-lib";
+  inherit version;
+  defaultVersion = with versions; switch coq.coq-version [
+    { case = range "8.8" "8.12"; out = "0.11.3"; }
+    { case = "8.7";              out = "0.9.7"; }
+    { case = "8.6";              out = "0.9.5"; }
+    { case = "8.5";              out = "0.9.4"; }
+  ] null;
+  release."0.11.3".sha256 = "1w99nzpk72lffxis97k235axss5lmzhy5z3lga2i0si95mbpil42";
+  release."0.11.2".sha256 = "0iyka81g26x5n99xic7kqn8vxqjw8rz7vw9rs27iw04lf137vzv6";
+  release."0.10.3".sha256 = "0795gs2dlr663z826mp63c8h2zfadn541dr8q0fvnvi2z7kfyslb";
+  release."0.11.1".sha256 = "0dmf1p9j8lm0hwaq0af18jxdwg869xi2jm8447zng7krrq3kvkg5";
+  release."0.10.2".sha256 = "1b150rc5bmz9l518r4m3vwcrcnnkkn9q5lrwygkh0a7mckgg2k9f";
+  release."0.10.1".sha256 = "0r1vspad8fb8bry3zliiz4hfj4w1iib1l2gm115a94m6zbiksd95";
+  release."0.10.0".sha256 = "1kxi5bmjwi5zqlqgkyzhhxwgcih7wf60cyw9398k2qjkmi186r4a";
+  release."0.9.7".sha256  = "00v4bm4glv1hy08c8xsm467az6d1ashrznn8p2bmbmmp52lfg7ag";
+  release."0.9.5".sha256  = "1b4cvz3llxin130g13calw5n1zmvi6wdd5yb8a41q7yyn2hd3msg";
+  release."0.9.4".sha256  = "1y66pamgsdxlq2w1338lj626ln70cwj7k53hxcp933g8fdsa4hp0";
+  releaseRev = v: "v${v}";
+
+  meta = {
     description = "A collection of theories and plugins that may be useful in other Coq developments";
     maintainers = with maintainers; [ jwiegley ptival ];
-    platforms = coq.meta.platforms;
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.hasAttr v default-versions;
   };
 }
diff --git a/pkgs/development/coq-modules/coq-haskell/default.nix b/pkgs/development/coq-modules/coq-haskell/default.nix
index 7c86a7d55f34..7caf754ae50a 100644
--- a/pkgs/development/coq-modules/coq-haskell/default.nix
+++ b/pkgs/development/coq-modules/coq-haskell/default.nix
@@ -1,60 +1,21 @@
-{ stdenv, fetchgit, coq, ssreflect }:
+{ lib, mkCoqDerivation, coq, ssreflect, version ? null }:
 
-let params =
-  {
-    "8.5" = {
-      version = "20171215";
-      rev = "e2cf8b270c2efa3b56fab1ef6acc376c2c3de968";
-      sha256 = "09dq1vvshhlhgjccrhqgbhnq2hrys15xryfszqq11rzpgvl2zgdv";
-    };
+with lib; mkCoqDerivation {
 
-    "8.6" = {
-      version = "20171215";
-      rev = "e2cf8b270c2efa3b56fab1ef6acc376c2c3de968";
-      sha256 = "09dq1vvshhlhgjccrhqgbhnq2hrys15xryfszqq11rzpgvl2zgdv";
-    };
+  pname = "coq-haskell";
+  owner = "jwiegley";
+  inherit version;
+  defaultVersion = if versions.range "8.5" "8.8" coq.coq-version then "20171215" else null;
+  release."20171215".rev    = "e2cf8b270c2efa3b56fab1ef6acc376c2c3de968";
+  release."20171215".sha256 = "09dq1vvshhlhgjccrhqgbhnq2hrys15xryfszqq11rzpgvl2zgdv";
 
-    "8.7" = {
-      version = "20171215";
-      rev = "e2cf8b270c2efa3b56fab1ef6acc376c2c3de968";
-      sha256 = "09dq1vvshhlhgjccrhqgbhnq2hrys15xryfszqq11rzpgvl2zgdv";
-    };
-
-    "8.8" = {
-      version = "20171215";
-      rev = "e2cf8b270c2efa3b56fab1ef6acc376c2c3de968";
-      sha256 = "09dq1vvshhlhgjccrhqgbhnq2hrys15xryfszqq11rzpgvl2zgdv";
-    };
-  };
-  param = params.${coq.coq-version};
-in
-
-stdenv.mkDerivation {
-
-  name = "coq${coq.coq-version}-coq-haskell-${param.version}";
-
-  src = fetchgit {
-    url = "git://github.com/jwiegley/coq-haskell.git";
-    inherit (param) rev sha256;
-  };
-
-  buildInputs = with coq.ocamlPackages; [ ocaml camlp5 findlib ];
+  mlPlugin = true;
+  extraInstallFlags = [ "-f Makefile.coq" ];
   propagatedBuildInputs = [ coq ssreflect ];
-
   enableParallelBuilding = false;
 
-  installPhase = ''
-    make -f Makefile.coq COQLIB=$out/lib/coq/${coq.coq-version}/ install
-  '';
-
-  meta = with stdenv.lib; {
-    homepage = "https://github.com/jwiegley/coq-haskell";
+  meta = {
     description = "A library for formalizing Haskell types and functions in Coq";
     maintainers = with maintainers; [ jwiegley ];
-    platforms = coq.meta.platforms;
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.hasAttr v params;
   };
 }
diff --git a/pkgs/development/coq-modules/coqeal/default.nix b/pkgs/development/coq-modules/coqeal/default.nix
new file mode 100644
index 000000000000..4c978a791db8
--- /dev/null
+++ b/pkgs/development/coq-modules/coqeal/default.nix
@@ -0,0 +1,24 @@
+{ coq, mkCoqDerivation, mathcomp, bignums, paramcoq, multinomials,
+  lib, which, version ? null }:
+
+with lib; mkCoqDerivation {
+
+  pname = "CoqEAL";
+  owner = "CoqEAL";
+  inherit version;
+  defaultVersion = with versions; switch [ coq.version mathcomp.version ]  [
+      { cases = [ (isGe "8.7") "1.11.0" ]; out = "1.0.4"; }
+      { cases = [ (isGe "8.7") "1.10.0" ]; out = "1.0.3"; }
+    ] null;
+
+  release."1.0.4".sha256 = "1g5m26lr2lwxh6ld2gykailhay4d0ayql4bfh0aiwqpmmczmxipk";
+  release."1.0.3".sha256 = "0hc63ny7phzbihy8l7wxjvn3haxx8jfnhi91iw8hkq8n29i23v24";
+
+  extraBuildInputs = [ which ];
+  propagatedBuildInputs = [ mathcomp.algebra bignums paramcoq multinomials ];
+
+  meta = {
+    description = "CoqEAL - The Coq Effective Algebra Library";
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/coq-modules/coqhammer/default.nix b/pkgs/development/coq-modules/coqhammer/default.nix
index 56fce9ac526f..89aa8d74e85c 100644
--- a/pkgs/development/coq-modules/coqhammer/default.nix
+++ b/pkgs/development/coq-modules/coqhammer/default.nix
@@ -1,43 +1,28 @@
-{ stdenv, fetchFromGitHub, coq }:
-
-let
-  params = {
-    "8.8" = {
-      version = "1.1";
-      sha256 = "0ms086wp4jmrzyglb8wymchzyflflk01nsfsk4r6qv8rrx81nx9h";
-      buildInputs = [ coq.ocamlPackages.camlp5 ];
-    };
-    "8.9" = {
-      version = "1.1.1";
-      sha256 = "1knjmz4hr8vlp103j8n4fyb2lfxysnm512gh3m2kp85n6as6fvb9";
-      buildInputs = [ coq.ocamlPackages.camlp5 ];
-    };
-    "8.10" = {
-      version = "1.3";
-      sha256 = "1fj8497ir4m79hyrmmmmrag01001wrby0h24wv6525vz0w5py3cd";
-    };
-    "8.11" = {
-      version = "1.3";
-      sha256 = "08zf8qfna7b9p2myfaz4g7bas3a1q1156x78n5isqivlnqfrjc1b";
-    };
-    "8.12" = {
-      version = "1.3";
-      sha256 = "1q1y3cwhd98pkm98g71fsdjz85bfwgcz2xn7s7wwmiraifv5l6z8";
-    };
-  };
-  param = params.${coq.coq-version};
-in
-
-stdenv.mkDerivation rec {
-  inherit (param) version;
-  name = "coq${coq.coq-version}-coqhammer-${version}";
-
-  src = fetchFromGitHub {
-    owner = "lukaszcz";
-    repo = "coqhammer";
-    rev = "v${version}-coq${coq.coq-version}";
-    inherit (param) sha256;
-  };
+{ lib, mkCoqDerivation, coq, version ? null }:
+
+with lib; mkCoqDerivation {
+  inherit version;
+  pname = "coqhammer";
+  owner = "lukaszcz";
+  defaultVersion = with versions; switch coq.coq-version [
+    { case = "8.12"; out = "1.3-coq8.12"; }
+    { case = "8.11"; out = "1.3-coq8.11"; }
+    { case = "8.10"; out = "1.3-coq8.10"; }
+    { case = "8.9";  out = "1.1.1-coq8.9"; }
+    { case = "8.8";  out = "1.1-coq8.8"; }
+  ] null;
+  release."1.3-coq8.12".sha256   = "1q1y3cwhd98pkm98g71fsdjz85bfwgcz2xn7s7wwmiraifv5l6z8";
+  release."1.3-coq8.11".sha256   = "08zf8qfna7b9p2myfaz4g7bas3a1q1156x78n5isqivlnqfrjc1b";
+  release."1.3-coq8.10".sha256   = "1fj8497ir4m79hyrmmmmrag01001wrby0h24wv6525vz0w5py3cd";
+  release."1.1.1-coq8.9".sha256  = "1knjmz4hr8vlp103j8n4fyb2lfxysnm512gh3m2kp85n6as6fvb9";
+  release."1.1-coq8.8".sha256    = "0ms086wp4jmrzyglb8wymchzyflflk01nsfsk4r6qv8rrx81nx9h";
+
+  release."1.3-coq8.12".version  = "1.3";
+  release."1.3-coq8.11".version  = "1.3";
+  release."1.3-coq8.10".version  = "1.3";
+  release."1.1.1-coq8.9".version = "1.1.1";
+  release."1.1-coq8.9".version   = "1.1";
+  releaseRev = v: "v${v}";
 
   postPatch = ''
     substituteInPlace Makefile.coq.local --replace \
@@ -46,26 +31,16 @@ stdenv.mkDerivation rec {
     substituteInPlace Makefile.coq.local --replace 'g++' 'c++' --replace 'gcc' 'cc'
   '';
 
-  buildInputs = [ coq ] ++ (with coq.ocamlPackages; [
-    ocaml findlib
-  ]) ++ (param.buildInputs or []);
-
   preInstall = ''
     mkdir -p $out/bin
   '';
 
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
+  mlPlugin = true;
 
   meta = {
     homepage = "http://cl-informatik.uibk.ac.at/cek/coqhammer/";
     description = "Automation for Dependent Type Theory";
-    license = stdenv.lib.licenses.lgpl21;
-    inherit (coq.meta) platforms;
-    maintainers = [ stdenv.lib.maintainers.vbgl ];
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.hasAttr v params;
+    license = licenses.lgpl21;
+    maintainers = [ maintainers.vbgl ];
   };
-
 }
diff --git a/pkgs/development/coq-modules/coqprime/default.nix b/pkgs/development/coq-modules/coqprime/default.nix
index f16341ddbd1b..79db14610758 100644
--- a/pkgs/development/coq-modules/coqprime/default.nix
+++ b/pkgs/development/coq-modules/coqprime/default.nix
@@ -1,60 +1,29 @@
-{ stdenv, which, fetchFromGitHub, coq, bignums }:
-
-let
-  params =
-    let v_8_8 = {
-          version = "8.8";
-          sha256 = "075yjczk79pf1hd3lgdjiz84ilkzfxjh18lgzrhhqp7d3kz5lxp5";
-        };
-        v_8_10 = {
-          version = "8.10";
-          sha256 = "0r9gnh5a5ykiiz5h1i8xnzgiydpwc4z9qhndxyya85xq0f910qaz";
-        };
-    in
-      {
-        "8.7" = {
-          version = "8.7.2";
-          sha256 = "15zlcrx06qqxjy3nhh22wzy0rb4npc8l4nx2bbsfsvrisbq1qb7k";
-        };
-        "8.8" = v_8_8;
-        "8.9" = v_8_8;
-        "8.10" = v_8_10;
-        "8.11" = v_8_10;
-	"8.12" = {
-	  version = "8.12";
-          sha256 = "1slka4w0pya15js4drx9frj7lxyp3k2lzib8v23givzpnxs8ijdj";
-	};
-      };
-  param = params.${coq.coq-version};
-in
-
-stdenv.mkDerivation rec {
-
-  inherit (param) version;
-  name = "coq${coq.coq-version}-coqprime-${version}";
-
-  src = fetchFromGitHub {
-    owner = "thery";
-    repo = "coqprime";
-    rev = "v${version}";
-    inherit (param) sha256;
-  };
-
-  buildInputs = [ which coq ];
-
+{ which, lib, mkCoqDerivation, coq, bignums, version ? null }:
+
+with lib; mkCoqDerivation {
+
+  pname = "coqprime";
+  owner = "thery";
+  inherit version;
+  defaultVersion = with versions; switch coq.coq-version [
+    { case = "8.12";              out = "8.12"; }
+    { case = range "8.10" "8.11"; out = "8.10"; }
+    { case = range "8.8"  "8.9";  out = "8.8"; }
+    { case = "8.7";               out = "8.7.2"; }
+  ] null;
+
+  release."8.12".sha256  = "1slka4w0pya15js4drx9frj7lxyp3k2lzib8v23givzpnxs8ijdj";
+  release."8.10".sha256  = "0r9gnh5a5ykiiz5h1i8xnzgiydpwc4z9qhndxyya85xq0f910qaz";
+  release."8.8".sha256   = "075yjczk79pf1hd3lgdjiz84ilkzfxjh18lgzrhhqp7d3kz5lxp5";
+  release."8.7.2".sha256 = "15zlcrx06qqxjy3nhh22wzy0rb4npc8l4nx2bbsfsvrisbq1qb7k";
+  releaseRev = v: "v${v}";
+
+  extraBuildInputs = [ which ];
   propagatedBuildInputs = [ bignums ];
 
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
-
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Library to certify primality using Pocklington certificate and Elliptic Curve Certificate";
     license = licenses.lgpl21;
-    maintainers = [ stdenv.lib.maintainers.vbgl ];
-    inherit (coq.meta) platforms;
-    inherit (src.meta) homepage;
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.hasAttr v params;
+    maintainers = [ maintainers.vbgl ];
   };
 }
diff --git a/pkgs/development/coq-modules/coquelicot/default.nix b/pkgs/development/coq-modules/coquelicot/default.nix
index e45077f89fdd..b7f5802b9d40 100644
--- a/pkgs/development/coq-modules/coquelicot/default.nix
+++ b/pkgs/development/coq-modules/coquelicot/default.nix
@@ -1,43 +1,29 @@
-{ stdenv, fetchurl, which, coq, ssreflect }:
+{ lib, mkCoqDerivation, which, autoconf,
+  coq, ssreflect, version ? null }:
 
-let param =
-  if stdenv.lib.versionAtLeast coq.coq-version "8.8"
-  then {
-    version = "3.1.0";
-    uid = "38287";
-    sha256 = "07436wkvnq9jyf7wyhp77bpl157s3qhba1ay5xrkxdi26qdf3h14";
-  } else {
-    version = "3.0.2";
-    uid = "37523";
-    sha256 = "1biia7nfqf7vaqq5gmykl4rwjyvrcwss6r2jdf0in5pvp2rnrj2w";
-  }
-; in
+with lib; mkCoqDerivation {
+  pname = "coquelicot";
+  owner = "coquelicot";
+  domain = "gitlab.inria.fr";
+  inherit version;
+  defaultVersion = with versions; switch coq.coq-version [
+    { case = isGe "8.8" ;        out = "3.2.0"; }
+    { case = range "8.8" "8.13"; out = "3.1.0"; }
+    { case = range "8.5" "8.9";  out = "3.0.2"; }
+  ] null;
+  release."3.2.0".sha256 = "07w7dbl8x7xxnbr2q39wrdh054gvi3daqjpdn1jm53crsl1fjxm4";
+  release."3.1.0".sha256 = "02i0djar13yk01hzaqprcldhhscn9843x9nf6x3jkv4wv1jwnx9f";
+  release."3.0.2".sha256 = "1rqfbbskgz7b1bcpva8wh3v3456sq2364y804f94sc8y5sij23nl";
+  releaseRev = v: "coquelicot-${v}";
 
-stdenv.mkDerivation {
-  name = "coq${coq.coq-version}-coquelicot-${param.version}";
-  src = fetchurl {
-    url = "https://gforge.inria.fr/frs/download.php/file/${param.uid}/coquelicot-${param.version}.tar.gz";
-    inherit (param) sha256;
-  };
-
-  nativeBuildInputs = [ which ];
-  buildInputs = [ coq ];
+  nativeBuildInputs = [ which autoconf ];
   propagatedBuildInputs = [ ssreflect ];
-
-  configureFlags = [ "--libdir=$out/lib/coq/${coq.coq-version}/user-contrib/Coquelicot" ];
-  buildPhase = "./remake";
-  installPhase = "./remake install";
+  useMelquiondRemake.logpath = "Coquelicot";
 
   meta = {
     homepage = "http://coquelicot.saclay.inria.fr/";
     description = "A Coq library for Reals";
-    license = stdenv.lib.licenses.lgpl3;
-    maintainers = [ stdenv.lib.maintainers.vbgl ];
-    inherit (coq.meta) platforms;
+    license = licenses.lgpl3;
+    maintainers = [ maintainers.vbgl ];
   };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.5" "8.6" "8.7" "8.8" "8.9" "8.10" "8.11" "8.12" ];
-  };
-
 }
diff --git a/pkgs/development/coq-modules/corn/default.nix b/pkgs/development/coq-modules/corn/default.nix
index 14ff74506f37..9f2316f3177d 100644
--- a/pkgs/development/coq-modules/corn/default.nix
+++ b/pkgs/development/coq-modules/corn/default.nix
@@ -1,17 +1,10 @@
-{ stdenv, fetchFromGitHub, coq, bignums, math-classes }:
+{ lib, mkCoqDerivation, coq, bignums, math-classes, version ? null }:
 
-stdenv.mkDerivation rec {
+with lib; mkCoqDerivation rec {
   pname = "corn";
-  version = "8.8.1";
-  name = "coq${coq.coq-version}-${pname}-${version}";
-  src = fetchFromGitHub {
-    owner = "coq-community";
-    repo = pname;
-    rev = version;
-    sha256 = "0gh32j0f18vv5lmf6nb87nr5450w6ai06rhrnvlx2wwi79gv10wp";
-  };
-
-  buildInputs = [ coq ];
+  inherit version;
+  defaultVersion = if versions.range "8.6" "8.9" coq.coq-version then "8.8.1" else null;
+  release."8.8.1".sha256 = "0gh32j0f18vv5lmf6nb87nr5450w6ai06rhrnvlx2wwi79gv10wp";
 
   preConfigure = "patchShebangs ./configure.sh";
   configureScript = "./configure.sh";
@@ -19,20 +12,10 @@ stdenv.mkDerivation rec {
 
   propagatedBuildInputs = [ bignums math-classes ];
 
-  enableParallelBuilding = true;
-
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
-
   meta = {
     homepage = "http://c-corn.github.io/";
-    license = stdenv.lib.licenses.gpl2;
+    license = licenses.gpl2;
     description = "A Coq library for constructive analysis";
-    maintainers = [ stdenv.lib.maintainers.vbgl ];
-    inherit (coq.meta) platforms;
+    maintainers = [ maintainers.vbgl ];
   };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.6" "8.7" "8.8" "8.9" ];
-  };
-
 }
diff --git a/pkgs/development/coq-modules/dpdgraph/default.nix b/pkgs/development/coq-modules/dpdgraph/default.nix
index 195a1c4eada5..c6cc0d34ed1c 100644
--- a/pkgs/development/coq-modules/dpdgraph/default.nix
+++ b/pkgs/development/coq-modules/dpdgraph/default.nix
@@ -1,88 +1,58 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, coq }:
-
-let params = {
-  "8.12" = {
-    version = "0.6.8";
-    sha256 = "1mj6sknsd53xfb387sp3kdwvl4wn80ck24bfzf3s6mgw1a12vyps";
-  };
-  "8.11" = {
-    version = "0.6.7";
-    sha256 = "01vpi7scvkl4ls1z2k2x9zd65wflzb667idj759859hlz3ps9z09";
-  };
-  "8.10" = {
-    version = "0.6.6";
-    sha256 = "1gjrm5zjzw4cisiwdr5b3iqa7s4cssa220xr0k96rwgk61rcjd8w";
-  };
-  "8.9" = {
-    version = "0.6.5";
-    sha256 = "1f34z24yg05b1096gqv36jr3vffkcjkf9qncii3pzhhvagxd0w2f";
-  };
-  "8.8" = {
-    version = "0.6.3";
-    rev = "0acbd0a594c7e927574d5f212cc73a486b5305d2";
-    sha256 = "0c95b0bz2kjm6swr5na4gs06lxxywradszxbr5ldh2zx02r3f3rx";
-  };
-  "8.7" = {
-    version = "0.6.2";
-    rev = "d76ddde37d918569945774733b7997e8b24daf51";
-    sha256 = "04lnf4b25yarysj848cfl8pd3i3pr3818acyp9hgwdgd1rqmhjwm";
-  };
-  "8.6" = {
-    version = "0.6.1";
-    rev = "c3b87af6bfa338e18b83f014ebd0e56e1f611663";
-    sha256 = "1jaafkwsb5450378nprjsds1illgdaq60gryi8kspw0i25ykz2c9";
-  };
-  "8.5" = {
-    version = "0.6";
-    sha256 = "0qvar8gfbrcs9fmvkph5asqz4l5fi63caykx3bsn8zf0xllkwv0n";
-  };
-};
-param = params.${coq.coq-version};
-in
-
-let hasWarning = stdenv.lib.versionAtLeast coq.ocamlPackages.ocaml.version "4.08"; in
-
-stdenv.mkDerivation {
-  name = "coq${coq.coq-version}-dpdgraph-${param.version}";
-  src = fetchFromGitHub {
-    owner = "Karmaki";
-    repo = "coq-dpdgraph";
-    rev = param.rev or "v${param.version}";
-    inherit (param) sha256;
-  };
+{ lib, mkCoqDerivation, autoreconfHook, coq, version ? null }:
+
+with lib;
+let hasWarning = versionAtLeast coq.ocamlPackages.ocaml.version "4.08"; in
+
+mkCoqDerivation {
+  pname = "dpdgraph";
+  owner = "Karmaki";
+  repo = "coq-dpdgraph";
+  inherit version;
+  defaultVersion = switch coq.coq-version [
+    { case = "8.12"; out = "0.6.8"; }
+    { case = "8.11"; out = "0.6.7"; }
+    { case = "8.10"; out = "0.6.6"; }
+    { case = "8.9";  out = "0.6.5"; }
+    { case = "8.8";  out = "0.6.3"; }
+    { case = "8.7";  out = "0.6.2"; }
+    { case = "8.6";  out = "0.6.1"; }
+    { case = "8.5";  out = "0.6"; }
+  ] null;
+
+  release."0.6.8".sha256 = "1mj6sknsd53xfb387sp3kdwvl4wn80ck24bfzf3s6mgw1a12vyps";
+  release."0.6.7".sha256 = "01vpi7scvkl4ls1z2k2x9zd65wflzb667idj759859hlz3ps9z09";
+  release."0.6.6".sha256 = "1gjrm5zjzw4cisiwdr5b3iqa7s4cssa220xr0k96rwgk61rcjd8w";
+  release."0.6.5".sha256 = "1f34z24yg05b1096gqv36jr3vffkcjkf9qncii3pzhhvagxd0w2f";
+  release."0.6.3".rev    = "0acbd0a594c7e927574d5f212cc73a486b5305d2";
+  release."0.6.3".sha256 = "0c95b0bz2kjm6swr5na4gs06lxxywradszxbr5ldh2zx02r3f3rx";
+  release."0.6.2".rev    = "d76ddde37d918569945774733b7997e8b24daf51";
+  release."0.6.2".sha256 = "04lnf4b25yarysj848cfl8pd3i3pr3818acyp9hgwdgd1rqmhjwm";
+  release."0.6.1".rev    = "c3b87af6bfa338e18b83f014ebd0e56e1f611663";
+  release."0.6.1".sha256 = "1jaafkwsb5450378nprjsds1illgdaq60gryi8kspw0i25ykz2c9";
+  release."0.6".sha256   = "0qvar8gfbrcs9fmvkph5asqz4l5fi63caykx3bsn8zf0xllkwv0n";
+  releaseRev = v: "v${v}";
 
   nativeBuildInputs = [ autoreconfHook ];
-  buildInputs = [ coq ]
-  ++ (with coq.ocamlPackages; [ ocaml findlib ocamlgraph ]
-    ++ stdenv.lib.optional (!stdenv.lib.versionAtLeast coq.coq-version "8.10") camlp5);
+  mlPlugin = true;
+  extraBuildInputs = [ coq.ocamlPackages.ocamlgraph ];
 
   # dpd_compute.ml uses deprecated Pervasives.compare
   # Versions prior to 0.6.5 do not have the WARN_ERR build flag
-  preConfigure = stdenv.lib.optionalString hasWarning ''
+  preConfigure = optionalString hasWarning ''
     substituteInPlace Makefile.in --replace "-warn-error +a " ""
   '';
 
-  buildFlags = stdenv.lib.optional hasWarning "WARN_ERR=";
+  buildFlags = optional hasWarning "WARN_ERR=";
 
   preInstall = ''
     mkdir -p $out/bin
   '';
 
-  installFlags = [
-    "COQLIB=$(out)/lib/coq/${coq.coq-version}/"
-    "BINDIR=$(out)/bin"
-  ];
+  extraInstallFlags = [ "BINDIR=$(out)/bin" ];
 
   meta = {
     description = "Build dependency graphs between Coq objects";
-    license = stdenv.lib.licenses.lgpl21;
-    homepage = "https://github.com/Karmaki/coq-dpdgraph/";
-    maintainers = with stdenv.lib.maintainers; [ vbgl ];
-    platforms = coq.meta.platforms;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ vbgl ];
   };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.hasAttr v params;
-  };
-
 }
diff --git a/pkgs/development/coq-modules/equations/default.nix b/pkgs/development/coq-modules/equations/default.nix
index 5a07d537536c..352222e8aa62 100644
--- a/pkgs/development/coq-modules/equations/default.nix
+++ b/pkgs/development/coq-modules/equations/default.nix
@@ -1,79 +1,48 @@
-{ stdenv, fetchFromGitHub, coq }:
-
-let
-  params = {
-    "8.6" = {
-      version = "1.0";
-      rev = "v1.0";
-      sha256 = "19ylw9v9g35607w4hm86j7mmkghh07hmkc1ls5bqlz3dizh5q4pj";
-    };
-
-    "8.7" = {
-      version = "1.0";
-      rev = "v1.0-8.7";
-      sha256 = "1bavg4zl1xn0jqrdq8iw7xqzdvdf39ligj9saz5m9c507zri952h";
-    };
-
-    "8.8" = {
-      version = "1.2";
-      rev = "v1.2-8.8";
-      sha256 = "06452fyzalz7zcjjp73qb7d6xvmqb6skljkivf8pfm55fsc8s7kx";
-    };
-
-    "8.9" = {
-      version = "1.2.1";
-      rev = "v1.2.1-8.9";
-      sha256 = "0d8ddj6nc6p0k25cd8fs17cq427zhzbc3v9pk2wd2fnvk70nlfij";
-    };
-
-    "8.10" = {
-      version = "1.2.1";
-      rev = "v1.2.1-8.10-2";
-      sha256 = "0j3z4l5nrbyi9zbbyqkc6kassjanwld2188mwmrbqspaypm2ys68";
-    };
-
-    "8.11" = {
-      version = "1.2.3";
-      rev = "v1.2.3-8.11";
-      sha256 = "1srxz1rws8jsh7402g2x2vcqgjbbsr64dxxj5d2zs48pmhb20csf";
-    };
-
-    "8.12" = {
-      version = "1.2.3";
-      rev = "v1.2.3-8.12";
-      sha256 = "1y0jkvzyz5ssv5vby41p1i8zs7nsdc8g3pzyq73ih9jz8h252643";
-    };
-  };
-  param = params.${coq.coq-version};
-in
-
-stdenv.mkDerivation rec {
-
-  name = "coq${coq.coq-version}-equations-${version}";
-  version = param.version;
-
-  src = fetchFromGitHub {
-    owner = "mattam82";
-    repo = "Coq-Equations";
-    rev = param.rev;
-    sha256 = param.sha256;
-  };
-
-  buildInputs = with coq.ocamlPackages; [ ocaml camlp5 findlib coq ];
-
+{ lib, mkCoqDerivation, coq, version ? null }:
+
+with lib; mkCoqDerivation {
+  pname = "equations";
+  owner = "mattam82";
+  repo = "Coq-Equations";
+  inherit version;
+  defaultVersion = switch coq.coq-version [
+    { case = "8.12"; out = "1.2.3+coq8.12"; }
+    { case = "8.11"; out = "1.2.3+coq8.11"; }
+    { case = "8.10"; out = "1.2.1+coq8.10-2"; }
+    { case = "8.9";  out = "1.2.1+coq8.9"; }
+    { case = "8.8";  out = "1.2+coq8.8"; }
+    { case = "8.7";  out = "1.0+coq8.7"; }
+    { case = "8.6";  out = "1.0+coq8.6"; }
+  ] null;
+
+    release."1.0+coq8.6".version      = "1.0";
+    release."1.0+coq8.6".rev          = "v1.0";
+    release."1.0+coq8.6".sha256       = "19ylw9v9g35607w4hm86j7mmkghh07hmkc1ls5bqlz3dizh5q4pj";
+    release."1.0+coq8.7".version      = "1.0";
+    release."1.0+coq8.7".rev          = "v1.0-8.7";
+    release."1.0+coq8.7".sha256       = "1bavg4zl1xn0jqrdq8iw7xqzdvdf39ligj9saz5m9c507zri952h";
+    release."1.2+coq8.8".version      = "1.2";
+    release."1.2+coq8.8".rev          = "v1.2-8.8";
+    release."1.2+coq8.8".sha256       = "06452fyzalz7zcjjp73qb7d6xvmqb6skljkivf8pfm55fsc8s7kx";
+    release."1.2.1+coq8.9".version    = "1.2.1";
+    release."1.2.1+coq8.9".rev        = "v1.2.1-8.9";
+    release."1.2.1+coq8.9".sha256     = "0d8ddj6nc6p0k25cd8fs17cq427zhzbc3v9pk2wd2fnvk70nlfij";
+    release."1.2.1+coq8.10-2".version = "1.2.1";
+    release."1.2.1+coq8.10-2".rev     = "v1.2.1-8.10-2";
+    release."1.2.1+coq8.10-2".sha256  = "0j3z4l5nrbyi9zbbyqkc6kassjanwld2188mwmrbqspaypm2ys68";
+    release."1.2.3+coq8.11".version   = "1.2.3";
+    release."1.2.3+coq8.11".rev       = "v1.2.3-8.11";
+    release."1.2.3+coq8.11".sha256    = "1srxz1rws8jsh7402g2x2vcqgjbbsr64dxxj5d2zs48pmhb20csf";
+    release."1.2.3+coq8.12".version   = "1.2.3";
+    release."1.2.3+coq8.12".rev       = "v1.2.3-8.12";
+    release."1.2.3+coq8.12".sha256    = "1y0jkvzyz5ssv5vby41p1i8zs7nsdc8g3pzyq73ih9jz8h252643";
+
+  mlPlugin = true;
   preBuild = "coq_makefile -f _CoqProject -o Makefile";
 
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
-
-  meta = with stdenv.lib; {
+  meta = {
     homepage = "https://mattam82.github.io/Coq-Equations/";
     description = "A plugin for Coq to add dependent pattern-matching";
     maintainers = with maintainers; [ jwiegley ];
-    platforms = coq.meta.platforms;
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.hasAttr v params;
   };
-
 }
diff --git a/pkgs/development/coq-modules/fiat/HEAD.nix b/pkgs/development/coq-modules/fiat/HEAD.nix
index fd3ade0c64b5..47f097a34b2e 100644
--- a/pkgs/development/coq-modules/fiat/HEAD.nix
+++ b/pkgs/development/coq-modules/fiat/HEAD.nix
@@ -1,17 +1,17 @@
-{stdenv, fetchgit, coq, python27}:
+{lib, mkCoqDerivation, coq, python27, version ? null }:
 
-stdenv.mkDerivation rec {
+with lib; mkCoqDerivation rec {
+  pname = "fiat";
+  owner = "mit-plv";
+  repo = "fiat";
+  displayVersion = { fiat = v: "unstable-${v}"; };
+  inherit version;
+  defaultVersion = if coq.coq-version == "8.5" then "2016-10-24" else null;
+  release."2016-10-24".rev    = "7feb6c64be9ebcc05924ec58fe1463e73ec8206a";
+  release."2016-10-24".sha256 = "0griqc675yylf9rvadlfsabz41qy5f5idya30p5rv6ysiakxya64";
 
-  name = "coq-fiat-${coq.coq-version}-unstable-${version}";
-  version = "2016-10-24";
-
-  src = fetchgit {
-    url = "https://github.com/mit-plv/fiat.git";
-    rev = "7feb6c64be9ebcc05924ec58fe1463e73ec8206a";
-    sha256 = "0griqc675yylf9rvadlfsabz41qy5f5idya30p5rv6ysiakxya64";
-  };
-
-  buildInputs = [ coq python27 ] ++ (with coq.ocamlPackages; [ ocaml camlp5 ]);
+  mlPlugin = true;
+  extraBuildInputs = [ python27 ];
 
   prePatch = "patchShebangs etc/coq-scripts";
 
@@ -26,14 +26,9 @@ stdenv.mkDerivation rec {
     cp -pR src/* $COQLIB/user-contrib/Fiat
   '';
 
-  meta = with stdenv.lib; {
+  meta = {
     homepage = "http://plv.csail.mit.edu/fiat/";
     description = "A library for the Coq proof assistant for synthesizing efficient correct-by-construction programs from declarative specifications";
     maintainers = with maintainers; [ jwiegley ];
-    platforms = coq.meta.platforms;
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: v == "8.5";
   };
 }
diff --git a/pkgs/development/coq-modules/flocq/default.nix b/pkgs/development/coq-modules/flocq/default.nix
index c5d3a295f2bc..2598d4e233eb 100644
--- a/pkgs/development/coq-modules/flocq/default.nix
+++ b/pkgs/development/coq-modules/flocq/default.nix
@@ -1,49 +1,26 @@
-{ stdenv, bash, which, autoconf, automake, fetchzip, coq }:
-
-let params =
-  if stdenv.lib.versionAtLeast coq.coq-version "8.7" then {
-    version = "3.3.1";
-    sha256 = "0k1nfgiszmai5dihhpfa5mgq9rwigl0n38dw10jn79x89xbdpyh5";
-  } else {
-    version = "2.6.1";
-    sha256 = "0q5a038ww5dn72yvwn5298d3ridkcngb1dik8hdyr3xh7gr5qibj";
-  }
-; in
-
-stdenv.mkDerivation rec {
-
-  name = "coq${coq.coq-version}-flocq-${version}";
-  inherit (params) version;
-
-  src = fetchzip {
-    url = "https://gitlab.inria.fr/flocq/flocq/-/archive/flocq-${version}.tar.gz";
-    inherit (params) sha256;
-  };
-
-  nativeBuildInputs = [ bash which autoconf automake ];
-  buildInputs = [ coq ] ++ (with coq.ocamlPackages; [
-    ocaml camlp5
-  ]);
-
-  buildPhase = ''
-    ${bash}/bin/bash autogen.sh || autoconf
-    ${bash}/bin/bash configure --libdir=$out/lib/coq/${coq.coq-version}/user-contrib/Flocq
-    ./remake
-  '';
-
-  installPhase = ''
-    ./remake install
-  '';
-
-  meta = with stdenv.lib; {
-    homepage = "http://flocq.gforge.inria.fr/";
+{ lib, bash, which, autoconf, automake,
+  mkCoqDerivation, coq, version ? null }:
+
+with lib; mkCoqDerivation {
+  pname = "flocq";
+  owner = "flocq";
+  domain = "gitlab.inria.fr";
+  inherit version;
+  defaultVersion = with versions; switch coq.coq-version [
+    { case = isGe "8.7";        out = "3.3.1"; }
+    { case = range "8.5" "8.8"; out = "2.6.1"; }
+  ] null;
+  release."3.3.1".sha256 = "1mk8adhi5hrllsr0hamzk91vf2405sjr4lh5brg9201mcw11abkz";
+  release."2.6.1".sha256 = "0q5a038ww5dn72yvwn5298d3ridkcngb1dik8hdyr3xh7gr5qibj";
+  releaseRev = v: "flocq-${v}";
+
+  nativeBuildInputs = [ bash which autoconf ];
+  mlPlugin = true;
+  useMelquiondRemake.logpath = "Flocq";
+
+  meta = {
     description = "A floating-point formalization for the Coq system";
     license = licenses.lgpl3;
     maintainers = with maintainers; [ jwiegley ];
-    platforms = coq.meta.platforms;
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.5" "8.6" "8.7" "8.8" "8.9" "8.10" "8.11" "8.12" ];
   };
 }
diff --git a/pkgs/development/coq-modules/gappalib/default.nix b/pkgs/development/coq-modules/gappalib/default.nix
index f6109398da8e..a835d53fdedb 100644
--- a/pkgs/development/coq-modules/gappalib/default.nix
+++ b/pkgs/development/coq-modules/gappalib/default.nix
@@ -1,30 +1,24 @@
-{ stdenv, fetchurl, which, coq, flocq }:
+{ which, lib, mkCoqDerivation, autoconf, coq, flocq, version ? null }:
 
-stdenv.mkDerivation {
-  name = "coq${coq.coq-version}-gappalib-1.4.4";
-  src = fetchurl {
-    url = "https://gforge.inria.fr/frs/download.php/file/38338/gappalib-coq-1.4.4.tar.gz";
-    sha256 = "1ds9qp3ml07w5ali0rsczlwgdx4xcgasgbcnpi2lssgj1xpxgfpn";
-  };
+with lib; mkCoqDerivation {
+  pname = "gappalib";
+  repo = "coq";
+  owner = "gappa";
+  domain = "gitlab.inria.fr";
+  inherit version;
+  defaultVersion = if versions.isGe "8.8" coq.coq-version then "1.4.5" else null;
+  release."1.4.5".sha256 = "081hib1d9wfm29kis390qsqch8v6fs3q71g2rgbbzx5y5cf48n9k";
+  release."1.4.4".sha256 = "114q2hgw64j6kqa9mg3qcp1nlf0ia46z2xadq81fnkxqm856ml7l";
+  releaseRev = v: "gappalib-coq-${v}";
 
-  nativeBuildInputs = [ which ];
-  buildInputs = [ coq coq.ocamlPackages.ocaml ];
+  nativeBuildInputs = [ which autoconf ];
+  mlPlugin = true;
   propagatedBuildInputs = [ flocq ];
-
-  configurePhase = "./configure --libdir=$out/lib/coq/${coq.coq-version}/user-contrib/Gappa";
-  buildPhase = "./remake";
-  installPhase = "./remake install";
+  useMelquiondRemake.logpath = "Gappa";
 
   meta = {
     description = "Coq support library for Gappa";
-    license = stdenv.lib.licenses.lgpl21;
-    homepage = "http://gappa.gforge.inria.fr/";
-    maintainers = [ stdenv.lib.maintainers.vbgl ];
-    inherit (coq.meta) platforms;
+    license = licenses.lgpl21;
+    maintainers = [ maintainers.vbgl ];
   };
-
-  passthru = {
-    compatibleCoqVersions = stdenv.lib.flip builtins.elem [ "8.8" "8.9" "8.10" "8.11" "8.12" ];
-  };
-
 }
diff --git a/pkgs/development/coq-modules/heq/default.nix b/pkgs/development/coq-modules/heq/default.nix
index d0445c83ca59..4bf9139b4947 100644
--- a/pkgs/development/coq-modules/heq/default.nix
+++ b/pkgs/development/coq-modules/heq/default.nix
@@ -1,30 +1,23 @@
-{stdenv, fetchurl, coq, unzip}:
-
-stdenv.mkDerivation rec {
-
-  name = "coq-heq-${coq.coq-version}-${version}";
-  version = "0.92";
-
-  src = fetchurl {
-    url = "https://www.mpi-sws.org/~gil/Heq/download/Heq-${version}.zip";
-    sha256 = "03y71c4qs6cmy3s2hjs05g7pcgk9sqma6flj15394yyxbvr9is1p";
-  };
-
-  buildInputs = with coq.ocamlPackages; [ ocaml camlp5 unzip ];
+{lib, fetchzip, mkCoqDerivation, coq, version ? null }:
+
+with lib; mkCoqDerivation {
+  pname = "heq";
+  repo = "Heq";
+  owner = "gil";
+  domain = "mpi-sws.org";
+  inherit version fetcher;
+  defaultVersion = if versions.isLt "8.8" coq.coq-version then "0.92" else null;
+  release."0.92".sha256 = "0cf8y6728n81wwlbpq3vi7l2dbzi7759klypld4gpsjjp1y1fj74";
+
+  mlPlugin = true;
   propagatedBuildInputs = [ coq ];
 
+  extraInstallFlags = [ "COQLIB=$out/lib/coq/${coq.coq-version}" ];
   preBuild = "cd src";
 
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}" ];
-
-  meta = with stdenv.lib; {
+  meta = {
     homepage = "https://www.mpi-sws.org/~gil/Heq/";
     description = "Heq : a Coq library for Heterogeneous Equality";
     maintainers = with maintainers; [ jwiegley ];
-    platforms = coq.meta.platforms;
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: !stdenv.lib.versionAtLeast v "8.8";
   };
 }
diff --git a/pkgs/development/coq-modules/hierarchy-builder/default.nix b/pkgs/development/coq-modules/hierarchy-builder/default.nix
index 9be8459ee9f0..530763c9439d 100644
--- a/pkgs/development/coq-modules/hierarchy-builder/default.nix
+++ b/pkgs/development/coq-modules/hierarchy-builder/default.nix
@@ -1,43 +1,24 @@
-{ stdenv, fetchFromGitHub, which, coq, coq-elpi }:
+{ lib, mkCoqDerivation, which, coq, coq-elpi, version ? null }:
 
-let
-  versions = {
-      "0.10.0" =  {
-        rev = "v0.10.0";
-        sha256 = "1a3vry9nzavrlrdlq3cys3f8kpq3bz447q8c4c7lh2qal61wb32h";
-      };
-  };
-  version = x: versions.${x} // {version = x;};
-  params = {
-   "8.11" = version "0.10.0";
-   "8.12" = version "0.10.0";
-  };
-  param = params.${coq.coq-version};
-in
-
-stdenv.mkDerivation rec {
-  name = "coq${coq.coq-version}-hierarchy-builder-${param.version}";
-
-  src = fetchFromGitHub {
-    owner = "math-comp";
-    repo = "hierarchy-builder";
-    inherit (param) rev sha256;
-  };
+with lib; mkCoqDerivation {
+  pname = "hierarchy-builder";
+  owner = "math-comp";
+  inherit version;
+  defaultVersion = with versions; switch coq.coq-version [
+    { case = isGe "8.12";         out = "1.0.0"; }
+    { case = range "8.11" "8.12"; out = "0.10.0"; }
+  ] null;
+  release."1.0.0".sha256  = "0yykygs0z6fby6vkiaiv3azy1i9yx4rqg8xdlgkwnf2284hffzpp";
+  release."0.10.0".sha256 = "1a3vry9nzavrlrdlq3cys3f8kpq3bz447q8c4c7lh2qal61wb32h";
+  releaseRev = v: "v${v}";
 
   propagatedBuildInputs = [ coq-elpi ];
-  buildInputs = [ coq coq.ocaml coq.ocamlPackages.elpi ];
 
-  installPhase = ''make -f Makefile.coq VFILES=structures.v COQLIB=$out/lib/coq/${coq.coq-version}/ install'';
+  extraInstallFlags = [ "VFILES=structures.v" ];
 
   meta = {
     description = "Coq plugin embedding ELPI.";
-    maintainers = [ stdenv.lib.maintainers.cohencyril ];
-    license = stdenv.lib.licenses.lgpl21;
-    inherit (coq.meta) platforms;
-    inherit (src.meta) homepage;
-  };
-
-  passthru = {
-    compatibleCoqVersions = stdenv.lib.flip builtins.hasAttr params;
+    maintainers = [ maintainers.cohencyril ];
+    license = licenses.lgpl21;
   };
 }
diff --git a/pkgs/development/coq-modules/interval/default.nix b/pkgs/development/coq-modules/interval/default.nix
index e72fe7845c84..8671eba67241 100644
--- a/pkgs/development/coq-modules/interval/default.nix
+++ b/pkgs/development/coq-modules/interval/default.nix
@@ -1,62 +1,31 @@
-{ stdenv, fetchurl, which, coq, coquelicot, flocq, mathcomp
-, bignums ? null }:
-
-let params =
-  let
-  v3_3 = {
-    version = "3.3.0";
-    uid = "37077";
-    sha256 = "08fdcf3hbwqphglvwprvqzgkg0qbimpyhnqsgv3gac4y1ap0f903";
-  };
-  v3_4 = {
-    version = "3.4.2";
-    uid = "38288";
-    sha256 = "00bgzbji0gkazwxhs4q8gz4ccqsa1y1r0m0ravr18ps2h8a8qva5";
-  };
-  v4_0 = {
-    version = "4.0.0";
-    uid = "38339";
-    sha256 = "19sbrv7jnzyxji7irfslhr9ralc0q3gx20nymig5vqbn3vssmgpz";
-  };
-  in {
-    "8.5" = v3_3;
-    "8.6" = v3_3;
-    "8.7" = v3_4;
-    "8.8" = v4_0;
-    "8.9" = v4_0;
-    "8.10" = v4_0;
-    "8.11" = v4_0;
-    "8.12" = v4_0;
-  };
-  param = params."${coq.coq-version}";
-in
-
-stdenv.mkDerivation {
-  name = "coq${coq.coq-version}-interval-${param.version}";
-
-  src = fetchurl {
-    url = "https://gforge.inria.fr/frs/download.php/file/${param.uid}/interval-${param.version}.tar.gz";
-    inherit (param) sha256;
-  };
-
-  nativeBuildInputs = [ which ];
-  buildInputs = [ coq ];
+{ lib, mkCoqDerivation, which, autoconf
+, coq, coquelicot, flocq, mathcomp
+, bignums ? null, version ? null }:
+
+with lib; mkCoqDerivation {
+  pname = "interval";
+  owner = "coqinterval";
+  domain = "gitlab.inria.fr";
+  inherit version;
+  defaultVersion = with versions; switch coq.coq-version [
+    { case = isGe "8.8" ;        out = "4.1.0"; }
+    { case = range "8.8" "8.12"; out = "4.0.0"; }
+    { case = range "8.7" "8.11"; out = "3.4.2"; }
+    { case = range "8.5" "8.6";  out = "3.3.0"; }
+  ] null;
+  release."4.1.0".sha256 = "1jv27n5c4f3a9d8sizraa920iqi35x8cik8lm7pjp1dkiifz47nb";
+  release."4.0.0".sha256 = "1hhih6zmid610l6c8z3x4yzdzw9jniyjiknd1vpkyb2rxvqm3gzp";
+  release."3.4.2".sha256 = "07ngix32qarl3pjnm9d0vqc9fdrgm08gy7zp306hwxjyq7h1v7z0";
+  release."3.3.0".sha256 = "0lz2hgggzn4cvklvm8rpaxvwaryf37i8mzqajqgdxdbd8f12acsz";
+  releaseRev = v: "interval-${v}";
+
+  nativeBuildInputs = [ which autoconf ];
   propagatedBuildInputs = [ bignums coquelicot flocq ];
+  useMelquiondRemake.logpath = "Interval";
 
-  configurePhase = "./configure --libdir=$out/lib/coq/${coq.coq-version}/user-contrib/Interval";
-  buildPhase = "./remake";
-  installPhase = "./remake install";
-
-  meta = with stdenv.lib; {
-    homepage = "http://coq-interval.gforge.inria.fr/";
+  meta = with lib; {
     description = "Tactics for simplifying the proofs of inequalities on expressions of real numbers for the Coq proof assistant";
     license = licenses.cecill-c;
     maintainers = with maintainers; [ vbgl ];
-    platforms = coq.meta.platforms;
   };
-
-  passthru = {
-    compatibleCoqVersions = stdenv.lib.flip builtins.hasAttr params;
-  };
-
 }
diff --git a/pkgs/development/coq-modules/iris/default.nix b/pkgs/development/coq-modules/iris/default.nix
index 6826e07d613e..b46383fa1679 100644
--- a/pkgs/development/coq-modules/iris/default.nix
+++ b/pkgs/development/coq-modules/iris/default.nix
@@ -1,33 +1,19 @@
-{ stdenv, fetchFromGitLab, coq, stdpp }:
+{ lib, mkCoqDerivation, coq, stdpp, version ? null }:
 
-stdenv.mkDerivation rec {
-  version = "3.3.0";
-  name = "coq${coq.coq-version}-iris-${version}";
-  src = fetchFromGitLab {
-    domain = "gitlab.mpi-sws.org";
-    owner = "iris";
-    repo = "iris";
-    rev = "iris-${version}";
-    sha256 = "0az4gkp5m8sq0p73dlh0r7ckkzhk7zkg5bndw01bdsy5ywj0vilp";
-  };
+with lib; mkCoqDerivation rec {
+  pname = "iris";
+  domain = "gitlab.mpi-sws.org";
+  owner = "iris";
+  inherit version;
+  defaultVersion = if versions.range "8.9" "8.12" coq.coq-version then "3.3.0" else null;
+  release."3.3.0".sha256 = "0az4gkp5m8sq0p73dlh0r7ckkzhk7zkg5bndw01bdsy5ywj0vilp";
+  releaseRev = v: "iris-${v}";
 
-  buildInputs = [ coq ];
   propagatedBuildInputs = [ stdpp ];
 
-  enableParallelBuilding = true;
-
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
-
   meta = {
-    homepage = "https://gitlab.mpi-sws.org/FP/iris-coq";
     description = "The Coq development of the Iris Project";
-    inherit (coq.meta) platforms;
-    license = stdenv.lib.licenses.bsd3;
-    maintainers = [ stdenv.lib.maintainers.vbgl ];
+    license = licenses.bsd3;
+    maintainers = [ maintainers.vbgl ];
   };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.9" "8.10" "8.11" "8.12" ];
-  };
-
 }
diff --git a/pkgs/development/coq-modules/ltac2/default.nix b/pkgs/development/coq-modules/ltac2/default.nix
index 92484f169c15..1d0d03fb7f7c 100644
--- a/pkgs/development/coq-modules/ltac2/default.nix
+++ b/pkgs/development/coq-modules/ltac2/default.nix
@@ -1,57 +1,28 @@
-{ stdenv, fetchFromGitHub, which, coq }:
+{ lib, mkCoqDerivation, which, coq, version ? null }:
 
-let params = {
-  "8.7" = {
-    version = "0.1";
-    rev = "v0.1-8.7";
-    sha256 = "0l6wiwi4cvd0i324fb29i9mdh0ijlxzggw4mrjjy695l2qdnlgg0";
-  };
-  "8.8" = {
-    version = "0.1";
-    rev = "0.1";
-    sha256 = "1zz26cyv99whj7rrpgnhhm9dfqnpmrx5pqizn8ihf8jkq8d4drz7";
-  };
-  "8.9" = rec {
-    version = "0.2";
-    rev = version;
-    sha256 = "0xby1kb26r9gcvk5511wqj05fqm9paynwfxlfqkmwkgnfmzk0x73";
-  };
-  "8.10" = rec {
-    version = "0.3";
-    rev = version;
-    sha256 = "0pzs5nsakh4l8ffwgn4ryxbnxdv2x0r1i7bc598ij621haxdirrr";
-  };
-};
-  param = params.${coq.coq-version};
-in
-
-stdenv.mkDerivation rec {
-  inherit (param) version;
-  name = "coq${coq.coq-version}-ltac2-${version}";
-
-  src = fetchFromGitHub {
-    owner = "coq";
-    repo = "ltac2";
-    inherit (param) rev sha256;
-  };
+with lib; mkCoqDerivation {
+  pname = "ltac2";
+  owner = "coq";
+  inherit version;
+  defaultVersion = with versions; switch coq.coq-version [
+    { case = "8.10"; out = "0.3"; }
+    { case = "8.9";  out = "0.2"; }
+    { case = "8.8";  out = "0.1"; }
+    { case = "8.7";  out = "0.1-8.7"; }
+  ] null;
+  release."0.3".sha256 = "0pzs5nsakh4l8ffwgn4ryxbnxdv2x0r1i7bc598ij621haxdirrr";
+  release."0.2".sha256 = "0xby1kb26r9gcvk5511wqj05fqm9paynwfxlfqkmwkgnfmzk0x73";
+  release."0.1".sha256 = "1zz26cyv99whj7rrpgnhhm9dfqnpmrx5pqizn8ihf8jkq8d4drz7";
+  release."0.1-8.7".version = "0.1";
+  release."0.1-8.7".rev     = "v0.1-8.7";
+  release."0.1-8.7".sha256  = "0l6wiwi4cvd0i324fb29i9mdh0ijlxzggw4mrjjy695l2qdnlgg0";
 
   nativeBuildInputs = [ which ];
-  buildInputs = [ coq ] ++ (with coq.ocamlPackages; [ ocaml findlib ])
-  ++ stdenv.lib.optional (!stdenv.lib.versionAtLeast coq.coq-version "8.10")
-     coq.ocamlPackages.camlp5
-  ;
-
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
+  mlPlugin = true;
 
   meta = {
     description = "A robust and expressive tactic language for Coq";
-    maintainers = [ stdenv.lib.maintainers.vbgl ];
-    license = stdenv.lib.licenses.lgpl21;
-    inherit (coq.meta) platforms;
-    inherit (src.meta) homepage;
-  };
-
-  passthru = {
-    compatibleCoqVersions = stdenv.lib.flip builtins.hasAttr params;
+    maintainers = [ maintainers.vbgl ];
+    license = licenses.lgpl21;
   };
 }
diff --git a/pkgs/development/coq-modules/math-classes/default.nix b/pkgs/development/coq-modules/math-classes/default.nix
index 73e420b326d9..c6b0dab0e0a7 100644
--- a/pkgs/development/coq-modules/math-classes/default.nix
+++ b/pkgs/development/coq-modules/math-classes/default.nix
@@ -1,30 +1,17 @@
-{ stdenv, fetchFromGitHub, coq, bignums }:
+{ lib, mkCoqDerivation, coq, bignums, version ? null }:
 
-stdenv.mkDerivation rec {
+with lib; mkCoqDerivation {
 
-  name = "coq${coq.coq-version}-math-classes-${version}";
-  version = "8.11.0";
+  pname = "math-classes";
+  inherit version;
+  defaultVersion = if versions.range "8.6" "8.11" coq.coq-version then "8.11.0" else null;
+  release."8.11.0".sha256 = "1hjgncvm1m46lw6264w4dqsy8dbh74vhmzq52x0fba2yqlvy94sf";
 
-  src = fetchFromGitHub {
-    owner = "coq-community";
-    repo = "math-classes";
-    rev = version;
-    sha256 = "1hjgncvm1m46lw6264w4dqsy8dbh74vhmzq52x0fba2yqlvy94sf";
-  };
-
-  buildInputs = [ coq bignums ];
-  enableParallelBuilding = true;
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
+  extraBuildInputs = [ bignums ];
 
-  meta = with stdenv.lib; {
+  meta = {
     homepage = "https://math-classes.github.io";
     description = "A library of abstract interfaces for mathematical structures in Coq.";
     maintainers = with maintainers; [ siddharthist jwiegley ];
-    platforms = coq.meta.platforms;
   };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.6" "8.7" "8.8" "8.9" "8.10" "8.11" ];
-  };
-
 }
diff --git a/pkgs/development/coq-modules/mathcomp-analysis/default.nix b/pkgs/development/coq-modules/mathcomp-analysis/default.nix
new file mode 100644
index 000000000000..9304335260a9
--- /dev/null
+++ b/pkgs/development/coq-modules/mathcomp-analysis/default.nix
@@ -0,0 +1,27 @@
+{ coq, mkCoqDerivation, mathcomp, mathcomp-finmap, mathcomp-bigenough, mathcomp-real-closed,
+  lib, version ? null }:
+
+with lib; mkCoqDerivation {
+
+  namePrefix = [ "coq" "mathcomp" ];
+  pname = "analysis";
+  owner = "math-comp";
+
+  release."0.3.1".sha256 = "1iad288yvrjv8ahl9v18vfblgqb1l5z6ax644w49w9hwxs93f2k8";
+  release."0.2.3".sha256 = "0p9mr8g1qma6h10qf7014dv98ln90dfkwn76ynagpww7qap8s966";
+
+  inherit version;
+  defaultVersion = with versions; switch [ coq.version mathcomp.version ]  [
+      { cases = [ (range "8.10" "8.11") "1.11.0" ];             out = "0.3.1"; }
+      { cases = [ (range "8.8"  "8.11") (range "1.8" "1.10") ]; out = "0.2.3"; }
+    ] null;
+
+  propagatedBuildInputs =
+    [ mathcomp.ssreflect mathcomp.field
+      mathcomp-finmap mathcomp-bigenough mathcomp-real-closed ];
+
+  meta = {
+    description = "Analysis library compatible with Mathematical Components";
+    license = licenses.cecill-c;
+  };
+}
diff --git a/pkgs/development/coq-modules/mathcomp-bigenough/default.nix b/pkgs/development/coq-modules/mathcomp-bigenough/default.nix
new file mode 100644
index 000000000000..296bd738928f
--- /dev/null
+++ b/pkgs/development/coq-modules/mathcomp-bigenough/default.nix
@@ -0,0 +1,19 @@
+{ coq, mkCoqDerivation, mathcomp, lib, version ? null }:
+
+with lib; mkCoqDerivation {
+
+  namePrefix = [ "coq" "mathcomp" ];
+  pname = "bigenough";
+  owner = "math-comp";
+
+  release = { "1.0.0".sha256 = "10g0gp3hk7wri7lijkrqna263346wwf6a3hbd4qr9gn8hmsx70wg"; };
+  inherit version;
+  defaultVersion = "1.0.0";
+
+  propagatedBuildInputs = [ mathcomp.ssreflect ];
+
+  meta = {
+    description = "A small library to do epsilon - N reasonning";
+    license = licenses.cecill-b;
+  };
+}
diff --git a/pkgs/development/coq-modules/mathcomp-finmap/default.nix b/pkgs/development/coq-modules/mathcomp-finmap/default.nix
new file mode 100644
index 000000000000..c506d07e4574
--- /dev/null
+++ b/pkgs/development/coq-modules/mathcomp-finmap/default.nix
@@ -0,0 +1,36 @@
+{ coq, mkCoqDerivation, mathcomp, lib, version ? null }:
+
+with lib; mkCoqDerivation {
+
+  namePrefix = [ "coq" "mathcomp" ];
+  pname = "finmap";
+  owner = "math-comp";
+  inherit version;
+  defaultVersion = with versions; switch [ coq.version mathcomp.version ]  [
+      { cases = [ (isGe "8.10")          (range "1.11" "1.12") ]; out = "1.5.1"; }
+      { cases = [ (range "8.7" "8.11")   "1.11.0" ];              out = "1.5.0"; }
+      { cases = [ (isEq "8.11")          (range "1.8" "1.10") ];  out = "1.4.0+coq-8.11"; }
+      { cases = [ (range "8.7" "8.11.0") (range "1.8" "1.10") ];  out = "1.4.0"; }
+      { cases = [ (range "8.7" "8.11.0") (range "1.8" "1.10") ];  out = "1.3.4"; }
+      { cases = [ (range "8.7" "8.9")    "1.7.0" ];               out = "1.1.0"; }
+      { cases = [ (range "8.6" "8.7")    (range "1.6.1" "1.7") ]; out = "1.0.0"; }
+    ] null;
+  release = {
+    "1.5.1".sha256          = "0ryfml4pf1dfya16d8ma80favasmrygvspvb923n06kfw9v986j7";
+    "1.5.0".sha256          = "0vx9n1fi23592b3hv5p5ycy7mxc8qh1y5q05aksfwbzkk5zjkwnq";
+    "1.4.1".sha256          = "0kx4nx24dml1igk0w0qijmw221r5bgxhwhl5qicnxp7ab3c35s8p";
+    "1.4.0+coq-8.11".sha256 = "1fd00ihyx0kzq5fblh9vr8s5mr1kg7p6pk11c4gr8svl1n69ppmb";
+    "1.4.0".sha256          = "0mp82mcmrs424ff1vj3cvd8353r9vcap027h3p0iprr1vkkwjbzd";
+    "1.3.4".sha256          = "0f5a62ljhixy5d7gsnwd66gf054l26k3m79fb8nz40i2mgp6l9ii";
+    "1.2.1".sha256          = "0jryb5dq8js3imbmwrxignlk5zh8gwfb1wr4b1s7jbwz410vp7zf";
+    "1.1.0".sha256          = "05df59v3na8jhpsfp7hq3niam6asgcaipg2wngnzxzqnl86srp2a";
+    "1.0.0".sha256          = "0sah7k9qm8sw17cgd02f0x84hki8vj8kdz7h15i7rmz08rj0whpa";
+  };
+
+  propagatedBuildInputs = [ mathcomp.ssreflect ];
+
+  meta = {
+    description = "A finset and finmap library";
+    license = licenses.cecill-b;
+  };
+}
diff --git a/pkgs/development/coq-modules/mathcomp-real-closed/default.nix b/pkgs/development/coq-modules/mathcomp-real-closed/default.nix
new file mode 100644
index 000000000000..dbd1550c6a7a
--- /dev/null
+++ b/pkgs/development/coq-modules/mathcomp-real-closed/default.nix
@@ -0,0 +1,33 @@
+{ coq, mkCoqDerivation, mathcomp, mathcomp-bigenough,
+  lib, version ? null }:
+
+with lib; mkCoqDerivation {
+
+  namePrefix = [ "coq" "mathcomp" ];
+  pname = "real-closed";
+  owner = "math-comp";
+  inherit version;
+  release = {
+    "1.1.2".sha256 = "0907x4nf7nnvn764q3x9lx41g74rilvq5cki5ziwgpsdgb98pppn";
+    "1.1.1".sha256 = "0ksjscrgq1i79vys4zrmgvzy2y4ylxa8wdsf4kih63apw6v5ws6b";
+    "1.0.5".sha256 = "0q8nkxr9fba4naylr5xk7hfxsqzq2pvwlg1j0xxlhlgr3fmlavg2";
+    "1.0.4".sha256 = "058v9dj973h9kfhqmvcy9a6xhhxzljr90cf99hdfcdx68fi2ha1b";
+    "1.0.3".sha256 = "1xbzkzqgw5p42dx1liy6wy8lzdk39zwd6j14fwvv5735k660z7yb";
+    "1.0.1".sha256 = "0j81gkjbza5vg89v4n9z598mfdbql416963rj4b8fzm7dp2r4rxg";
+  };
+
+  defaultVersion = with versions; switch [ coq.version mathcomp.version ]  [
+      { cases = [ (isGe "8.10")  "1.12.0" ]; out = "1.1.2"; }
+      { cases = [ (isGe "8.7")   "1.11.0" ]; out = "1.1.1"; }
+      { cases = [ (isGe "8.7")   (range "1.9.0" "1.10.0") ]; out = "1.0.4"; }
+      { cases = [ (isGe "8.7")   "1.8.0"  ]; out = "1.0.3"; }
+      { cases = [ (isGe "8.7")   "1.7.0"  ]; out = "1.0.1"; }
+    ] null;
+
+  propagatedBuildInputs = [ mathcomp.ssreflect mathcomp.field mathcomp-bigenough ];
+
+  meta = {
+    description = "Mathematical Components Library on real closed fields";
+    license = licenses.cecill-c;
+  };
+}
diff --git a/pkgs/development/coq-modules/mathcomp/default.nix b/pkgs/development/coq-modules/mathcomp/default.nix
index 542fac861c58..5b3501516e15 100644
--- a/pkgs/development/coq-modules/mathcomp/default.nix
+++ b/pkgs/development/coq-modules/mathcomp/default.nix
@@ -1,265 +1,93 @@
-#############################
-# Main derivation: mathcomp #
-########################################################################
-# This file mainly provides the `mathcomp` derivation, which is        #
-# essentially a meta-package containing all core mathcomp libraries    #
-# (ssreflect fingroup algebra solvable field character). They can be   #
-# accessed individually through the paththrough attributes of mathcomp #
-# bearing the same names (mathcomp.ssreflect, etc).                    #
-#                                                                      #
-# Do not use overrideAttrs, but overrideMathcomp instead, which        #
-# regenerate a full mathcomp derivation with sub-derivations, and      #
-# behave the same as `mathcomp_`, described below.                     #
-########################################################################
-
-############################################################
-# Compiling a custom version of mathcomp using `mathcomp_` #
-##############################################################################
-# The prefered way to compile a custom version of mathcomp (other than a     #
-# released version which should be added to `mathcomp-config-initial`        #
-# and pushed to nixpkgs), is to apply the function `coqPackages.mathcomp_`   #
-# to either:                                                                 #
-# - a string without slash, which is interpreted as a github revision,       #
-#   i.e. either a tag, a branch or a commit hash                             #
-# - a string with slashes "owner/p_1/.../p_n", which is interpreted as       #
-#   github owner "owner" and revision "p_1/.../p_n".                         #
-# - a path which is interpreted as a local source for the repository,        #
-#   the name of the version is taken to be the basename of the path          #
-#   i.e. if the path is /home/you/git/package/branch/,                       #
-#        then "branch" is the name of the version                            #
-# - an attribute set which overrides some attributes (e.g. the src)          #
-#   if the version is updated, the name is automatically regenerated using   #
-#   the conventional schema "coq${coq.coq-version}-${pkgname}-${version}"    #
-# - a "standard" override function (old: new_attrs) to override the default  #
-#   attribute set, so that you can use old.${field} to patch the derivation. #
-##############################################################################
-
-#########################################################################
-# Example of use: https://github.com/math-comp/math-comp/wiki/Using-nix #
-#########################################################################
-
-#################################
-# Adding a new mathcomp version #
-#############################################################################
-# When adding a new version of mathcomp, add an attribute to `sha256` (use  #
-# ```sh                                                                     #
-# nix-prefetch-url --unpack                                                 #
-# https://github.com/math-comp/math-comp/archive/version.tar.gz             #
-# ```                                                                       #
-# to get the corresponding `sha256`) and to `coq-version` (read the release #
-# notes to check which versions of coq it is compatible with). Then add     #
-# it in `preference version`, if not all mathcomp-extra packages are        #
-# ready, you might want to give new release secondary priority.             #
-#############################################################################
-
-
-{ stdenv, fetchFromGitHub, ncurses, which, graphviz,
-  recurseIntoAttrs, withDoc ? false,
-  coqPackages,
-  mathcomp_, mathcomp, mathcomp-config,
-}:
-with builtins // stdenv.lib;
+############################################################################
+# This file mainly provides the `mathcomp` derivation, which is            #
+# essentially a meta-package containing all core mathcomp libraries        #
+# (ssreflect fingroup algebra solvable field character). They can be       #
+# accessed individually through the passthrough attributes of mathcomp     #
+# bearing the same names (mathcomp.ssreflect, etc).                        #
+############################################################################
+# Compiling a custom version of mathcomp using `mathcomp.override`.        #
+# This is the replacement for the former `mathcomp_ config` function.      #
+# See the documentation at doc/languages-frameworks/coq.section.md.        #
+############################################################################
+
+{ lib, ncurses, which, graphviz, lua,
+  mkCoqDerivation, recurseIntoAttrs, withDoc ? false, single ? false,
+  coqPackages, coq, ocamlPackages, version ? null }@args:
+with builtins // lib;
 let
-  mathcomp-config-initial = rec {
-  #######################################################################
-  # CONFIGURATION (please edit this), it is exported as mathcomp-config #
-  #######################################################################
-    # sha256 of released mathcomp versions
-    sha256 = {
-      "1.12.0"       = "1ccfny1vwgmdl91kz5xlmhq4wz078xm4z5wpd0jy5rn890dx03wp";
-      "1.11.0"       = "06a71d196wd5k4wg7khwqb7j7ifr7garhwkd54s86i0j7d6nhl3c";
-      "1.11+beta1"   = "12i3zznwajlihzpqsiqniv20rklj8d8401lhd241xy4s21fxkkjm";
-      "1.10.0"       = "1b9m6pwxxyivw7rgx82gn5kmgv2mfv3h3y0mmjcjfypi8ydkrlbv";
-      "1.9.0"        = "0lid9zaazdi3d38l8042lczb02pw5m9wq0yysiilx891hgq2p81r";
-      "1.8.0"        = "07l40is389ih8bi525gpqs3qp4yb2kl11r9c8ynk1ifpjzpnabwp";
-      "1.7.0"        = "0wnhj9nqpx2bw6n1l4i8jgrw3pjajvckvj3lr4vzjb3my2lbxdd1";
-      "1.6.1"        = "1ilw6vm4dlsdv9cd7kmf0vfrh2kkzr45wrqr8m37miy0byzr4p9i";
-    };
-    # versions of coq compatible with released mathcomp versions
-    coq-versions     = {
-      "1.12.0"       = flip elem [ "8.13" ];
-      "1.11.0"       = flip elem [ "8.7" "8.8" "8.9" "8.10" "8.11" "8.12" ];
-      "1.11+beta1"   = flip elem [ "8.7" "8.8" "8.9" "8.10" "8.11" "8.12" ];
-      "1.10.0"       = flip elem [ "8.7" "8.8" "8.9" "8.10" "8.11" ];
-      "1.9.0"        = flip elem [ "8.7" "8.8" "8.9" "8.10" ];
-      "1.8.0"        = flip elem [ "8.7" "8.8" "8.9" ];
-      "1.7.0"        = flip elem [ "8.6" "8.7" "8.8" "8.9" ];
-      "1.6.1"        = flip elem [ "8.5"];
-    };
-
-    # sets the default version of mathcomp given a version of Coq
-    # this is currently computed using version-perference below
-    # but it can be set to a fixed version number
-    preferred-version = let v = head (
-      filter (mc: mathcomp-config.coq-versions.${mc} coq.coq-version)
-        mathcomp-config.version-preferences ++ ["0.0.0"]);
-     in if v == "0.0.0" then head mathcomp-config.version-preferences else v;
-
-    # mathcomp preferred versions by decreasing order
-    # (the first version in the list will be tried first)
-    version-preferences =
-      [ "1.12.0" "1.10.0" "1.11.0" "1.9.0" "1.8.0" "1.7.0" "1.6.1" ];
-
-    # list of core mathcomp packages sorted by dependency order
-    packages = _version: # unused in current versions of mathcomp
-      # because the following list of packages is fixed for
-      # all versions of mathcomp up to 1.11.0
-      [ "ssreflect" "fingroup" "algebra" "solvable" "field" "character" "all" ];
-
-    # compute the dependencies of the core package pkg
-    # (assuming the total ordering above, change if necessary)
-    deps = version: pkg: if pkg == "single" then [] else
-      (pred-split-list (x: x == pkg) (mathcomp-config.packages version)).left;
+  repo  = "math-comp";
+  owner = "math-comp";
+  withDoc = single && (args.withDoc or false);
+  defaultVersion = with versions; switch coq.coq-version [
+      { case = isGe  "8.13";        out = "1.12.0"; } # lower version of coq to 8.10 when all mathcomp packages are ported
+      { case = range "8.7"  "8.12"; out = "1.11.0"; }
+      { case = range "8.7" "8.11";  out = "1.10.0"; }
+      { case = range "8.7" "8.11";  out = "1.9.0";  }
+      { case = range "8.7" "8.9";   out = "1.8.0";  }
+      { case = range "8.6" "8.9";   out = "1.7.0";  }
+      { case = range "8.5" "8.7";   out = "1.6.4";  }
+    ] null;
+  release = {
+    "1.12.0".sha256 = "1ccfny1vwgmdl91kz5xlmhq4wz078xm4z5wpd0jy5rn890dx03wp";
+    "1.11.0".sha256 = "06a71d196wd5k4wg7khwqb7j7ifr7garhwkd54s86i0j7d6nhl3c";
+    "1.10.0".sha256 = "1b9m6pwxxyivw7rgx82gn5kmgv2mfv3h3y0mmjcjfypi8ydkrlbv";
+    "1.9.0".sha256  = "0lid9zaazdi3d38l8042lczb02pw5m9wq0yysiilx891hgq2p81r";
+    "1.8.0".sha256  = "07l40is389ih8bi525gpqs3qp4yb2kl11r9c8ynk1ifpjzpnabwp";
+    "1.7.0".sha256  = "0wnhj9nqpx2bw6n1l4i8jgrw3pjajvckvj3lr4vzjb3my2lbxdd1";
+    "1.6.4".sha256  = "09ww48qbjsvpjmy1g9yhm0rrkq800ffq21p6fjkbwd34qvd82raz";
+    "1.6.1".sha256  = "1ilw6vm4dlsdv9cd7kmf0vfrh2kkzr45wrqr8m37miy0byzr4p9i";
   };
+  releaseRev = v: "mathcomp-${v}";
 
-  ##############################################################
-  # COMPUTED using the configuration above (edit with caution) #
-  ##############################################################
+  # list of core mathcomp packages sorted by dependency order
+  packages = [ "ssreflect" "fingroup" "algebra" "solvable" "field" "character" "all" ];
 
-  # generic split function (TODO: move to lib?)
-  pred-split-list = pred: l:
-    let loop = v: l: if l == [] then {left = v; right = [];}
-      else let hd = builtins.head l; tl = builtins.tail l; in
-      if pred hd then {left = v; right = tl;} else loop (v ++ [hd]) tl;
-    in loop [] l;
-
-  pkgUp = l: r: l // r // {
-    meta     = (l.meta or {}) // (r.meta or {});
-    passthru = (l.passthru or {}) // (r.passthru or {});
-  };
-
-  coq = coqPackages.coq;
-  mathcomp-deps = mathcomp-config.deps mathcomp.config.preferred-version;
-
-  # default set of attributes given a 'package' name.
-  # this attribute set will be extended using toOverrideFun
-  default-attrs = package:
-    let
+  mathcomp_ = package: let
+      mathcomp-deps = if package == "single" then []
+        else map mathcomp_ (head (splitList (pred.equal package) packages));
       pkgpath = if package == "single" then "mathcomp" else "mathcomp/${package}";
-      pkgname = if package == "single" then "mathcomp" else "mathcomp-${package}";
+      pname = if package == "single" then "mathcomp" else "mathcomp-${package}";
       pkgallMake = ''
         echo "all.v"  > Make
         echo "-I ." >>   Make
         echo "-R . mathcomp.all" >> Make
       '';
-    in
-      rec {
-        version = "master";
-        name = "coq${coq.coq-version}-${pkgname}-${version}";
+      derivation = mkCoqDerivation ({
+        inherit version pname defaultVersion release releaseRev repo owner;
 
-        nativeBuildInputs = optionals withDoc [ graphviz ];
-        buildInputs = [ ncurses which ] ++ (with coq.ocamlPackages; [ ocaml findlib camlp5 ]);
-        propagatedBuildInputs = [ coq ];
-        enableParallelBuilding = true;
+        nativeBuildInputs = optional withDoc graphviz;
+        mlPlugin = versions.isLe "8.6" coq.coq-version;
+        extraBuildInputs = [ ncurses which ] ++ optional withDoc lua;
+        propagatedBuildInputs = mathcomp-deps;
 
         buildFlags = optional withDoc "doc";
 
-        COQBIN = "${coq}/bin/";
-
         preBuild = ''
           patchShebangs etc/utils/ssrcoqdep || true
+        '' + ''
           cd ${pkgpath}
         '' + optionalString (package == "all") pkgallMake;
 
-        installPhase = ''
-          make -f Makefile.coq COQLIB=$out/lib/coq/${coq.coq-version}/ install
-        '' + optionalString withDoc ''
-          make -f Makefile.coq install-doc DOCDIR=$out/share/coq/${coq.coq-version}/
-        '';
+        installTargets = "install" + optionalString withDoc " doc";
 
-        meta = with stdenv.lib; {
+        meta = {
           homepage    = "https://math-comp.github.io/";
           license     = licenses.cecill-b;
-          maintainers = [ maintainers.vbgl maintainers.jwiegley maintainers.cohencyril ];
-          platforms   = coq.meta.platforms;
-        };
-
-        passthru = {
-          mathcompDeps = mathcomp-deps package;
-          inherit package mathcomp-config;
-          compatibleCoqVersions = _: true;
-        };
-      };
-
-  # converts a string, path or attribute set into an override function
-  toOverrideFun = overrides:
-    if isFunction overrides then overrides else old:
-      let
-          pkgname = if old.passthru.package == "single" then "mathcomp"
-                    else "mathcomp-${old.passthru.package}";
-
-          string-attrs = if hasAttr overrides mathcomp-config.sha256 then
-                let version = overrides;
-                in {
-                  inherit version;
-                  src = fetchFromGitHub {
-                    owner  = "math-comp";
-                    repo   = "math-comp";
-                    rev    = "mathcomp-${version}";
-                    sha256 = mathcomp-config.sha256.${version};
-                  };
-                  passthru = old.passthru // {
-                    compatibleCoqVersions = mathcomp-config.coq-versions.${version};
-                    mathcompDeps = mathcomp-config.deps version old.passthru.package;
-                  };
-                }
-              else
-                let splitted = filter isString (split "/" overrides);
-                    owner    = head splitted;
-                    ref      = concatStringsSep "/" (tail splitted);
-                    version  = head (reverseList splitted);
-                in if length splitted == 1 then {
-                  inherit version;
-                  src = fetchTarball "https://github.com/math-comp/math-comp/archive/${version}.tar.gz";
-                } else {
-                  inherit version;
-                  src = fetchTarball "https://github.com/${owner}/math-comp/archive/${ref}.tar.gz";
-                };
-
-          attrs =
-            if overrides == null || overrides == "" then _: {}
-            else  if isString overrides then string-attrs
-            else  if isPath overrides then { version = baseNameOf overrides; src = overrides; }
-            else  if isAttrs overrides then pkgUp old overrides
-            else  let overridesStr = toString overrides; in
-                  abort "${overridesStr} not a legitimate overrides";
-      in
-        attrs // (if attrs?version && ! (attrs?name)
-                  then { name = "coq${coq.coq-version}-${pkgname}-${attrs.version}"; } else {});
-
-  # generates {ssreflect = «derivation ...» ; ... ; character = «derivation ...», ...}
-  mkMathcompGenSet = pkgs: o:
-    fold (pkg: pkgs: pkgs // {${pkg} = mkMathcompGen pkg o;}) {} pkgs;
-  # generates the derivation of one mathcomp package.
-  mkMathcompGen = package: overrides:
-    let
-      up = x: o: x // (toOverrideFun o x);
-      fixdeps = attrs:
-        let version = attrs.version or "master";
-            mcdeps  = if package == "single" then {}
-                      else mkMathcompGenSet (filter isString attrs.passthru.mathcompDeps) overrides;
-            allmc   = mkMathcompGenSet (mathcomp-config.packages version ++ [ "single" ]) overrides;
-        in {
-          propagatedBuildInputs = [ coq ]
-                                  ++ filter isDerivation attrs.passthru.mathcompDeps
-                                  ++ attrValues mcdeps
-          ;
-          passthru = allmc //
-                     { overrideMathcomp = o: mathcomp_ (old: up (up old overrides) o); };
+          maintainers = with maintainers; [ vbgl jwiegley cohencyril ];
         };
-    in
-      stdenv.mkDerivation (up (up (default-attrs package) overrides) fixdeps);
+      } // optionalAttrs (package != "single") { passthru = genAttrs packages mathcomp_; });
+    patched-derivation1 = derivation.overrideAttrs (o:
+      optionalAttrs (o.pname != null && o.pname == "mathcomp-all" &&
+         o.version != null && o.version != "dev" && versions.isLt "1.7" o.version)
+      { preBuild = ""; buildPhase = ""; installPhase = "echo doing nothing"; }
+    );
+    patched-derivation = patched-derivation1.overrideAttrs (o:
+      optionalAttrs (versions.isLe "8.7" coq.coq-version ||
+            (o.version != "dev" && versions.isLe "1.7" o.version))
+      {
+        installFlags = o.installFlags ++ [ "-f Makefile.coq" ];
+      }
+    );
+    in patched-derivation;
 in
-{
-  mathcomp-config    = mathcomp-config-initial;
-  mathcomp_          = mkMathcompGen "all";
-  mathcomp           = mathcomp_ mathcomp-config.preferred-version;
-  # mathcomp-single    = mathcomp.single;
-  ssreflect          = mathcomp.ssreflect;
-  mathcomp-ssreflect = mathcomp.ssreflect;
-  mathcomp-fingroup  = mathcomp.fingroup;
-  mathcomp-algebra   = mathcomp.algebra;
-  mathcomp-solvable  = mathcomp.solvable;
-  mathcomp-field     = mathcomp.field;
-  mathcomp-character = mathcomp.character;
-}
+mathcomp_ (if single then "single" else "all")
diff --git a/pkgs/development/coq-modules/mathcomp/extra.nix b/pkgs/development/coq-modules/mathcomp/extra.nix
deleted file mode 100644
index 6a2dfcda3456..000000000000
--- a/pkgs/development/coq-modules/mathcomp/extra.nix
+++ /dev/null
@@ -1,391 +0,0 @@
-##########################################################
-# Main derivation:                                       #
-#   mathcomp-finmap mathcomp-analysis mathcomp-bigenough #
-#   mathcomp-multinomials mathcomp-real-closed coqeal    #
-# Additionally:                                          #
-#   mathcomp-extra-all  contains all the extra packages  #
-#   mathcomp-extra-fast contains the one not marked slow #
-########################################################################
-# This file mainly provides the above derivations, which are packages  #
-# extra mathcomp libraries based on mathcomp.                          #
-########################################################################
-
-#####################################################
-# Compiling customs versions using `mathcomp-extra` #
-##############################################################################
-# The prefered way to compile a custom version of mathcomp extra packages    #
-# (other than released versions which should be added to                     #
-# `rec-mathcomp-extra-config` and pushed to nixpkgs, see below),             #
-# is to use `coqPackages.mathcomp-extra name version` where                  #
-# 1. `name` is a string representing the name of a declared package          #
-#    OR undeclared package.                                                  #
-# 2. `version` is either:                                                    #
-# - a string without slash, which is interpreted as a github revision,       #
-#   i.e. either a tag, a branch or a commit hash                             #
-# - a string with slashes "owner/p_1/.../p_n", which is interpreted as       #
-#   github owner "owner" and revision "p_1/.../p_n".                         #
-# - a path which is interpreted as a local source for the repository,        #
-#   the name of the version is taken to be the basename of the path          #
-#   i.e. if the path is /home/you/git/package/branch/,                       #
-#        then "branch" is the name of the version                            #
-# - an attribute set which overrides some attributes (e.g. the src)          #
-#   if the version is updated, the name is automatically regenerated using   #
-#   the conventional schema "coq${coq.coq-version}-${pkgname}-${version}"    #
-# - a "standard" override function (old: new_attrs) to override the default  #
-#   attribute set, so that you can use old.${field} to patch the derivation. #
-#                                                                            #
-# Should you choose to use `pkg.overrideAttrs` instead, we provide the       #
-# function mathcomp-extra-override which takes a name and a version exactly  #
-# as above and returns an override function.                                 #
-##############################################################################
-
-#########################################################################
-# Example of use: https://github.com/math-comp/math-comp/wiki/Using-nix #
-#########################################################################
-
-###########################################
-# Adding a new package or package version #
-################################################################################
-# 1. Update or add a `package` entry to `initial`, it must be a function       #
-#    taking the version as argument and returning an attribute set. Everything #
-#    is optional and the default for the sources of the repository and the     #
-#    homepage will be https://github.com/math-comp/${package}.                 #
-#                                                                              #
-# 2. Update or add a `package` entry to `sha256` for each release.             #
-#    You may use                                                               #
-#    ```sh                                                                     #
-#    nix-prefetch-url --unpack                                                 #
-#    https://github.com/math-comp/math-comp/archive/version.tar.gz             #
-#    ```                                                                       #
-#                                                                              #
-# 3. Update or create a new consistent set of extra packages.                  #
-#    /!\ They must all be co-compatible. /!\                                   #
-#    Do not use versions that may disappear: it must either be                 #
-#    - a tag from the main repository (e.g. version or tag), or                #
-#    - a revision hash that has been *merged in master*                        #
-################################################################################
-
-{ stdenv, fetchFromGitHub, recurseIntoAttrs,
-  which, mathcomp, coqPackages,
-  mathcomp-extra-config, mathcomp-extra-override,
-  mathcomp-extra, current-mathcomp-extra,
-}:
-with builtins // stdenv.lib;
-let
-  ##############################
-  # CONFIGURATION, please edit #
-  ##############################
-  ############################
-  # Packages base delaration #
-  ############################
-  rec-mathcomp-extra-config = {
-    initial = {
-      mathcomp-finmap = {version, coqPackages}: {
-        meta = {
-          description = "A finset and finmap library";
-          repo = "finmap";
-          homepage = "https://github.com/math-comp/finmap";
-        };
-        passthru.compatibleCoqVersions = flip elem [ "8.8" "8.9" "8.10" "8.11" ];
-      };
-
-      mathcomp-bigenough = {version, coqPackages}: {
-        meta = {
-          description = "A small library to do epsilon - N reasonning";
-          repo = "bigenough";
-          homepage = "https://github.com/math-comp/bigenough";
-        };
-        passthru.compatibleCoqVersions = flip elem [ "8.7" "8.8" "8.9" "8.10" "8.11" ];
-      };
-
-      multinomials = {version, coqPackages}: {
-        buildInputs = [ which ];
-        propagatedBuildInputs = with coqPackages;
-          [ mathcomp.algebra mathcomp-finmap mathcomp-bigenough ];
-        meta = {
-          description = "A Coq/SSReflect Library for Monoidal Rings and Multinomials";
-          repo = "multinomials";
-          homepage = "https://github.com/math-comp/multinomials";
-        };
-        passthru.compatibleCoqVersions = flip elem [ "8.9" "8.10" "8.11" ];
-      };
-
-      mathcomp-analysis = {version, coqPackages}: {
-        propagatedBuildInputs = with coqPackages;
-          [ mathcomp.field mathcomp-finmap mathcomp-bigenough mathcomp-real-closed ];
-        meta = {
-          description = "Analysis library compatible with Mathematical Components";
-          homepage = "https://github.com/math-comp/analysis";
-          repo = "analysis";
-          license = stdenv.lib.licenses.cecill-c;
-        };
-        passthru.compatibleCoqVersions = flip elem ["8.8" "8.9" "8.10" "8.11" ];
-      };
-
-      mathcomp-real-closed = {version, coqPackages}: {
-        propagatedBuildInputs = with coqPackages;
-          [ mathcomp.field mathcomp-bigenough ];
-        meta = {
-          description = "Mathematical Components Library on real closed fields";
-          repo = "real-closed";
-          homepage = "https://github.com/math-comp/real-closed";
-        };
-        passthru.compatibleCoqVersions = flip elem ["8.8" "8.9" "8.10" "8.11" ];
-      };
-
-      coqeal = {version, coqPackages}: {
-        buildInputs = [ which ];
-        propagatedBuildInputs = with coqPackages;
-          [ mathcomp-algebra bignums paramcoq multinomials ];
-        meta = {
-          description = "CoqEAL - The Coq Effective Algebra Library";
-          homepage = "https://github.com/coqeal/coqeal";
-          license = stdenv.lib.licenses.mit;
-          owner = "CoqEAL";
-        };
-        passthru.compatibleCoqVersions = flip elem [ "8.9" "8.10" "8.11" ];
-      };
-    };
-
-    ###############################
-    # sha256 of released versions #
-    ###############################
-    sha256 = {
-      mathcomp-finmap = {
-        "1.5.0"          = "0vx9n1fi23592b3hv5p5ycy7mxc8qh1y5q05aksfwbzkk5zjkwnq";
-        "1.4.1"          = "0kx4nx24dml1igk0w0qijmw221r5bgxhwhl5qicnxp7ab3c35s8p";
-        "1.4.0+coq-8.11" = "1fd00ihyx0kzq5fblh9vr8s5mr1kg7p6pk11c4gr8svl1n69ppmb";
-        "1.4.0"          = "0mp82mcmrs424ff1vj3cvd8353r9vcap027h3p0iprr1vkkwjbzd";
-        "1.3.4"          = "0f5a62ljhixy5d7gsnwd66gf054l26k3m79fb8nz40i2mgp6l9ii";
-        "1.3.3"          = "1n844zjhv354kp4g4pfbajix0plqh7yxv6471sgyb46885298am5";
-        "1.3.1"          = "14rvm0rm5hd3pd0srgak3jqmddzfv6n7gdpjwhady5xcgrc7gsx7";
-        "1.2.1"          = "0jryb5dq8js3imbmwrxignlk5zh8gwfb1wr4b1s7jbwz410vp7zf";
-        "1.2.0"          = "0b6wrdr0d7rcnv86s37zm80540jl2wmiyf39ih7mw3dlwli2cyj4";
-        "1.1.0"          = "05df59v3na8jhpsfp7hq3niam6asgcaipg2wngnzxzqnl86srp2a";
-        "1.0.0"          = "0sah7k9qm8sw17cgd02f0x84hki8vj8kdz7h15i7rmz08rj0whpa";
-      };
-      mathcomp-bigenough = {
-        "1.0.0" = "10g0gp3hk7wri7lijkrqna263346wwf6a3hbd4qr9gn8hmsx70wg";
-      };
-      mathcomp-analysis = {
-        "0.3.1" = "1iad288yvrjv8ahl9v18vfblgqb1l5z6ax644w49w9hwxs93f2k8";
-        "0.3.0" = "03klwi4fja0cqb4myp3kgycfbmdv00bznmxf8yg3zzzzw997hjqc";
-        "0.2.3" = "0p9mr8g1qma6h10qf7014dv98ln90dfkwn76ynagpww7qap8s966";
-        "0.2.2" = "1d5dwg9di2ppdzfg21zr0a691zigb5kz0lcw263jpyli1nrq7cvk";
-        "0.2.0" = "1186xjxgns4ns1szyi931964bjm0mp126qzlv10mkqqgfw07nhrd";
-        "0.1.0" = "0hwkr2wzy710pcyh274fcarzdx8sv8myp16pv0vq5978nmih46al";
-      };
-      multinomials = {
-        "1.5.2" = "15aspf3jfykp1xgsxf8knqkxv8aav2p39c2fyirw7pwsfbsv2c4s";
-        "1.5.1" = "13nlfm2wqripaq671gakz5mn4r0xwm0646araxv0nh455p9ndjs3";
-        "1.5"   = "064rvc0x5g7y1a0nip6ic91vzmq52alf6in2bc2dmss6dmzv90hw";
-        "1.4"   = "0vnkirs8iqsv8s59yx1fvg1nkwnzydl42z3scya1xp1b48qkgn0p";
-        "1.3"   = "0l3vi5n094nx3qmy66hsv867fnqm196r8v605kpk24gl0aa57wh4";
-        "1.2"   = "1mh1w339dslgv4f810xr1b8v2w7rpx6fgk9pz96q0fyq49fw2xcq";
-        "1.1"   = "1q8alsm89wkc0lhcvxlyn0pd8rbl2nnxg81zyrabpz610qqjqc3s";
-        "1.0"   = "1qmbxp1h81cy3imh627pznmng0kvv37k4hrwi2faa101s6bcx55m";
-      };
-      mathcomp-real-closed = {
-        "1.1.1" = "0ksjscrgq1i79vys4zrmgvzy2y4ylxa8wdsf4kih63apw6v5ws6b";
-        "1.1.0" = "0zgfmrlximw77bw5w6w0xg2nampp02pmrwnrzx8m1n5pqljnv8fh";
-        "1.0.5" = "0q8nkxr9fba4naylr5xk7hfxsqzq2pvwlg1j0xxlhlgr3fmlavg2";
-        "1.0.4" = "058v9dj973h9kfhqmvcy9a6xhhxzljr90cf99hdfcdx68fi2ha1b";
-        "1.0.3" = "1xbzkzqgw5p42dx1liy6wy8lzdk39zwd6j14fwvv5735k660z7yb";
-        "1.0.2" = "0097pafwlmzd0gyfs31bxpi1ih04i72nxhn99r93aj20mn7mcsgl";
-        "1.0.1" = "0j81gkjbza5vg89v4n9z598mfdbql416963rj4b8fzm7dp2r4rxg";
-      };
-      coqeal = {
-        "1.0.4" = "1g5m26lr2lwxh6ld2gykailhay4d0ayql4bfh0aiwqpmmczmxipk";
-        "1.0.3" = "0hc63ny7phzbihy8l7wxjvn3haxx8jfnhi91iw8hkq8n29i23v24";
-        "1.0.2" = "1brmf3gj03iky1bcl3g9vx8vknny7xfvs0y2rfr85am0296sxsfj";
-        "1.0.1" = "19jhdrv2yp9ww0h8q73ihb2w1z3glz4waf2d2n45klafxckxi7bm";
-        "1.0.0" = "1had6f1n85lmh9x31avbmgl3m0rsiw9f8ma95qzk5b57fjg5k1ii";
-      };
-    };
-
-    ################################
-    # CONSISTENT sets of packages. #
-    ################################
-    for-coq-and-mc = let
-      v6 = {
-        mathcomp-finmap       = "1.5.0";
-        mathcomp-bigenough    = "1.0.0";
-        mathcomp-analysis     = "0.3.1";
-        multinomials          = "1.5.2";
-        mathcomp-real-closed  = "1.1.1";
-        coqeal                = "1.0.4";
-      };
-      v5 = {
-        mathcomp-finmap       = "1.5.0";
-        mathcomp-bigenough    = "1.0.0";
-        mathcomp-analysis     = "0.3.0";
-        multinomials          = "1.5.1";
-        mathcomp-real-closed  = "1.0.5";
-        coqeal                = "1.0.4";
-      };
-      v4 = v3 // { coqeal = "1.0.3"; };
-      v3 = {
-        mathcomp-finmap       = "1.4.0";
-        mathcomp-bigenough    = "1.0.0";
-        mathcomp-analysis     = "0.2.3";
-        multinomials          = "1.5";
-        mathcomp-real-closed  = "1.0.4";
-        coqeal                = "1.0.0";
-      };
-      v2 = {
-        mathcomp-finmap       = "1.3.4";
-        mathcomp-bigenough    = "1.0.0";
-        mathcomp-analysis     = "0.2.3";
-        multinomials          = "1.4";
-        mathcomp-real-closed  = "1.0.3";
-        coqeal                = "1.0.0";
-      };
-      v1 = {
-        mathcomp-finmap       = "1.1.0";
-        mathcomp-bigenough    = "1.0.0";
-        multinomials          = "1.1";
-        mathcomp-real-closed  = "1.0.1";
-        coqeal                = "1.0.0";
-      };
-    in
-      {
-        "8.11" = {
-          "1.11.0"     = v6;
-          "1.11+beta1" = v5;
-          "1.10.0"       = v4 // {mathcomp-finmap = "1.4.0+coq-8.11";};
-        };
-        "8.10" = {
-          "1.11.0"       = removeAttrs v6 ["coqeal"];
-          "1.11+beta1"   = removeAttrs v5 ["coqeal"];
-          "1.10.0"       = v4;
-          "1.9.0"        = removeAttrs v3 ["coqeal"];
-        };
-        "8.9" = {
-          "1.11.0"       = removeAttrs v6 ["mathcomp-analysis"];
-          "1.11+beta1"   = removeAttrs v5 ["mathcomp-analysis"];
-          "1.10.0"       = v4;
-          "1.9.0"        = removeAttrs v3 ["coqeal"];
-          "1.8.0"        = removeAttrs v2 ["coqeal"];
-        };
-        "8.8" = {
-          "1.11.0"       = removeAttrs v6 ["mathcomp-analysis"];
-          "1.11+beta1"   = removeAttrs v5 ["mathcomp-analysis"];
-          "1.10.0"       = removeAttrs v4 ["mathcomp-analysis"];
-          "1.9.0"        = removeAttrs v3 ["coqeal"];
-          "1.8.0"        = removeAttrs v2 ["coqeal"];
-          "1.7.0"        = removeAttrs v1 ["coqeal" "multinomials"];
-        };
-        "8.7" = {
-          "1.11.0"       = removeAttrs v6 ["mathcomp-analysis"];
-          "1.11+beta1"   = removeAttrs v5 ["mathcomp-analysis"];
-          "1.10.0"       = removeAttrs v4 ["mathcomp-analysis"];
-          "1.9.0"        = removeAttrs v3 ["coqeal" "mathcomp-analysis"];
-          "1.8.0"        = removeAttrs v2 ["coqeal" "mathcomp-analysis"];
-          "1.7.0"        = removeAttrs v1 ["coqeal" "multinomials"];
-        };
-      };
-  };
-
-  ##############################
-  # GENERATION, EDIT WITH CARE #
-  ##############################
-  coq = coqPackages.coq;
-
-  default-attrs = {
-    version = "master";
-    buildInputs = [];
-    propagatedBuildInputs = (with coqPackages; [ ssreflect ]);
-    installFlags = [ "-f" "Makefile.coq" "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
-    meta = {
-      inherit (mathcomp.meta) platforms license;
-      owner = "math-comp";
-      maintainers = [ maintainers.vbgl maintainers.cohencyril ];
-    };
-    passthru.compatibleCoqVersions = (_: true);
-  };
-
-  pkgUp = recursiveUpdateUntil (path: l: r: !(isAttrs l && isAttrs r) || path == ["src"]);
-
-  # Fixes a partial attribute set using the configuration
-  # in the style of the above mathcomp-extra-config.initial,
-  # and generates a name according to the conventional naming scheme below
-  fix-attrs = pkgcfg:
-    let attrs = pkgUp default-attrs pkgcfg; in
-    pkgUp attrs (rec {
-      name = "coq${coq.coq-version}mathcomp${mathcomp.version}-${attrs.meta.repo or attrs.meta.package or "anonymous"}-${attrs.version}";
-      src = attrs.src or (fetchTarball "${meta.homepage}/archive/${attrs.version}.tar.gz");
-      meta = rec {
-        homepage = attrs.meta.homepage or attrs.src.meta.homepage or "https://github.com/${owner}/${repo}";
-        owner    = attrs.meta.owner or "math-comp";
-        repo     = attrs.meta.repo or attrs.meta.package or "math-comp-nix";
-      };
-    });
-
-  # Gets a version out of a string, path or attribute set.
-  getVersion = arg:
-    if isFunction arg then (arg {}).version
-    else  if arg == "" then "master"
-    else  if isDerivation arg then arg.drvAttrs.version or "master"
-    else  if isAttrs arg then arg.version or "master"
-    else  if isString arg then head (reverseList (split "/" arg))
-    else  if isPath arg   then (baseNameOf arg)
-    else "master";
-
-  # Converts a string, path or attribute set into an override function
-  # It tries to fill the `old` argument of the override function using
-  # `mathcomp-extra-config.initial` first and finishes with `fix-attrs`
-  rec-mathcomp-extra-override = generic: old: let
-    version = getVersion generic;
-    package = old.meta.package or "math-comp-nix";
-    cfg = pkgUp ((mathcomp-extra-config.initial.${package} or (_: {}))
-      { inherit version coqPackages; }) old
-          // { inherit version; };
-    fix = attrs: fix-attrs (pkgUp cfg attrs);
-  in
-    if isFunction generic then fix (generic cfg)
-    else  if generic == null || generic == "" then fix {}
-    else  if isDerivation generic then generic.drvAttrs
-    else  if isAttrs generic then fix generic
-    else  if generic == "broken" then fix { meta.broken = true; passthru.compatibleCoqVersions = _: false; }
-    else  let fixedcfg = fix cfg; in fixedcfg // (
-      if isString generic then
-        if (mathcomp-extra-config.sha256.${package} or {})?${generic} then {
-          src = fetchFromGitHub {
-            inherit (fixedcfg.meta) owner repo;
-            rev = version;
-            sha256 = mathcomp-extra-config.sha256.${package}.${version};
-          };
-        }
-        else  let splitted = filter isString (split "/" generic); in {
-        src = fetchTarball
-          ("https://github.com/" +
-           (if length splitted == 1 then "${fixedcfg.meta.owner}/${fixedcfg.meta.repo}/archive/${version}.tar.gz"
-            else "${head splitted}/${fixedcfg.meta.repo}/archive/${concatStringsSep "/" (tail splitted)}.tar.gz"));
-        }
-      else  if isPath generic then { src = generic; }
-      else abort "${toString generic} not a legitimate generic version/override");
-
-  # applies mathcomp-extra-config.for-coq-and-mc to the current mathcomp version
-  for-this = mathcomp-extra-config.for-coq-and-mc.${coq.coq-version}.${mathcomp.version} or {};
-
-  # specializes mathcomp-extra to the current mathcomp version.
-  rec-current-mathcomp-extra = package: mathcomp-extra package (for-this.${package} or {});
-in
-  {
-    mathcomp-extra-override = rec-mathcomp-extra-override;
-    mathcomp-extra-config   = rec-mathcomp-extra-config;
-    current-mathcomp-extra  = rec-current-mathcomp-extra;
-    mathcomp-extra          = package: version:
-      stdenv.mkDerivation (mathcomp-extra-override version {meta = {inherit package;};});
-
-    mathcomp-finmap       = current-mathcomp-extra "mathcomp-finmap";
-    mathcomp-analysis     = current-mathcomp-extra "mathcomp-analysis";
-    mathcomp-bigenough    = current-mathcomp-extra "mathcomp-bigenough";
-    multinomials          = current-mathcomp-extra "multinomials";
-    mathcomp-real-closed  = current-mathcomp-extra "mathcomp-real-closed";
-    coqeal                = current-mathcomp-extra "coqeal";
-
-    mathcomp-extra-fast    = map current-mathcomp-extra
-      (attrNames (filterAttrs (pkg: config: !(config?slow && config.slow)) for-this));
-    mathcomp-extra-all    = map current-mathcomp-extra (attrNames for-this);
-  }
diff --git a/pkgs/development/coq-modules/metalib/default.nix b/pkgs/development/coq-modules/metalib/default.nix
index 862184c1460c..3ce3c625d268 100644
--- a/pkgs/development/coq-modules/metalib/default.nix
+++ b/pkgs/development/coq-modules/metalib/default.nix
@@ -1,33 +1,18 @@
-{ stdenv, fetchFromGitHub, coq }:
+{ lib, mkCoqDerivation, coq, version ? null }:
 
-stdenv.mkDerivation rec {
-  name = "coq${coq.coq-version}-metalib-${version}";
-  version = "20200527";
-
-  src = fetchFromGitHub {
-    owner = "plclub";
-    repo = "metalib";
-    rev = "597fd7d0c93eb159274e84a39d554f10f1efccf8";
-    sha256 = "0wbypc05d2lqfm9qaw98ynr5yc1p0ipsvyc3bh1rk9nz7zwirmjs";
-  };
+with lib; mkCoqDerivation {
+  pname = "metalib";
+  owner = "plclub";
+  inherit version;
+  defaultVersion = if versions.range "8.10" "8.12" coq.coq-version then "20200527" else null;
+  release."20200527".rev    = "597fd7d0c93eb159274e84a39d554f10f1efccf8";
+  release."20200527".sha256 = "0wbypc05d2lqfm9qaw98ynr5yc1p0ipsvyc3bh1rk9nz7zwirmjs";
 
   sourceRoot = "source/Metalib";
-
-  buildInputs = [ coq ];
-
-  enableParallelBuilding = true;
-
   installFlags = "COQMF_COQLIB=$(out)/lib/coq/${coq.coq-version}";
 
-  meta = with stdenv.lib; {
-    homepage = "https://github.com/plclub/metalib";
+  meta = {
     license = licenses.mit;
     maintainers = [ maintainers.jwiegley ];
-    platforms = coq.meta.platforms;
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.10" "8.11" "8.12" ];
   };
-
 }
diff --git a/pkgs/development/coq-modules/multinomials/default.nix b/pkgs/development/coq-modules/multinomials/default.nix
new file mode 100644
index 000000000000..4958ad893e92
--- /dev/null
+++ b/pkgs/development/coq-modules/multinomials/default.nix
@@ -0,0 +1,34 @@
+{ coq, mkCoqDerivation, mathcomp, mathcomp-finmap, mathcomp-bigenough,
+  lib, version ? null }:
+with lib; mkCoqDerivation {
+
+  namePrefix = [ "coq" "mathcomp" ];
+  pname = "multinomials";
+  owner = "math-comp";
+  inherit version;
+  defaultVersion =  with versions; switch [ coq.version mathcomp.version ] [
+      { cases = [ (range "8.7" "8.12")  "1.11.0" ];             out = "1.5.2"; }
+      { cases = [ (range "8.7" "8.11")  (range "1.8" "1.10") ]; out = "1.5.0"; }
+      { cases = [ (range "8.7" "8.10")  (range "1.8" "1.10") ]; out = "1.4"; }
+      { cases = [ "8.6"                 (range "1.6" "1.7") ];  out = "1.1"; }
+    ] null;
+  release = {
+    "1.5.2".sha256 = "15aspf3jfykp1xgsxf8knqkxv8aav2p39c2fyirw7pwsfbsv2c4s";
+    "1.5.1".sha256 = "13nlfm2wqripaq671gakz5mn4r0xwm0646araxv0nh455p9ndjs3";
+    "1.5.0".sha256 = "064rvc0x5g7y1a0nip6ic91vzmq52alf6in2bc2dmss6dmzv90hw";
+    "1.5.0".rev    = "1.5";
+    "1.4".sha256   = "0vnkirs8iqsv8s59yx1fvg1nkwnzydl42z3scya1xp1b48qkgn0p";
+    "1.3".sha256   = "0l3vi5n094nx3qmy66hsv867fnqm196r8v605kpk24gl0aa57wh4";
+    "1.2".sha256   = "1mh1w339dslgv4f810xr1b8v2w7rpx6fgk9pz96q0fyq49fw2xcq";
+    "1.1".sha256   = "1q8alsm89wkc0lhcvxlyn0pd8rbl2nnxg81zyrabpz610qqjqc3s";
+    "1.0".sha256   = "1qmbxp1h81cy3imh627pznmng0kvv37k4hrwi2faa101s6bcx55m";
+  };
+
+  propagatedBuildInputs =
+    [ mathcomp.ssreflect mathcomp.algebra mathcomp-finmap mathcomp-bigenough ];
+
+  meta = {
+    description = "A Coq/SSReflect Library for Monoidal Rings and Multinomials";
+    license = licenses.cecill-c;
+  };
+}
diff --git a/pkgs/development/coq-modules/paco/default.nix b/pkgs/development/coq-modules/paco/default.nix
index ac6eef2f3bd0..900e52f1682b 100644
--- a/pkgs/development/coq-modules/paco/default.nix
+++ b/pkgs/development/coq-modules/paco/default.nix
@@ -1,42 +1,16 @@
-{stdenv, fetchFromGitHub, coq, unzip}:
-
-let
-  versions = {
-    pre_8_6 = rec {
-      rev = "v${version}";
-      version = "1.2.8";
-      sha256 = "05fskx5x1qgaf9qv626m38y5izichzzqc7g2rglzrkygbskrrwsb";
-    };
-    post_8_6 = rec {
-      rev = "v${version}";
-      version = "4.0.2";
-      sha256 = "1q96bsxclqx84xn5vkid501jkwlc1p6fhb8szrlrp82zglj58b0b";
-    };
-  };
-  params = {
-    "8.5" = versions.pre_8_6;
-    "8.6" = versions.post_8_6;
-    "8.7" = versions.post_8_6;
-    "8.8" = versions.post_8_6;
-    "8.9" = versions.post_8_6;
-    "8.10" = versions.post_8_6;
-    "8.11" = versions.post_8_6;
-    "8.12" = versions.post_8_6;
-  };
-  param = params.${coq.coq-version};
-in
-
-stdenv.mkDerivation rec {
-  inherit (param) version;
-  name = "coq${coq.coq-version}-paco-${version}";
-
-  src = fetchFromGitHub {
-    inherit (param) rev sha256;
-    owner = "snu-sf";
-    repo = "paco";
-  };
-
-  buildInputs = [ coq ];
+{ lib, mkCoqDerivation, coq, version ? null }:
+
+with lib; mkCoqDerivation {
+  pname = "paco";
+  owner = "snu-sf";
+  inherit version;
+  defaultVersion = with versions; switch coq.coq-version [
+    { case = isGe "8.6";         out = "4.0.2"; }
+    { case = range "8.5" "8.8";  out = "1.2.8"; }
+  ] null;
+  release."4.0.2".sha256 = "1q96bsxclqx84xn5vkid501jkwlc1p6fhb8szrlrp82zglj58b0b";
+  release."1.2.8".sha256 = "05fskx5x1qgaf9qv626m38y5izichzzqc7g2rglzrkygbskrrwsb";
+  releaseRev = v: "v${v}";
 
   preBuild = "cd src";
 
@@ -46,15 +20,9 @@ stdenv.mkDerivation rec {
     cp -pR *.vo $COQLIB/user-contrib/Paco
   '';
 
-  meta = with stdenv.lib; {
+  meta = {
     homepage = "http://plv.mpi-sws.org/paco/";
     description = "A Coq library implementing parameterized coinduction";
     maintainers = with maintainers; [ jwiegley ptival ];
-    platforms = coq.meta.platforms;
   };
-
-  passthru = {
-    compatibleCoqVersions = stdenv.lib.flip builtins.hasAttr params;
-  };
-
 }
diff --git a/pkgs/development/coq-modules/paramcoq/default.nix b/pkgs/development/coq-modules/paramcoq/default.nix
index 12d65bdb3d7b..342e4225a3c2 100644
--- a/pkgs/development/coq-modules/paramcoq/default.nix
+++ b/pkgs/development/coq-modules/paramcoq/default.nix
@@ -1,58 +1,22 @@
-{ stdenv, fetchFromGitHub, coq }:
-
-let params =
-  {
-    "8.7" = {
-      sha256 = "09n0ky7ldb24by7yf5j3hv410h85x50ksilf7qacl7xglj4gy5hj";
-      buildInputs = [ coq.ocamlPackages.camlp5 ];
-    };
-    "8.8" = {
-      sha256 = "0rc4lshqvnfdsph98gnscvpmlirs9wx91qcvffggg73xw0p1g9s0";
-      buildInputs = [ coq.ocamlPackages.camlp5 ];
-    };
-    "8.9" = {
-      sha256 = "1jjzgpff09xjn9kgp7w69r096jkj0x2ksng3pawrmhmn7clwivbk";
-      buildInputs = [ coq.ocamlPackages.camlp5 ];
-    };
-    "8.10" = {
-      sha256 = "1lq1mw15w4yky79qg3rm0mpzqi2ir51b6ak04ismrdr7ixky49y8";
-    };
-    "8.11" = {
-      sha256 = "09c6813988nvq4fpa45s33k70plnhxsblhm7cxxkg0i37mhvigsa";
-    };
-    "8.12" = {
-      sha256 = "0qd72r45if4h7c256qdfiimv75zyrs0w0xqij3m866jxaq591v4i";
-    };
-  };
-  param = params.${coq.coq-version};
-in
-
-stdenv.mkDerivation rec {
-  version = "1.1.2";
-  name = "coq${coq.coq-version}-paramcoq-${version}";
-  src = fetchFromGitHub {
-    owner = "coq-community";
-    repo = "paramcoq";
-    rev = "v${version}+coq${coq.coq-version}";
-    inherit (param) sha256;
-  };
-
-  buildInputs = [ coq ]
-  ++ (with coq.ocamlPackages; [ ocaml findlib ])
-  ++ (param.buildInputs or [])
-  ;
-
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.hasAttr v params;
-  };
+{ lib, mkCoqDerivation, coq, version ? null }:
 
+with lib; mkCoqDerivation {
+  pname = "paramcoq";
+  inherit version;
+  defaultVersion = if versions.range "8.7" "8.12" coq.coq-version
+    then "1.1.2+coq${coq.coq-version}" else null;
+  displayVersion = { paramcoq = "1.1.2"; };
+  release."1.1.2+coq8.12".sha256 = "0qd72r45if4h7c256qdfiimv75zyrs0w0xqij3m866jxaq591v4i";
+  release."1.1.2+coq8.11".sha256 = "09c6813988nvq4fpa45s33k70plnhxsblhm7cxxkg0i37mhvigsa";
+  release."1.1.2+coq8.10".sha256 = "1lq1mw15w4yky79qg3rm0mpzqi2ir51b6ak04ismrdr7ixky49y8";
+  release."1.1.2+coq8.9".sha256  = "1jjzgpff09xjn9kgp7w69r096jkj0x2ksng3pawrmhmn7clwivbk";
+  release."1.1.2+coq8.8".sha256  = "0rc4lshqvnfdsph98gnscvpmlirs9wx91qcvffggg73xw0p1g9s0";
+  release."1.1.2+coq8.7".sha256  = "09n0ky7ldb24by7yf5j3hv410h85x50ksilf7qacl7xglj4gy5hj";
+  releaseRev = v: "v${v}";
+  mlPlugin = true;
   meta = {
     description = "Coq plugin for parametricity";
-    inherit (src.meta) homepage;
-    license = stdenv.lib.licenses.mit;
-    maintainers = [ stdenv.lib.maintainers.vbgl ];
-    inherit (coq.meta) platforms;
+    license = licenses.mit;
+    maintainers = [ maintainers.vbgl ];
   };
 }
diff --git a/pkgs/development/coq-modules/simple-io/default.nix b/pkgs/development/coq-modules/simple-io/default.nix
index 82fa215ee9ca..42d4f782f1cf 100644
--- a/pkgs/development/coq-modules/simple-io/default.nix
+++ b/pkgs/development/coq-modules/simple-io/default.nix
@@ -1,34 +1,21 @@
-{ stdenv, fetchFromGitHub, coq, coq-ext-lib }:
-
-stdenv.mkDerivation rec {
-  version = "1.3.0";
-  name = "coq${coq.coq-version}-simple-io-${version}";
-  src = fetchFromGitHub {
-    owner = "Lysxia";
-    repo = "coq-simple-io";
-    rev = version;
-    sha256 = "1yp7ca36jyl9kz35ghxig45x6cd0bny2bpmy058359p94wc617ax";
-  };
-
-  buildInputs = [ coq ] ++ (with coq.ocamlPackages; [ ocaml ocamlbuild ]);
-
+{ lib, mkCoqDerivation, coq, coq-ext-lib, version ? null }:
+
+with lib; mkCoqDerivation {
+  pname = "simple-io";
+  owner = "Lysxia";
+  repo = "coq-simple-io";
+  inherit version;
+  defaultVersion = if versions.range "8.7" "8.12" coq.coq-version then "1.3.0" else null;
+  release."1.3.0".sha256 = "1yp7ca36jyl9kz35ghxig45x6cd0bny2bpmy058359p94wc617ax";
+  extraBuildInputs = (with coq.ocamlPackages; [ ocaml ocamlbuild ]);
   propagatedBuildInputs = [ coq-ext-lib ];
 
   doCheck = true;
   checkTarget = "test";
 
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
-
   meta = {
     description = "Purely functional IO for Coq";
-    inherit (src.meta) homepage;
-    inherit (coq.meta) platforms;
-    license = stdenv.lib.licenses.mit;
-    maintainers = [ stdenv.lib.maintainers.vbgl ];
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.7" "8.8" "8.9" "8.10" "8.11" "8.12" ];
+    license = licenses.mit;
+    maintainers = [ maintainers.vbgl ];
   };
-
 }
diff --git a/pkgs/development/coq-modules/stdpp/default.nix b/pkgs/development/coq-modules/stdpp/default.nix
index 28917e73f29f..2caafa9cc555 100644
--- a/pkgs/development/coq-modules/stdpp/default.nix
+++ b/pkgs/development/coq-modules/stdpp/default.nix
@@ -1,32 +1,17 @@
-{ stdenv, fetchFromGitLab, coq }:
+{ lib, mkCoqDerivation, coq, version ? null }:
 
-stdenv.mkDerivation rec {
-  name = "coq${coq.coq-version}-stdpp-${version}";
-  version = "1.4.0";
-  src = fetchFromGitLab {
-    domain = "gitlab.mpi-sws.org";
-    owner = "iris";
-    repo = "stdpp";
-    rev = "coq-stdpp-${version}";
-    sha256 = "1m6c7ibwc99jd4cv14v3r327spnfvdf3x2mnq51f9rz99rffk68r";
-  };
-
-  buildInputs = [ coq ];
-
-  enableParallelBuilding = true;
-
-  installFlags = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ];
+with lib; mkCoqDerivation rec {
+  pname = "stdpp";
+  inherit version;
+  domain = "gitlab.mpi-sws.org";
+  owner = "iris";
+  defaultVersion = if versions.range "8.8" "8.12" coq.coq-version then "1.4.0" else null;
+  release."1.4.0".sha256 = "1m6c7ibwc99jd4cv14v3r327spnfvdf3x2mnq51f9rz99rffk68r";
+  releaseRev = v: "coq-stdpp-${v}";
 
   meta = {
-    inherit (src.meta) homepage;
     description = "An extended “Standard Library” for Coq";
-    inherit (coq.meta) platforms;
-    license = stdenv.lib.licenses.bsd3;
-    maintainers = [ stdenv.lib.maintainers.vbgl ];
+    license = licenses.bsd3;
+    maintainers = [ maintainers.vbgl ];
   };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.8" "8.9" "8.10" "8.11" "8.12" ];
-  };
-
 }
diff --git a/pkgs/development/coq-modules/tlc/default.nix b/pkgs/development/coq-modules/tlc/default.nix
index 816b22050244..6bbad1c6c2b1 100644
--- a/pkgs/development/coq-modules/tlc/default.nix
+++ b/pkgs/development/coq-modules/tlc/default.nix
@@ -1,41 +1,23 @@
-{ stdenv, fetchurl, fetchFromGitHub, coq }:
+{ lib, mkCoqDerivation, coq, version ? null }:
 
-let params =
-  if stdenv.lib.versionAtLeast coq.coq-version "8.10"
-  then rec {
-    version = "20200328";
-    src = fetchFromGitHub {
-      owner = "charguer";
-      repo = "tlc";
-      rev = version;
-      sha256 = "16vzild9gni8zhgb3qhmka47f8zagdh03k6nssif7drpim8233lx";
-    };
-  } else rec {
-    version = "20181116";
-    src = fetchurl {
-      url = "http://tlc.gforge.inria.fr/releases/tlc-${version}.tar.gz";
-      sha256 = "0iv6f6zmrv2lhq3xq57ipmw856ahsql754776ymv5wjm88ld63nm";
-    };
-  }
-; in
-
-stdenv.mkDerivation {
-  inherit (params) version src;
-  pname = "coq${coq.coq-version}-tlc";
-
-  buildInputs = [ coq ];
+with lib; mkCoqDerivation {
+  pname = "tlc";
+  owner = "charguer";
+  inherit version;
+  displayVersion = { tlc = false; };
+  defaultVersion = with versions; switch coq.coq-version [
+    { case = range "8.10" "8.12"; out = "20200328"; }
+    { case = range "8.6"  "8.12"; out = "20181116"; }
+  ] null;
+  release."20200328".sha256 = "16vzild9gni8zhgb3qhmka47f8zagdh03k6nssif7drpim8233lx";
+  release."20181116".sha256 = "032lrbkxqm9d3fhf6nv1kq2z0mqd3czv3ijlbsjwnfh12xck4vpl";
 
   installFlags = [ "CONTRIB=$(out)/lib/coq/${coq.coq-version}/user-contrib" ];
 
   meta = {
     homepage = "http://www.chargueraud.org/softs/tlc/";
     description = "A non-constructive library for Coq";
-    license = stdenv.lib.licenses.free;
-    maintainers = [ stdenv.lib.maintainers.vbgl ];
-    inherit (coq.meta) platforms;
-  };
-
-  passthru = {
-    compatibleCoqVersions = stdenv.lib.flip builtins.elem [ "8.6" "8.7" "8.8" "8.9" "8.10" "8.11" "8.12" ];
+    license = licenses.free;
+    maintainers = [ maintainers.vbgl ];
   };
 }
diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix
index 05740979b8ac..8fc6aee0aa1e 100644
--- a/pkgs/development/haskell-modules/configuration-common.nix
+++ b/pkgs/development/haskell-modules/configuration-common.nix
@@ -217,7 +217,24 @@ self: super: {
   # building of the executable has been disabled for ghc < 8.10 in hnix.
   # Generating the completions should be activated again, once we default to
   # ghc 8.10.
-  hnix = dontCheck super.hnix;
+  hnix = dontCheck (super.hnix.override {
+
+    #  2021-01-07: NOTE: hnix-store-core pinned at ==0.2 in Stackage Nightly.
+    # https://github.com/haskell-nix/hnix-store/issues/104
+    # Until unpin, which may hold off in time due to Stackage maintenence bottleneck
+    # the 0_4_0_0 is used
+    hnix-store-core = self.hnix-store-core_0_4_0_0; # at least 1.7
+
+  });
+
+  #  2021-01-07: NOTE: hnix-store-core pinned at ==0.2 in Stackage Nightly.
+  # https://github.com/haskell-nix/hnix-store/issues/104
+  # Until unpin, which may hold off in time due to Stackage maintenence bottleneck
+  # the 0_4_0_0 is used
+  hnix-store-remote = (super.hnix-store-remote.override {
+    hnix-store-core = self.hnix-store-core_0_4_0_0; # at least 1.7
+  });
+
 
   # Fails for non-obvious reasons while attempting to use doctest.
   search = dontCheck super.search;
@@ -805,11 +822,20 @@ self: super: {
   # Needs QuickCheck <2.10, HUnit <1.6 and base <4.10
   pointfree = doJailbreak super.pointfree;
 
-  # Depends on base <4.12
-  # See https://github.com/haskell-hvr/cryptohash-sha512/pull/3
-  # , https://github.com/haskell-hvr/cryptohash-sha512/issues/4
-  # and https://github.com/haskell-hvr/cryptohash-sha512/pull/5
-  cryptohash-sha512 = doJailbreak super.cryptohash-sha512;
+  # The project is stale
+  #
+  # Archiving request: https://github.com/haskell-hvr/cryptohash-sha512/issues/6
+  #
+  # doJailbreak since base <4.12 && bytestring <0.11
+  # Request to support:
+  # https://github.com/haskell-hvr/cryptohash-sha512/issues/4
+  # PRs to support base <4.12:
+  # https://github.com/haskell-hvr/cryptohash-sha512/pull/3
+  # https://github.com/haskell-hvr/cryptohash-sha512/pull/5
+  #
+  # dontCheck since test suite does not support new `base16-bytestring` >= 1 format
+  # https://github.com/haskell-hvr/cryptohash-sha512/pull/5#issuecomment-752796913
+  cryptohash-sha512 = dontCheck (doJailbreak super.cryptohash-sha512);
 
   # Depends on tasty < 1.x, which we don't have.
   cryptohash-sha256 = doJailbreak super.cryptohash-sha256;
@@ -1309,7 +1335,7 @@ self: super: {
   commonmark-extensions = dontCheck super.commonmark-extensions;
 
   # Testsuite trying to run `which haskeline-examples-Test`
-  haskeline_0_8_1_0 = dontCheck super.haskeline_0_8_1_0;
+  haskeline_0_8_1_1 = dontCheck super.haskeline_0_8_1_1;
 
   # Tests for list-t, superbuffer, and stm-containers
   # depend on HTF and it is broken, 2020-08-23
@@ -1477,28 +1503,18 @@ self: super: {
     sha256 = "0g2m0y46zr3xs9fswkm4h9adhsg6gzl5zwgidshsjh3k3rq4h7b1";
   });
 
+  # https://github.com/ekmett/half/issues/35
+  half = if pkgs.stdenv.isAarch64
+    then dontCheck super.half
+    else super.half;
+
   # 2020-11-19: Jailbreaking until: https://github.com/snapframework/heist/pull/124
   heist = doJailbreak super.heist;
 
   # 2020-11-19: Jailbreaking until: https://github.com/snapframework/snap/pull/219
   snap = doJailbreak super.snap;
 
-  # 2020-11-21: cachix + chachix-api needs a patch for ghc 8.10 compat. Can be removed once released
-  # https://github.com/cachix/cachix/pull/331
-  cachix-api = appendPatch super.cachix-api (pkgs.fetchpatch {
-    url = https://github.com/cachix/cachix/commit/bfeec151a03afad72401815fe8bbb1b0d5d63b0d.patch;
-    sha256 = "0rglyd77g4j72l5g0sj9zpq2hy3v992bm6nhj58pmj4j2aj67y74";
-    stripLen = 2;
-    extraPrefix = "";
-    includes = [ "src/Cachix/Types/Session.hs" "src/Cachix/API/Signing.hs" ];
-  });
-  cachix = generateOptparseApplicativeCompletion "cachix" (appendPatch super.cachix (pkgs.fetchpatch {
-    url = https://github.com/cachix/cachix/commit/bfeec151a03afad72401815fe8bbb1b0d5d63b0d.patch;
-    sha256 = "06jmpz8l5vh9cch5aqdbrln7bm3fghxsicwy1m93avli320kp8pp";
-    stripLen = 2;
-    extraPrefix = "";
-    excludes = [ "stack.yaml" "sources.json" "src/Cachix/Types/Session.hs" "src/Cachix/API/Signing.hs" "cachix-api.cabal" "workflows/test.yml" ];
-  }));
+  cachix = generateOptparseApplicativeCompletion "cachix" super.cachix;
 
   # 2020-11-23: Jailbreaking until: https://github.com/michaelt/text-pipes/pull/29
   pipes-text = doJailbreak super.pipes-text;
@@ -1552,4 +1568,8 @@ self: super: {
   servant-client      = doJailbreak super.servant-client;
   servant-client-core = doJailbreak super.servant-client-core;
 
+  # overly strict dependency on aeson
+  # https://github.com/jaspervdj/profiteur/issues/33
+  profiteur = doJailbreak super.profiteur;
+
 } // import ./configuration-tensorflow.nix {inherit pkgs haskellLib;} self super
diff --git a/pkgs/development/haskell-modules/configuration-hackage2nix.yaml b/pkgs/development/haskell-modules/configuration-hackage2nix.yaml
index c23c4d54acb6..ab8f1f7e5f27 100644
--- a/pkgs/development/haskell-modules/configuration-hackage2nix.yaml
+++ b/pkgs/development/haskell-modules/configuration-hackage2nix.yaml
@@ -76,7 +76,7 @@ default-package-overrides:
   # haskell-language-server 0.5.0.0 doesn't accept newer versions
   - fourmolu ==0.2.*
   - refinery ==0.2.*
-  # Stackage Nightly 2021-01-01
+  # Stackage Nightly 2021-01-05
   - abstract-deque ==0.3
   - abstract-par ==0.3.3
   - AC-Angle ==1.0
@@ -86,7 +86,7 @@ default-package-overrides:
   - ad ==4.4.1
   - adjunctions ==4.4
   - adler32 ==0.1.2.0
-  - aeson ==1.5.4.1
+  - aeson ==1.5.5.1
   - aeson-attoparsec ==0.0.0
   - aeson-better-errors ==0.9.1.0
   - aeson-casing ==0.2.0.0
@@ -261,7 +261,7 @@ default-package-overrides:
   - attoparsec-base64 ==0.0.0
   - attoparsec-binary ==0.2
   - attoparsec-expr ==0.1.1.2
-  - attoparsec-iso8601 ==1.0.1.0
+  - attoparsec-iso8601 ==1.0.2.0
   - attoparsec-path ==0.0.0.1
   - audacity ==0.0.2
   - aur ==7.0.5
@@ -334,7 +334,6 @@ default-package-overrides:
   - bits-extra ==0.0.2.0
   - bitset-word8 ==0.1.1.2
   - bitvec ==1.0.3.0
-  - bitwise-enum ==1.0.0.2
   - blake2 ==0.3.0
   - blanks ==0.5.0
   - blas-carray ==0.1.0.1
@@ -520,10 +519,10 @@ default-package-overrides:
   - conduit-extra ==1.3.5
   - conduit-parse ==0.2.1.0
   - conduit-zstd ==0.0.2.0
-  - conferer ==0.4.1.1
-  - conferer-hspec ==0.4.0.1
-  - conferer-source-json ==0.4.0.1
-  - conferer-warp ==0.4.0.1
+  - conferer ==1.0.0.0
+  - conferer-aeson ==1.0.0.0
+  - conferer-hspec ==1.0.0.0
+  - conferer-warp ==1.0.0.0
   - config-ini ==0.2.4.0
   - ConfigFile ==1.1.4
   - configurator ==0.3.0.0
@@ -690,6 +689,7 @@ default-package-overrides:
   - doctest-exitcode-stdio ==0.0
   - doctest-lib ==0.1
   - doldol ==0.4.1.2
+  - dot ==0.3
   - dotenv ==0.8.0.7
   - dotgen ==0.4.3
   - dotnet-timespan ==0.0.1.0
@@ -845,6 +845,7 @@ default-package-overrides:
   - focus ==1.0.2
   - focuslist ==0.1.0.2
   - fold-debounce ==0.2.0.9
+  - fold-debounce-conduit ==0.2.0.5
   - foldable1 ==0.1.0.0
   - foldl ==1.4.10
   - folds ==0.7.5
@@ -937,11 +938,11 @@ default-package-overrides:
   - ghc-prof ==1.4.1.7
   - ghc-source-gen ==0.4.0.0
   - ghc-syntax-highlighter ==0.0.6.0
-  - ghc-tcplugins-extra ==0.4
+  - ghc-tcplugins-extra ==0.4.1
   - ghc-trace-events ==0.1.2.1
-  - ghc-typelits-extra ==0.4.1
-  - ghc-typelits-knownnat ==0.7.3
-  - ghc-typelits-natnormalise ==0.7.2
+  - ghc-typelits-extra ==0.4.2
+  - ghc-typelits-knownnat ==0.7.4
+  - ghc-typelits-natnormalise ==0.7.3
   - ghc-typelits-presburger ==0.3.0.1
   - ghci-hexcalc ==0.1.1.0
   - ghcid ==0.8.7
@@ -995,6 +996,9 @@ default-package-overrides:
   - graphs ==0.7.1
   - graphviz ==2999.20.1.0
   - gravatar ==0.8.0
+  - greskell ==1.2.0.0
+  - greskell-core ==0.1.3.5
+  - greskell-websocket ==0.1.2.5
   - groom ==0.1.2.1
   - group-by-date ==0.1.0.3
   - groups ==0.5.2
@@ -1008,7 +1012,7 @@ default-package-overrides:
   - hadolint ==1.19.0
   - hadoop-streaming ==0.2.0.3
   - hakyll-convert ==0.3.0.3
-  - half ==0.3
+  - half ==0.3.1
   - hall-symbols ==0.1.0.6
   - hamtsolo ==1.0.3
   - HandsomeSoup ==0.4.2
@@ -1022,7 +1026,7 @@ default-package-overrides:
   - hashing ==0.1.0.1
   - hashmap ==1.3.3
   - hashtables ==1.2.4.1
-  - haskeline ==0.8.1.0
+  - haskeline ==0.8.1.1
   - haskell-gi ==0.24.7
   - haskell-gi-base ==0.24.5
   - haskell-gi-overloading ==1.0
@@ -1100,7 +1104,7 @@ default-package-overrides:
   - hoauth2 ==1.16.0
   - hocon ==0.1.0.4
   - hOpenPGP ==2.9.5
-  - hopenpgp-tools ==0.23.3
+  - hopenpgp-tools ==0.23.6
   - hopfli ==0.2.2.1
   - hosc ==0.18.1
   - hostname ==1.0
@@ -1136,12 +1140,12 @@ default-package-overrides:
   - HsOpenSSL ==0.11.5.1
   - HsOpenSSL-x509-system ==0.1.0.4
   - hsp ==0.10.0
-  - hspec ==2.7.4
+  - hspec ==2.7.5
   - hspec-attoparsec ==0.1.0.2
   - hspec-checkers ==0.1.0.2
   - hspec-contrib ==0.5.1
-  - hspec-core ==2.7.4
-  - hspec-discover ==2.7.4
+  - hspec-core ==2.7.5
+  - hspec-discover ==2.7.5
   - hspec-expectations ==0.8.2
   - hspec-expectations-lifted ==0.10.0
   - hspec-expectations-pretty-diff ==0.7.2.5
@@ -1151,6 +1155,7 @@ default-package-overrides:
   - hspec-leancheck ==0.0.4
   - hspec-megaparsec ==2.2.0
   - hspec-meta ==2.6.0
+  - hspec-need-env ==0.1.0.5
   - hspec-parsec ==0
   - hspec-smallcheck ==0.5.2
   - hspec-tables ==0.0.1
@@ -1211,7 +1216,7 @@ default-package-overrides:
   - hw-json-simd ==0.1.1.0
   - hw-json-simple-cursor ==0.1.1.0
   - hw-json-standard-cursor ==0.2.3.1
-  - hw-kafka-client ==4.0.0
+  - hw-kafka-client ==4.0.1
   - hw-mquery ==0.2.1.0
   - hw-packed-vector ==0.2.1.0
   - hw-parser ==0.1.1.0
@@ -1263,7 +1268,7 @@ default-package-overrides:
   - influxdb ==1.9.0
   - ini ==0.4.1
   - inj ==1.0
-  - inline-c ==0.9.1.3
+  - inline-c ==0.9.1.4
   - inline-c-cpp ==0.4.0.2
   - inline-r ==0.10.4
   - inliterate ==0.1.0
@@ -1399,7 +1404,7 @@ default-package-overrides:
   - libgit ==0.3.1
   - libgraph ==1.14
   - libjwt-typed ==0.2
-  - libmpd ==0.9.2.0
+  - libmpd ==0.9.3.0
   - liboath-hs ==0.0.1.2
   - libyaml ==0.1.2
   - LibZip ==1.0.1
@@ -1461,6 +1466,8 @@ default-package-overrides:
   - markov-chain ==0.0.3.4
   - massiv ==0.5.9.0
   - massiv-io ==0.4.0.0
+  - massiv-persist ==0.1.0.0
+  - massiv-serialise ==0.1.0.0
   - massiv-test ==0.1.6
   - math-extras ==0.1.1.0
   - math-functions ==0.3.4.1
@@ -1889,7 +1896,7 @@ default-package-overrides:
   - quickcheck-classes ==0.6.4.0
   - quickcheck-classes-base ==0.6.1.0
   - quickcheck-higherorder ==0.1.0.0
-  - quickcheck-instances ==0.3.25.1
+  - quickcheck-instances ==0.3.25.2
   - quickcheck-io ==0.2.0
   - quickcheck-simple ==0.1.1.1
   - quickcheck-special ==0.1.0.6
@@ -1932,7 +1939,7 @@ default-package-overrides:
   - read-editor ==0.1.0.2
   - read-env-var ==1.0.0.0
   - readable ==0.3.1
-  - reanimate ==1.1.2.1
+  - reanimate ==1.1.3.1
   - reanimate-svg ==0.13.0.0
   - rebase ==1.6.1
   - record-dot-preprocessor ==0.2.7
@@ -2295,7 +2302,7 @@ default-package-overrides:
   - Taxonomy ==2.1.0
   - TCache ==0.12.1
   - tce-conf ==1.3
-  - tdigest ==0.2.1
+  - tdigest ==0.2.1.1
   - template-haskell-compat-v0208 ==0.1.5
   - temporary ==1.3
   - temporary-rc ==1.2.0.3
@@ -2330,7 +2337,7 @@ default-package-overrides:
   - text-short ==0.1.3
   - text-show ==3.9
   - text-show-instances ==3.8.4
-  - text-zipper ==0.10.1
+  - text-zipper ==0.11
   - textlocal ==0.1.0.5
   - tf-random ==0.5
   - tfp ==1.0.1.1
@@ -2457,7 +2464,7 @@ default-package-overrides:
   - uniplate ==1.6.13
   - uniprot-kb ==0.1.2.0
   - uniq-deep ==1.2.0
-  - unique ==0
+  - unique ==0.0.1
   - unique-logic ==0.4
   - unique-logic-tf ==0.5.1
   - unit-constraint ==0.0.0
@@ -2486,7 +2493,7 @@ default-package-overrides:
   - users ==0.5.0.0
   - utf8-conversions ==0.1.0.4
   - utf8-light ==0.4.2
-  - utf8-string ==1.0.1.1
+  - utf8-string ==1.0.2
   - util ==0.1.17.1
   - utility-ht ==0.0.15
   - uuid ==1.3.13
@@ -2536,7 +2543,7 @@ default-package-overrides:
   - wai-cors ==0.2.7
   - wai-enforce-https ==0.0.2.1
   - wai-eventsource ==3.0.0
-  - wai-extra ==3.1.4.1
+  - wai-extra ==3.1.5
   - wai-feature-flags ==0.1.0.1
   - wai-handler-launch ==3.0.3.1
   - wai-logger ==2.3.6
@@ -2568,6 +2575,8 @@ default-package-overrides:
   - weigh ==0.0.16
   - wide-word ==0.1.1.2
   - wikicfp-scraper ==0.1.0.11
+  - wild-bind ==0.1.2.6
+  - wild-bind-x11 ==0.2.0.11
   - Win32 ==2.6.1.0
   - Win32-notify ==0.3.0.3
   - windns ==0.1.0.1
@@ -2638,7 +2647,7 @@ default-package-overrides:
   - yesod-form ==1.6.7
   - yesod-gitrev ==0.2.1
   - yesod-newsfeed ==1.7.0.0
-  - yesod-page-cursor ==2.0.0.0
+  - yesod-page-cursor ==2.0.0.1
   - yesod-paginator ==1.1.1.0
   - yesod-persistent ==1.6.0.5
   - yesod-sitemap ==1.6.0
@@ -3134,6 +3143,7 @@ broken-packages:
   - Annotations
   - anonymous-sums
   - anonymous-sums-tests
+  - ansi-terminal-game
   - ansigraph
   - antagonist
   - antfarm
@@ -3193,6 +3203,7 @@ broken-packages:
   - applicative-quoters
   - applicative-splice
   - approveapi
+  - approx
   - ApproxFun-hs
   - arb-fft
   - arbb-vm
@@ -3200,7 +3211,6 @@ broken-packages:
   - arbor-monad-counter
   - arbor-monad-metric
   - arbor-monad-metric-datadog
-  - arbtt
   - arch-hs
   - archive-libarchive
   - archiver
@@ -3399,6 +3409,7 @@ broken-packages:
   - basex-client
   - BASIC
   - basic
+  - basic-sop
   - baskell
   - batchd
   - battlenet
@@ -3497,6 +3508,7 @@ broken-packages:
   - bindings-K8055
   - bindings-libftdi
   - bindings-libg15
+  - bindings-libpci
   - bindings-librrd
   - bindings-libstemmer
   - bindings-libusb
@@ -3663,7 +3675,9 @@ broken-packages:
   - broker-haskell
   - bronyradiogermany-common
   - bronyradiogermany-streaming
+  - brotli
   - brotli-conduit
+  - brotli-streams
   - browscap
   - bsd-sysctl
   - bson
@@ -3783,6 +3797,7 @@ broken-packages:
   - cache-polysemy
   - cached
   - caching
+  - caching-vault
   - cacophony
   - cafeteria-prelude
   - caffegraph
@@ -3949,6 +3964,7 @@ broken-packages:
   - chunky
   - church
   - church-maybe
+  - churros
   - cielo
   - cil
   - cinvoke
@@ -3956,6 +3972,7 @@ broken-packages:
   - cipher-blowfish
   - ciphersaber2
   - circlehs
+  - circular
   - citation-resolve
   - citeproc-hs
   - citeproc-hs-pandoc-filter
@@ -4172,9 +4189,13 @@ broken-packages:
   - conduit-vfs-zip
   - conf
   - confcrypt
+  - conferer-dhall
   - conferer-provider-dhall
   - conferer-provider-json
   - conferer-provider-yaml
+  - conferer-source-dhall
+  - conferer-source-json
+  - conferer-source-yaml
   - conffmt
   - confide
   - config-parser
@@ -4192,6 +4213,7 @@ broken-packages:
   - conkin
   - conlogger
   - connection-string
+  - connections
   - Conscript
   - consistent
   - console-program
@@ -4348,6 +4370,7 @@ broken-packages:
   - cspmchecker
   - cspretty
   - css
+  - css-easings
   - css-selectors
   - csv-enumerator
   - csv-nptools
@@ -4416,6 +4439,7 @@ broken-packages:
   - data-fin
   - data-fin-simple
   - data-flagset
+  - data-interval
   - data-ivar
   - data-kiln
   - data-layer
@@ -4430,6 +4454,7 @@ broken-packages:
   - data-object-yaml
   - data-pprint
   - data-quotientref
+  - data-r-tree
   - data-reify-cse
   - data-repr
   - data-result
@@ -4573,11 +4598,15 @@ broken-packages:
   - dgim
   - dgs
   - dhall-check
+  - dhall-docs
   - dhall-fly
+  - dhall-json
+  - dhall-lsp-server
   - dhall-nix
   - dhall-nixpkgs
   - dhall-text
   - dhall-to-cabal
+  - dhall-yaml
   - dhcp-lease-parser
   - dhrun
   - dia-base
@@ -4642,6 +4671,7 @@ broken-packages:
   - direct-plugins
   - direct-rocksdb
   - directed-cubical
+  - directory-contents
   - direm
   - dirfiles
   - discogs-haskell
@@ -4810,6 +4840,7 @@ broken-packages:
   - dzen-utils
   - each
   - earclipper
+  - early
   - easy-api
   - easy-bitcoin
   - easyjson
@@ -4872,6 +4903,8 @@ broken-packages:
   - elm-street
   - elm-websocket
   - elsa
+  - elynx
+  - elynx-tree
   - emacs-keys
   - emacs-module
   - email
@@ -4942,6 +4975,7 @@ broken-packages:
   - ersatz
   - ersatz-toysat
   - ert
+  - escape-artist
   - escoger
   - esotericbot
   - EsounD
@@ -4993,6 +5027,7 @@ broken-packages:
   - exference
   - exherbo-cabal
   - exif
+  - exigo-schema
   - exinst-deepseq
   - exinst-hashable
   - exists
@@ -5043,6 +5078,8 @@ broken-packages:
   - FailureT
   - fake
   - fake-type
+  - fakedata
+  - fakedata-quickcheck
   - faktory
   - falling-turnip
   - fallingblocks
@@ -5144,6 +5181,7 @@ broken-packages:
   - filesystem-enumerator
   - filesystem-trees
   - fillit
+  - Fin
   - final-pretty-printer
   - Finance-Quote-Yahoo
   - Finance-Treasury
@@ -5420,6 +5458,7 @@ broken-packages:
   - generic-binary
   - generic-church
   - generic-enum
+  - generic-enumeration
   - generic-lens-labels
   - generic-lucid-scaffold
   - generic-maybe
@@ -5455,6 +5494,7 @@ broken-packages:
   - geolite-csv
   - geom2d
   - GeomPredicates-SSE
+  - geos
   - Get
   - getemx
   - getflag
@@ -5790,6 +5830,7 @@ broken-packages:
   - hack2-handler-mongrel2-http
   - hack2-handler-snap-server
   - hack2-handler-warp
+  - hackage-api
   - hackage-diff
   - hackage-mirror
   - hackage-processing
@@ -5985,6 +6026,7 @@ broken-packages:
   - haskell-igraph
   - haskell-in-space
   - haskell-kubernetes
+  - haskell-language-server
   - haskell-lsp-client
   - haskell-ml
   - haskell-mpfr
@@ -6122,6 +6164,7 @@ broken-packages:
   - hasql-queue
   - hasql-simple
   - hasql-th
+  - hasql-url
   - hastache
   - hastache-aeson
   - haste
@@ -6174,6 +6217,7 @@ broken-packages:
   - hCM
   - hcoap
   - hcom
+  - hcount
   - hcron
   - hCsound
   - hcube
@@ -6219,6 +6263,7 @@ broken-packages:
   - heckle
   - hedgehog-checkers
   - hedgehog-checkers-lens
+  - hedgehog-fakedata
   - hedgehog-gen-json
   - hedgehog-generic
   - hedgehog-golden
@@ -6283,6 +6328,7 @@ broken-packages:
   - hexpress
   - hexquote
   - hext
+  - hextream
   - heyefi
   - heyting-algebras
   - hF2
@@ -6326,6 +6372,7 @@ broken-packages:
   - hid-examples
   - hidden-char
   - hie-core
+  - hiedb
   - hieraclus
   - hierarchical-clustering-diagrams
   - hierarchical-exceptions
@@ -6348,6 +6395,7 @@ broken-packages:
   - hinduce-classifier
   - hinduce-classifier-decisiontree
   - hinduce-examples
+  - hinit
   - hinquire
   - hinstaller
   - hint-server
@@ -6408,6 +6456,9 @@ broken-packages:
   - hlrdb
   - hlrdb-core
   - hls
+  - hls-explicit-imports-plugin
+  - hls-hlint-plugin
+  - hls-retrie-plugin
   - hlwm
   - hly
   - hmark
@@ -6437,7 +6488,6 @@ broken-packages:
   - hmt-diagrams
   - hmumps
   - hnetcdf
-  - hnix-store-remote
   - HNM
   - hnormalise
   - ho-rewriting
@@ -6446,6 +6496,7 @@ broken-packages:
   - hobbes
   - hobbits
   - hocilib
+  - hocker
   - hodatime
   - HODE
   - hoe
@@ -6460,7 +6511,6 @@ broken-packages:
   - hol
   - hold-em
   - hole
-  - holmes
   - Holumbus-Searchengine
   - holy-project
   - homeomorphic
@@ -6509,6 +6559,7 @@ broken-packages:
   - hp2any-graph
   - hp2any-manager
   - hpack-convert
+  - hpack-dhall
   - hpaco
   - hpaco-lib
   - hpage
@@ -6793,6 +6844,7 @@ broken-packages:
   - hugs2yc
   - hulk
   - HulkImport
+  - hum
   - human-parse
   - human-text
   - humble-prelude
@@ -6806,6 +6858,7 @@ broken-packages:
   - hunt-server
   - hup
   - hurdle
+  - hurl
   - hurriyet
   - husk-scheme
   - husk-scheme-libs
@@ -6822,6 +6875,7 @@ broken-packages:
   - hw-json-simd
   - hw-json-simple-cursor
   - hw-json-standard-cursor
+  - hw-kafka-avro
   - hw-prim-bits
   - hw-simd
   - hw-uri
@@ -7218,6 +7272,7 @@ broken-packages:
   - karps
   - katip-elasticsearch
   - katip-kafka
+  - katip-raven
   - katip-rollbar
   - katip-scalyr-scribe
   - katip-syslog
@@ -7261,6 +7316,7 @@ broken-packages:
   - kickchan
   - kif-parser
   - kit
+  - kleene
   - kmeans-par
   - kmeans-vector
   - kmonad
@@ -7397,6 +7453,7 @@ broken-packages:
   - latex-svg-image
   - latex-svg-pandoc
   - LATS
+  - lattices
   - launchdarkly-server-sdk
   - launchpad-control
   - lawless-concurrent-machines
@@ -7429,6 +7486,7 @@ broken-packages:
   - learn
   - learn-physics-examples
   - Learning
+  - leb128
   - leetify
   - legion
   - legion-discovery
@@ -7509,6 +7567,7 @@ broken-packages:
   - linda
   - linden
   - line-bot-sdk
+  - line-drawing
   - linear-algebra-cblas
   - linear-circuit
   - linear-code
@@ -7772,6 +7831,8 @@ broken-packages:
   - marvin-interpolate
   - masakazu-bot
   - MASMGen
+  - massiv-persist
+  - massiv-serialise
   - master-plan
   - matchers
   - math-grads
@@ -7803,6 +7864,7 @@ broken-packages:
   - mcl
   - mcm
   - mcmaster-gloss-examples
+  - mcmc
   - mcmc-samplers
   - mcmc-synthesis
   - mcpi
@@ -8204,6 +8266,7 @@ broken-packages:
   - neko-lib
   - Neks
   - nemesis-titan
+  - neptune-backend
   - nerf
   - nero
   - nero-wai
@@ -8213,6 +8276,11 @@ broken-packages:
   - nested-sequence
   - NestedFunctor
   - nestedmap
+  - net-mqtt
+  - net-mqtt-lens
+  - net-mqtt-rpc
+  - net-spider
+  - net-spider-cli
   - net-spider-pangraph
   - net-spider-rpl
   - net-spider-rpl-cli
@@ -8427,6 +8495,7 @@ broken-packages:
   - open-union
   - OpenAFP
   - OpenAFP-Utils
+  - openai-hs
   - openapi-petstore
   - openapi-typed
   - openapi3
@@ -8473,6 +8542,7 @@ broken-packages:
   - orchid-demo
   - order-maintenance
   - order-statistics
+  - ordinal
   - Ordinary
   - ordrea
   - oref
@@ -8574,6 +8644,7 @@ broken-packages:
   - parcom-lib
   - parconc-examples
   - pareto
+  - parochial
   - parquet-hs
   - Parry
   - parse-help
@@ -8679,6 +8750,7 @@ broken-packages:
   - persistent-migration
   - persistent-mongoDB
   - persistent-mysql-haskell
+  - persistent-odbc
   - persistent-protobuf
   - persistent-ratelimit
   - persistent-relational-record
@@ -8806,6 +8878,7 @@ broken-packages:
   - pocket-dns
   - point-octree
   - pointedalternative
+  - pointfree-fancy
   - pointful
   - pointless-haskell
   - pointless-lenses
@@ -8836,6 +8909,7 @@ broken-packages:
   - polyseq
   - polytypeable
   - polytypeable-utils
+  - pomaps
   - pomodoro
   - pomohoro
   - ponder
@@ -8845,6 +8919,7 @@ broken-packages:
   - pool-conduit
   - pop3-client
   - popenhs
+  - popkey
   - poppler
   - porcupine-core
   - porcupine-http
@@ -8975,7 +9050,6 @@ broken-packages:
   - prof-flamegraph
   - prof2dot
   - prof2pretty
-  - profiteur
   - profunctor-monad
   - progress
   - progress-meter
@@ -9003,7 +9077,9 @@ broken-packages:
   - prosidyc
   - prosper
   - proteaaudio
+  - proteaaudio-sdl
   - proteome
+  - proto-lens-arbitrary
   - proto-lens-combinators
   - proto-lens-descriptors
   - proto3-suite
@@ -9012,6 +9088,7 @@ broken-packages:
   - protocol-buffers-descriptor-fork
   - protocol-buffers-fork
   - protolude-lifted
+  - proton
   - proton-haskell
   - prototype
   - prove-everywhere-server
@@ -9043,6 +9120,7 @@ broken-packages:
   - pure-io
   - pure-priority-queue
   - pure-priority-queue-tests
+  - pure-zlib
   - purescheme-wai-routing-core
   - purescript
   - purescript-iso
@@ -9112,6 +9190,7 @@ broken-packages:
   - quickcheck-report
   - quickcheck-state-machine
   - quickcheck-state-machine-distributed
+  - quickcheck-string-random
   - quickcheck-webdriver
   - QuickCheckVariant
   - QuickPlot
@@ -9204,6 +9283,7 @@ broken-packages:
   - raz
   - razom-text-util
   - rbr
+  - rbst
   - rc
   - rclient
   - rdioh
@@ -9277,6 +9357,7 @@ broken-packages:
   - reflex-fsnotify
   - reflex-gadt-api
   - reflex-ghci
+  - reflex-gi-gtk
   - reflex-gloss
   - reflex-gloss-scene
   - reflex-libtelnet
@@ -9463,6 +9544,7 @@ broken-packages:
   - roc-cluster-demo
   - rock
   - rocksdb-haskell
+  - rocksdb-query
   - roku-api
   - rollbar
   - rollbar-cli
@@ -9478,6 +9560,7 @@ broken-packages:
   - rope
   - rose-trees
   - rose-trie
+  - rosebud
   - roshask
   - rosmsg
   - rosmsg-bin
@@ -9520,6 +9603,7 @@ broken-packages:
   - runhs
   - runmany
   - runtime-arbitrary
+  - rv
   - rws
   - RxHaskell
   - s-expression
@@ -9627,6 +9711,7 @@ broken-packages:
   - scp-streams
   - scrabble-bot
   - scrapbook
+  - scrapbook-core
   - scrape-changes
   - ScratchFs
   - script-monad
@@ -9694,6 +9779,7 @@ broken-packages:
   - serv-wai
   - servant-aeson-specs
   - servant-auth-cookie
+  - servant-auth-docs
   - servant-auth-hmac
   - servant-auth-token
   - servant-auth-token-acid
@@ -9704,6 +9790,8 @@ broken-packages:
   - servant-auth-wordpress
   - servant-avro
   - servant-cassava
+  - servant-checked-exceptions
+  - servant-checked-exceptions-core
   - servant-cli
   - servant-client-js
   - servant-client-namedargs
@@ -9711,6 +9799,7 @@ broken-packages:
   - servant-db
   - servant-db-postgresql
   - servant-dhall
+  - servant-docs
   - servant-docs-simple
   - servant-ede
   - servant-ekg
@@ -9722,6 +9811,7 @@ broken-packages:
   - servant-github
   - servant-haxl-client
   - servant-hmac-auth
+  - servant-http-streams
   - servant-http2-client
   - servant-iCalendar
   - servant-jquery
@@ -9730,6 +9820,7 @@ broken-packages:
   - servant-kotlin
   - servant-matrix-param
   - servant-mock
+  - servant-multipart
   - servant-namedargs
   - servant-nix
   - servant-openapi3
@@ -9744,6 +9835,7 @@ broken-packages:
   - servant-py
   - servant-quickcheck
   - servant-rawm-client
+  - servant-rawm-docs
   - servant-reason
   - servant-reflex
   - servant-router
@@ -9779,6 +9871,7 @@ broken-packages:
   - Set
   - set-of
   - set-with
+  - setdown
   - setgame
   - setoid
   - setters
@@ -9839,7 +9932,10 @@ broken-packages:
   - show-prettyprint
   - showdown
   - Shpadoinkle-backend-pardiff
+  - Shpadoinkle-backend-snabbdom
   - Shpadoinkle-backend-static
+  - Shpadoinkle-developer-tools
+  - Shpadoinkle-disembodied
   - Shpadoinkle-examples
   - Shpadoinkle-html
   - Shpadoinkle-router
@@ -9852,6 +9948,7 @@ broken-packages:
   - sifflet
   - sifflet-lib
   - sigma-ij
+  - sign
   - signable
   - signals
   - signed-multiset
@@ -9915,6 +10012,7 @@ broken-packages:
   - sized-vector
   - sizes
   - sjsp
+  - SJW
   - skeletal-set
   - skeleton
   - skeletons
@@ -9938,6 +10036,7 @@ broken-packages:
   - slot-lambda
   - sloth
   - slug
+  - slynx
   - small-bytearray-builder
   - smallarray
   - smallcheck-kind-generics
@@ -10004,6 +10103,7 @@ broken-packages:
   - snaplet-mongodb-minimalistic
   - snaplet-mysql-simple
   - snaplet-oauth
+  - snaplet-persistent
   - snaplet-postgresql-simple
   - snaplet-postmark
   - snaplet-purescript
@@ -10125,6 +10225,7 @@ broken-packages:
   - sql-simple-sqlite
   - sqlcipher
   - sqlite
+  - sqlite-simple-errors
   - sqlite-simple-typed
   - sqlvalue-list
   - sqsd-local
@@ -10156,6 +10257,7 @@ broken-packages:
   - stack-run-auto
   - stack-type
   - stack-wrapper
+  - stack2cabal
   - stack2nix
   - stackage
   - stackage-build-plan
@@ -10256,6 +10358,7 @@ broken-packages:
   - streaming-utils
   - streaming-with
   - streamly-archive
+  - streamly-lmdb
   - streamproc
   - strelka
   - strict-base-types
@@ -10267,10 +10370,12 @@ broken-packages:
   - strictly
   - string-isos
   - string-quote
+  - string-random
   - string-typelits
   - stringlike
   - stringtable-atom
   - stripe
+  - stripe-hs
   - stripe-http-streams
   - stripe-scotty
   - stripe-wreq
@@ -10329,6 +10434,7 @@ broken-packages:
   - svg2q
   - svgcairo
   - SVGFonts
+  - svgone
   - svgutils
   - svm-light-utils
   - svm-simple
@@ -10359,6 +10465,7 @@ broken-packages:
   - symantic-http-server
   - symantic-http-test
   - symantic-lib
+  - symantic-parser
   - symantic-xml
   - symbiote
   - symbolic-link
@@ -10397,6 +10504,7 @@ broken-packages:
   - t3-server
   - ta
   - table
+  - table-layout
   - table-tennis
   - tableaux
   - Tables
@@ -10445,6 +10553,7 @@ broken-packages:
   - tasty-laws
   - tasty-lens
   - tasty-mgolden
+  - tasty-silver
   - tasty-stats
   - tateti-tateti
   - Taxonomy
@@ -10493,6 +10602,7 @@ broken-packages:
   - tensorflow-logging
   - tensorflow-opgen
   - tensorflow-ops
+  - term-rewriting
   - termbox-banana
   - termbox-bindings
   - terminal-text
@@ -10582,9 +10692,9 @@ broken-packages:
   - thih
   - thimk
   - Thingie
+  - thock
   - thorn
   - threadmanager
-  - threadscope
   - threepenny-editors
   - threepenny-gui-contextmenu
   - threepenny-gui-flexbox
@@ -10646,6 +10756,7 @@ broken-packages:
   - tkhs
   - tkyprof
   - tls-extra
+  - tlynx
   - tmp-postgres
   - tn
   - to-haskell
@@ -10667,6 +10778,8 @@ broken-packages:
   - tomato-rubato-openal
   - toml
   - tonatona-google-server-api
+  - tonatona-persistent-postgresql
+  - tonatona-persistent-sqlite
   - tonatona-servant
   - too-many-cells
   - toodles
@@ -10760,6 +10873,7 @@ broken-packages:
   - tsvsql
   - tsweb
   - ttask
+  - ttn-client
   - tttool
   - tubes
   - tuntap
@@ -10888,15 +11002,25 @@ broken-packages:
   - unicode-prelude
   - unicode-show
   - unicode-symbols
+  - unicode-tricks
   - uniform-io
   - union
   - union-map
+  - uniprot-kb
   - uniqueid
   - uniquely-represented-sets
   - units-attoparsec
   - unittyped
   - unitym-yesod
   - universal-binary
+  - universe
+  - universe-base
+  - universe-dependent-sum
+  - universe-instances-base
+  - universe-instances-extended
+  - universe-instances-trans
+  - universe-reverse-instances
+  - universe-some
   - universe-th
   - unix-fcntl
   - unix-handle
@@ -11210,6 +11334,7 @@ broken-packages:
   - whitespace
   - whois
   - why3
+  - wide-word
   - WikimediaParser
   - wikipedia4epub
   - wild-bind-indicator
@@ -11237,6 +11362,7 @@ broken-packages:
   - woffex
   - wol
   - wolf
+  - word
   - word2vec-model
   - WordAlignment
   - wordchoice
@@ -11457,6 +11583,7 @@ broken-packages:
   - yesod-mangopay
   - yesod-markdown
   - yesod-media-simple
+  - yesod-page-cursor
   - yesod-paginate
   - yesod-pagination
   - yesod-paypal-rest
@@ -11523,6 +11650,7 @@ broken-packages:
   - yu-tool
   - yu-utils
   - yuuko
+  - yx
   - yxdb-utils
   - Z-Data
   - Z-IO
diff --git a/pkgs/development/haskell-modules/configuration-nix.nix b/pkgs/development/haskell-modules/configuration-nix.nix
index 9cc048125172..6d4e16f83786 100644
--- a/pkgs/development/haskell-modules/configuration-nix.nix
+++ b/pkgs/development/haskell-modules/configuration-nix.nix
@@ -94,16 +94,6 @@ self: super: builtins.intersectAttrs super {
   # Won't find it's header files without help.
   sfml-audio = appendConfigureFlag super.sfml-audio "--extra-include-dirs=${pkgs.openal}/include/AL";
 
-  # profiling is disabled to allow C++/C mess to work, which is fixed in GHC 8.8
-  cachix = overrideSrc (disableLibraryProfiling super.cachix) {
-    src = (pkgs.fetchFromGitHub {
-      owner = "cachix";
-      repo = "cachix";
-      rev = "1471050f5906ecb7cd0d72115503d07d2e3beb17";
-      sha256 = "1lkrmhv5x9dpy53w33kxnhv4x4qm711ha8hsgccrjmxaqcsdm59g";
-    }) + "/cachix";
-    version = "0.5.1";
-  };
   hercules-ci-agent = disableLibraryProfiling super.hercules-ci-agent;
 
   # avoid compiling twice by providing executable as a separate output (with small closure size)
@@ -808,4 +798,7 @@ self: super: builtins.intersectAttrs super {
 
   # tests depend on a specific version of solc
   hevm = dontCheck (doJailbreak super.hevm);
+
+  # waiting for https://github.com/haskell/ThreadScope/pull/115
+  threadscope = doJailbreak super.threadscope;
 }
diff --git a/pkgs/development/haskell-modules/hackage-packages.nix b/pkgs/development/haskell-modules/hackage-packages.nix
index 73090f7737bb..ef86756d4826 100644
--- a/pkgs/development/haskell-modules/hackage-packages.nix
+++ b/pkgs/development/haskell-modules/hackage-packages.nix
@@ -6026,6 +6026,8 @@ self: {
        ];
        description = "Finite totally-ordered sets";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "Finance-Quote-Yahoo" = callPackage
@@ -7899,10 +7901,8 @@ self: {
      }:
      mkDerivation {
        pname = "HCL";
-       version = "1.7.1";
-       sha256 = "1rwg7sqm16rszv7grw2d7cnhllnrifnd9jjxn0p8n5qznv8m8vkp";
-       revision = "1";
-       editedCabalFile = "1gl61kqccd909dif3644qi1whrcbkrfif6d52hrlf2vc3kwpjs0z";
+       version = "1.8";
+       sha256 = "1h5mrrpr6kma8k0mqzzjcyg3nd94f7lv6a2k5pfxcqs01qy3khgk";
        isLibrary = true;
        isExecutable = true;
        enableSeparateDataOutput = true;
@@ -12697,8 +12697,8 @@ self: {
      }:
      mkDerivation {
        pname = "ListLike";
-       version = "4.7.3";
-       sha256 = "1vk5mbpxzwzcnc4cgw3hvqn0g0pcq97hw4f3i2ki3hn3svap535a";
+       version = "4.7.4";
+       sha256 = "170yrz008ya4haj0i8z1c7ydjg8hcw3i9cqs6abainh8zxvc1lqi";
        libraryHaskellDepends = [
          array base bytestring containers deepseq dlist fmlist text
          utf8-string vector
@@ -16995,15 +16995,16 @@ self: {
      }) {};
 
   "Rattus" = callPackage
-    ({ mkDerivation, base, Cabal, containers, ghc, simple-affine-space
+    ({ mkDerivation, base, Cabal, containers, ghc, ghc-prim
+     , simple-affine-space
      }:
      mkDerivation {
        pname = "Rattus";
-       version = "0.3.1";
-       sha256 = "1sfjnfd3jsr095gkzxldb65ivxpyzsaphw2bv2f6svczhjc5b414";
+       version = "0.4";
+       sha256 = "1sgr33yq5l43k3b8nwx7m6wrygv5k8d8yigzms3p6pq5pk3g5sq1";
        setupHaskellDepends = [ base Cabal ];
        libraryHaskellDepends = [
-         base containers ghc simple-affine-space
+         base containers ghc ghc-prim simple-affine-space
        ];
        testHaskellDepends = [ base containers ];
        description = "A modal FRP language";
@@ -17608,6 +17609,8 @@ self: {
        benchmarkHaskellDepends = [ base directory filepath random time ];
        description = "The Simple Javascript Wrench";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "SMTPClient" = callPackage
@@ -18303,35 +18306,35 @@ self: {
      }) {};
 
   "Shpadoinkle" = callPackage
-    ({ mkDerivation, base, category, ghcjs-dom, jsaddle, jsaddle-warp
-     , text, transformers, unliftio
+    ({ mkDerivation, base, category, containers, ghcjs-dom, jsaddle
+     , jsaddle-warp, text, transformers, unliftio, wai, wai-app-static
+     , warp
      }:
      mkDerivation {
        pname = "Shpadoinkle";
-       version = "0.2.0.0";
-       sha256 = "10dgd5723mc7nbwvvzvl5jy09wdcjwhi0miyvgkr7jgppkg402dl";
+       version = "0.3.0.0";
+       sha256 = "083ly6xpdcf7wgrb3shcw26zk0d8rm8issyvki1rwvd29rwj0k41";
        libraryHaskellDepends = [
-         base category ghcjs-dom jsaddle jsaddle-warp text transformers
-         unliftio
+         base category containers ghcjs-dom jsaddle jsaddle-warp text
+         transformers unliftio wai wai-app-static warp
        ];
        description = "A programming model for declarative, high performance user interface";
        license = stdenv.lib.licenses.bsd3;
      }) {};
 
   "Shpadoinkle-backend-pardiff" = callPackage
-    ({ mkDerivation, base, compactable, containers, file-embed
-     , ghcjs-dom, jsaddle, lens, monad-control, mtl, neat-interpolation
-     , random, semialign, Shpadoinkle, text, these, transformers-base
-     , unliftio, uuid
+    ({ mkDerivation, base, compactable, containers, exceptions
+     , file-embed, ghcjs-dom, jsaddle, lens, monad-control, mtl, random
+     , semialign, Shpadoinkle, text, these, transformers-base, unliftio
      }:
      mkDerivation {
        pname = "Shpadoinkle-backend-pardiff";
-       version = "0.2.0.0";
-       sha256 = "1dkj035k1kwhgd9z7p9jhbnahd9d8mb16ydgd1l7xnrfxg215zsq";
+       version = "0.3.0.0";
+       sha256 = "1m12m4qbivh0srdzwzcqr8s6s1hi1blk3x15ljv5c9viriznfy6z";
        libraryHaskellDepends = [
-         base compactable containers file-embed ghcjs-dom jsaddle lens
-         monad-control mtl neat-interpolation random semialign Shpadoinkle
-         text these transformers-base unliftio uuid
+         base compactable containers exceptions file-embed ghcjs-dom jsaddle
+         lens monad-control mtl random semialign Shpadoinkle text these
+         transformers-base unliftio
        ];
        description = "A Virtual Dom in pure Haskell, based on Html as an Alignable Functor";
        license = stdenv.lib.licenses.bsd3;
@@ -18340,26 +18343,30 @@ self: {
      }) {};
 
   "Shpadoinkle-backend-snabbdom" = callPackage
-    ({ mkDerivation, base, file-embed, ghcjs-dom, jsaddle, mtl
-     , Shpadoinkle, text, unliftio
+    ({ mkDerivation, base, exceptions, file-embed, ghcjs-dom, jsaddle
+     , monad-control, mtl, Shpadoinkle, text, transformers-base
+     , unliftio
      }:
      mkDerivation {
        pname = "Shpadoinkle-backend-snabbdom";
-       version = "0.2.0.0";
-       sha256 = "1zhxj26i711218ixfclmakjv943gkkmvjvvvi5ya4p26bjaw7p3x";
+       version = "0.3.0.0";
+       sha256 = "0ff87nxa7ff3j400k5a65in8jj00m6bk46pmana0a8k1d7ln7fsk";
        libraryHaskellDepends = [
-         base file-embed ghcjs-dom jsaddle mtl Shpadoinkle text unliftio
+         base exceptions file-embed ghcjs-dom jsaddle monad-control mtl
+         Shpadoinkle text transformers-base unliftio
        ];
        description = "Use the high-performance Snabbdom virtual dom library written in JavaScript";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "Shpadoinkle-backend-static" = callPackage
     ({ mkDerivation, base, compactable, Shpadoinkle, text }:
      mkDerivation {
        pname = "Shpadoinkle-backend-static";
-       version = "0.1.0.2";
-       sha256 = "0sfj092lhmkzrjvklpvbcldpc3wfp8d1n5jw7gpdzqs8fcpffz8q";
+       version = "0.2.0.0";
+       sha256 = "0kxfsm4g6mwwcrpq8bm83v32jpp97bsvl6ay0ynnmss0yf70ymmi";
        libraryHaskellDepends = [ base compactable Shpadoinkle text ];
        description = "A backend for rendering Shpadoinkle as Text";
        license = stdenv.lib.licenses.bsd3;
@@ -18371,8 +18378,8 @@ self: {
     ({ mkDerivation, aeson, base, jsaddle, lens, text, unliftio }:
      mkDerivation {
        pname = "Shpadoinkle-console";
-       version = "0.0.1.1";
-       sha256 = "0gs21vkmxxnk3ybzasjgcrhraiyjbab3xkpzp4266h54wz1r5grj";
+       version = "0.0.1.3";
+       sha256 = "0zkiv0h37a3x3569xfvfzdy0dywxhcfx12jddqf9bpfyqsxmf42a";
        libraryHaskellDepends = [ aeson base jsaddle lens text unliftio ];
        description = "Support for the native browser console";
        license = stdenv.lib.licenses.bsd3;
@@ -18389,30 +18396,77 @@ self: {
        license = stdenv.lib.licenses.bsd3;
      }) {};
 
+  "Shpadoinkle-developer-tools" = callPackage
+    ({ mkDerivation, base, containers, jsaddle, lens, pretty-show
+     , Shpadoinkle, Shpadoinkle-backend-pardiff, Shpadoinkle-html, stm
+     , text, time, unliftio
+     }:
+     mkDerivation {
+       pname = "Shpadoinkle-developer-tools";
+       version = "0.0.0.1";
+       sha256 = "14lcmxkaxsa42dcyn13cb83lfw48n7139gvppsngzrbn1w9lwrl0";
+       isLibrary = true;
+       isExecutable = true;
+       libraryHaskellDepends = [
+         base containers jsaddle lens pretty-show Shpadoinkle
+         Shpadoinkle-backend-pardiff Shpadoinkle-html stm text time unliftio
+       ];
+       executableHaskellDepends = [
+         base containers jsaddle lens pretty-show Shpadoinkle
+         Shpadoinkle-backend-pardiff Shpadoinkle-html stm text time unliftio
+       ];
+       description = "Chrome extension to aide in development";
+       license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
+     }) {};
+
+  "Shpadoinkle-disembodied" = callPackage
+    ({ mkDerivation, base, directory, filepath, servant, Shpadoinkle
+     , Shpadoinkle-backend-static, Shpadoinkle-html, Shpadoinkle-router
+     , text, unliftio
+     }:
+     mkDerivation {
+       pname = "Shpadoinkle-disembodied";
+       version = "0.0.0.1";
+       sha256 = "0hiwiv4l1k1al0d9fjk48fay6c33shf213yc9blwm15mfj5kh77c";
+       libraryHaskellDepends = [
+         base directory filepath servant Shpadoinkle
+         Shpadoinkle-backend-static Shpadoinkle-html Shpadoinkle-router text
+         unliftio
+       ];
+       description = "Shpadoinkle as a static site";
+       license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
+     }) {};
+
   "Shpadoinkle-examples" = callPackage
     ({ mkDerivation, aeson, base, beam-core, beam-sqlite, bytestring
-     , containers, ease, exceptions, file-embed, generic-lens, ghcjs-dom
-     , jsaddle, lens, mtl, optparse-applicative, safe, servant
-     , servant-client, servant-server, Shpadoinkle
-     , Shpadoinkle-backend-pardiff, Shpadoinkle-backend-static
+     , containers, ease, exceptions, file-embed, generic-lens
+     , generic-monoid, ghcjs-dom, jsaddle, lens, mtl
+     , optparse-applicative, pretty-show, safe, servant, servant-client
+     , servant-server, Shpadoinkle, Shpadoinkle-backend-pardiff
+     , Shpadoinkle-backend-snabbdom, Shpadoinkle-backend-static
      , Shpadoinkle-console, Shpadoinkle-html, Shpadoinkle-lens
      , Shpadoinkle-router, Shpadoinkle-widgets, split, sqlite-simple
      , stm, text, unliftio, wai, wai-app-static, warp
      }:
      mkDerivation {
        pname = "Shpadoinkle-examples";
-       version = "0.0.0.2";
-       sha256 = "1nj5wl8liw9q89hrry6dpvsw32sc27nplxfcwkyfkwjyqaxp5sfh";
+       version = "0.0.0.3";
+       sha256 = "1ym3wnqqj07v0w07af6z9yiccx95bbljna36z37pz8gp35dxamlh";
        isLibrary = false;
        isExecutable = true;
        executableHaskellDepends = [
          aeson base beam-core beam-sqlite bytestring containers ease
-         exceptions file-embed generic-lens ghcjs-dom jsaddle lens mtl
-         optparse-applicative safe servant servant-client servant-server
-         Shpadoinkle Shpadoinkle-backend-pardiff Shpadoinkle-backend-static
-         Shpadoinkle-console Shpadoinkle-html Shpadoinkle-lens
-         Shpadoinkle-router Shpadoinkle-widgets split sqlite-simple stm text
-         unliftio wai wai-app-static warp
+         exceptions file-embed generic-lens generic-monoid ghcjs-dom jsaddle
+         lens mtl optparse-applicative pretty-show safe servant
+         servant-client servant-server Shpadoinkle
+         Shpadoinkle-backend-pardiff Shpadoinkle-backend-snabbdom
+         Shpadoinkle-backend-static Shpadoinkle-console Shpadoinkle-html
+         Shpadoinkle-lens Shpadoinkle-router Shpadoinkle-widgets split
+         sqlite-simple stm text unliftio wai wai-app-static warp
        ];
        description = "Example usages of Shpadoinkle";
        license = stdenv.lib.licenses.bsd3;
@@ -18422,16 +18476,17 @@ self: {
 
   "Shpadoinkle-html" = callPackage
     ({ mkDerivation, base, bytestring, compactable, containers
-     , ghcjs-dom, jsaddle, regex-pcre, Shpadoinkle, stm
-     , template-haskell, text, time, transformers, unliftio
+     , ghcjs-dom, jsaddle, lens, raw-strings-qq, regex-pcre, Shpadoinkle
+     , stm, template-haskell, text, time, transformers, unliftio
      }:
      mkDerivation {
        pname = "Shpadoinkle-html";
-       version = "0.2.0.1";
-       sha256 = "1dk17v1c6nv2p3zzg09gmv4qvpjmlx782a6gx7whx9p28037v34f";
+       version = "0.3.0.0";
+       sha256 = "17n675m9gqfhi2rd8c60bcbljd4nknfrwb02zlw9jwgj1kv7l06k";
        libraryHaskellDepends = [
-         base bytestring compactable containers ghcjs-dom jsaddle regex-pcre
-         Shpadoinkle stm template-haskell text time transformers unliftio
+         base bytestring compactable containers ghcjs-dom jsaddle lens
+         raw-strings-qq regex-pcre Shpadoinkle stm template-haskell text
+         time transformers unliftio
        ];
        description = "A typed, template generated Html DSL, and helpers";
        license = stdenv.lib.licenses.bsd3;
@@ -18443,8 +18498,8 @@ self: {
     ({ mkDerivation, base, lens, Shpadoinkle, text }:
      mkDerivation {
        pname = "Shpadoinkle-lens";
-       version = "0.0.0.2";
-       sha256 = "00zd6m9lvskbf7w4bnqhhy59gz9169rzmd1x8y4lxckjda172sqr";
+       version = "0.0.0.3";
+       sha256 = "1310ipmw2z8gdnvaqx1bydvc4p1iyhc7xv31vwbx2aszhmi873kq";
        libraryHaskellDepends = [ base lens Shpadoinkle text ];
        description = "Lens combinators for Shpadoinkle applications";
        license = stdenv.lib.licenses.bsd3;
@@ -18452,19 +18507,19 @@ self: {
 
   "Shpadoinkle-router" = callPackage
     ({ mkDerivation, aeson, base, bytestring, compactable, exceptions
-     , ghcjs-dom, http-api-data, http-media, jsaddle, lens, network-uri
-     , servant, servant-client, servant-client-js, servant-server
-     , Shpadoinkle, Shpadoinkle-backend-static, text, unliftio, wai
-     , wai-app-static, warp
+     , ghcjs-dom, http-api-data, http-media, jsaddle, jsaddle-warp, lens
+     , network-uri, servant, servant-client, servant-client-js
+     , servant-server, Shpadoinkle, Shpadoinkle-backend-static, text
+     , unliftio, wai, wai-app-static, warp
      }:
      mkDerivation {
        pname = "Shpadoinkle-router";
-       version = "0.2.0.0";
-       sha256 = "024g9s01kjzvxq6yfhi640v1zly6wvk3v8m3xzxi4flgff2syf8b";
+       version = "0.2.0.1";
+       sha256 = "0qbjczrfvcihm595rsp1k6svgr05vcrcmc9376wy5vrdwnimvn58";
        libraryHaskellDepends = [
          aeson base bytestring compactable exceptions ghcjs-dom
-         http-api-data http-media jsaddle lens network-uri servant
-         servant-client servant-client-js servant-server Shpadoinkle
+         http-api-data http-media jsaddle jsaddle-warp lens network-uri
+         servant servant-client servant-client-js servant-server Shpadoinkle
          Shpadoinkle-backend-static text unliftio wai wai-app-static warp
        ];
        description = "A single page application rounter for Shpadoinkle based on Servant";
@@ -18476,19 +18531,22 @@ self: {
   "Shpadoinkle-widgets" = callPackage
     ({ mkDerivation, aeson, base, compactable, containers
      , edit-distance, email-validate, hspec, jsaddle, mtl, QuickCheck
-     , Shpadoinkle, Shpadoinkle-html, stm, template-haskell, text
-     , unliftio
+     , quickcheck-classes, quickcheck-classes-base, Shpadoinkle
+     , Shpadoinkle-html, stm, template-haskell, text, unliftio
      }:
      mkDerivation {
        pname = "Shpadoinkle-widgets";
-       version = "0.1.0.0";
-       sha256 = "1w1ibm75288rh001bxkdp04hidx8lkz4p4id91bjadsax8chy718";
+       version = "0.2.0.0";
+       sha256 = "0q82m3gffcw89xyl0h9ayp2v4k9l1zwpnlpq7kvirl1ahhp2iypy";
        libraryHaskellDepends = [
          aeson base compactable containers edit-distance email-validate
          jsaddle mtl Shpadoinkle Shpadoinkle-html stm template-haskell text
          unliftio
        ];
-       testHaskellDepends = [ base containers hspec QuickCheck ];
+       testHaskellDepends = [
+         base containers hspec QuickCheck quickcheck-classes
+         quickcheck-classes-base
+       ];
        description = "A collection of common reusable types and components";
        license = stdenv.lib.licenses.bsd3;
        hydraPlatforms = stdenv.lib.platforms.none;
@@ -22679,6 +22737,21 @@ self: {
        hydraPlatforms = stdenv.lib.platforms.none;
      }) {};
 
+  "accelerate-io-serialise" = callPackage
+    ({ mkDerivation, accelerate, accelerate-io-bytestring, base
+     , serialise
+     }:
+     mkDerivation {
+       pname = "accelerate-io-serialise";
+       version = "0.1.0.0";
+       sha256 = "1i85x6dqz7ihvi8b9rnlgjqnliq98cbv5fd1pf03n18kdbflzvm8";
+       libraryHaskellDepends = [
+         accelerate accelerate-io-bytestring base serialise
+       ];
+       description = "Binary serialisation of Accelerate arrays using serialise";
+       license = stdenv.lib.licenses.bsd3;
+     }) {};
+
   "accelerate-io-vector" = callPackage
     ({ mkDerivation, accelerate, base, hedgehog, primitive, tasty
      , tasty-hedgehog, vector
@@ -24213,8 +24286,8 @@ self: {
      }:
      mkDerivation {
        pname = "aeson";
-       version = "1.5.4.1";
-       sha256 = "1zgycrai15vlf6drphcb2ff8fs7s6g6hjyxi20h98qkzij5drb0d";
+       version = "1.5.5.1";
+       sha256 = "0iqnzh9xh2vx9viqvs528i24zm9sdpvh8kjbpfxgrca38v6ds5m2";
        libraryHaskellDepends = [
          attoparsec base base-compat-batteries bytestring containers
          data-fix deepseq dlist ghc-prim hashable primitive scientific
@@ -25952,10 +26025,8 @@ self: {
      }:
      mkDerivation {
        pname = "alex-tools";
-       version = "0.5";
-       sha256 = "06ghkigqabz9h17wjpc3jwv1f4k6fajpzblzvysqzg71pfncx88m";
-       revision = "1";
-       editedCabalFile = "0br92hrl0pxw2a5k9wgzk3zwyz2dimcwwjxijgzrd2yg0s1vnm9p";
+       version = "0.5.0.1";
+       sha256 = "0rc56hvmlnym620pc8i7539wig50glms537kcwlmhd89c9cib8iy";
        libraryHaskellDepends = [
          base bytestring deepseq template-haskell text
        ];
@@ -30064,6 +30135,8 @@ self: {
        ];
        description = "sdl-like functions for terminal applications, based on ansi-terminal";
        license = stdenv.lib.licenses.gpl3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "ansi-wl-pprint" = callPackage
@@ -31693,6 +31766,8 @@ self: {
        ];
        description = "Easy-to-use reasonable way of emulating approximate in Haskell";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "approx-rand-test" = callPackage
@@ -31985,10 +32060,8 @@ self: {
      }:
      mkDerivation {
        pname = "arbtt";
-       version = "0.10.2";
-       sha256 = "02izfga7nv2saq4d1xwigq41hhbc02830sjppqsqw6vcb8082vs1";
-       revision = "2";
-       editedCabalFile = "138lacpwzf5xc1cbxric90k1yn0g91hz0vm2v50pbbr7jr2147km";
+       version = "0.10.4";
+       sha256 = "18lpwhkhw0nxzif9dyc29b9s8i0v26y9vdgh0laj3z9yyp805syc";
        isLibrary = false;
        isExecutable = true;
        executableHaskellDepends = [
@@ -32004,8 +32077,6 @@ self: {
        ];
        description = "Automatic Rule-Based Time Tracker";
        license = stdenv.lib.licenses.gpl2;
-       hydraPlatforms = stdenv.lib.platforms.none;
-       broken = true;
      }) {};
 
   "arcgrid" = callPackage
@@ -34805,14 +34876,16 @@ self: {
      }) {};
 
   "attoparsec-iso8601" = callPackage
-    ({ mkDerivation, attoparsec, base, base-compat, text, time }:
+    ({ mkDerivation, attoparsec, base, base-compat-batteries, text
+     , time, time-compat
+     }:
      mkDerivation {
        pname = "attoparsec-iso8601";
-       version = "1.0.1.0";
-       sha256 = "0hj10w15qp2z5bz2v4xahhmbgzclpyfi5l2sv97wqycysg9gp7s9";
-       revision = "1";
-       editedCabalFile = "1rjhscmczgs1bwyqx7lvkm8py3ylxjd2797mrzgnq60fvm292750";
-       libraryHaskellDepends = [ attoparsec base base-compat text time ];
+       version = "1.0.2.0";
+       sha256 = "162gc101mwhmjbfhhv1wm3yvk2h4ra34wpw5x87735cfqxvjv582";
+       libraryHaskellDepends = [
+         attoparsec base base-compat-batteries text time time-compat
+       ];
        description = "Parsing of ISO 8601 dates, originally from aeson";
        license = stdenv.lib.licenses.bsd3;
      }) {};
@@ -38244,6 +38317,8 @@ self: {
        ];
        description = "Basic examples and functions for generics-sop";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "baskell" = callPackage
@@ -40993,6 +41068,8 @@ self: {
        libraryHaskellDepends = [ base bindings-DSL ];
        description = "Low level bindings to libpci";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "bindings-librrd" = callPackage
@@ -41582,17 +41659,17 @@ self: {
   "bioinformatics-toolkit" = callPackage
     ({ mkDerivation, aeson, aeson-pretty, attoparsec, base, bytestring
      , bytestring-lexing, case-insensitive, clustering, conduit
-     , conduit-combinators, conduit-extra, containers, criterion
-     , data-default-class, data-ordlist, double-conversion, hexpat
-     , HsHTSLib, http-conduit, IntervalMap, math-functions, matrices
-     , microlens, microlens-th, mtl, parallel, primitive, random, split
-     , statistics, tasty, tasty-golden, tasty-hunit, text, transformers
+     , conduit-extra, containers, criterion, data-default-class
+     , data-ordlist, double-conversion, hexpat, HsHTSLib, http-conduit
+     , IntervalMap, math-functions, matrices, microlens, microlens-th
+     , mtl, parallel, primitive, random, split, statistics, tasty
+     , tasty-golden, tasty-hunit, text, transformers
      , unordered-containers, vector, vector-algorithms, word8
      }:
      mkDerivation {
        pname = "bioinformatics-toolkit";
-       version = "0.9.3.1";
-       sha256 = "106aiq3147zrd6dh689zamqi8q03cfvsmsvjlivwcdgybg7zrdr4";
+       version = "0.9.5";
+       sha256 = "03nra5ngirlkfm9xhndiwsl51ixcgp5rf7xfwgvw0bfvzddrc6i9";
        enableSeparateDataOutput = true;
        libraryHaskellDepends = [
          aeson aeson-pretty attoparsec base bytestring bytestring-lexing
@@ -41603,8 +41680,8 @@ self: {
          transformers unordered-containers vector vector-algorithms word8
        ];
        testHaskellDepends = [
-         base bytestring conduit conduit-combinators data-default-class
-         matrices microlens mtl random tasty tasty-golden tasty-hunit
+         base bytestring conduit conduit-extra data-default-class matrices
+         microlens mtl random tasty tasty-golden tasty-hunit
          unordered-containers vector
        ];
        benchmarkHaskellDepends = [
@@ -41833,8 +41910,8 @@ self: {
      }:
      mkDerivation {
        pname = "bishbosh";
-       version = "0.0.0.7";
-       sha256 = "1ihnq7smjk0d18gmkgl70qzqwljmb5nr9hhzwfmkakh3p2x24g3i";
+       version = "0.0.0.8";
+       sha256 = "0mk0mki02m8nvk667wbrk954qnb6qxdfzyz10bfcyvfbz1afg702";
        isLibrary = true;
        isExecutable = true;
        enableSeparateDataOutput = true;
@@ -42713,8 +42790,8 @@ self: {
      }:
      mkDerivation {
        pname = "bitwise-enum";
-       version = "1.0.0.2";
-       sha256 = "1y63qpxkh8k019vj2b1qz1jnssld5lik5cjhf6dzj2bal4013lii";
+       version = "1.0.0.3";
+       sha256 = "0ykrr8x1hc1lsj8cn19jcypvww4598g1v0vrn3z3b7n6hp6wfyis";
        libraryHaskellDepends = [
          aeson array base deepseq mono-traversable vector
        ];
@@ -45615,6 +45692,8 @@ self: {
        ];
        description = "Brotli (RFC7932) compression and decompression";
        license = stdenv.lib.licenses.gpl3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {inherit (pkgs) brotli;};
 
   "brotli-conduit" = callPackage
@@ -45657,6 +45736,8 @@ self: {
        ];
        description = "IO-Streams interface for Brotli (RFC7932) compression";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "browscap" = callPackage
@@ -49246,33 +49327,51 @@ self: {
        broken = true;
      }) {};
 
+  "caching-vault" = callPackage
+    ({ mkDerivation, base, hspec, stm, stm-containers, text, time
+     , timespan
+     }:
+     mkDerivation {
+       pname = "caching-vault";
+       version = "0.1.0.0";
+       sha256 = "1wqk7gfkpsry21d0qn6qjjrr7n6cj3raddx76nmhgy5xn8q36vbr";
+       libraryHaskellDepends = [ base stm stm-containers text time ];
+       testHaskellDepends = [
+         base hspec stm stm-containers text time timespan
+       ];
+       description = "A vault-style cache implementation";
+       license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
+     }) {};
+
   "cachix" = callPackage
     ({ mkDerivation, async, base, base64-bytestring, boost, bytestring
-     , cachix-api, conduit, conduit-extra, containers, cookie
-     , cryptonite, dhall, directory, ed25519, filepath, fsnotify, here
-     , hspec, hspec-discover, http-client, http-client-tls, http-conduit
-     , http-types, inline-c, inline-c-cpp, lzma-conduit, megaparsec
-     , memory, mmorph, netrc, nix, optparse-applicative, process
-     , protolude, resourcet, retry, safe-exceptions, servant
+     , cachix-api, concurrent-extra, conduit, conduit-extra, containers
+     , cookie, cryptonite, dhall, directory, ed25519, filepath, fsnotify
+     , here, hspec, hspec-discover, http-client, http-client-tls
+     , http-conduit, http-types, inline-c, inline-c-cpp, lzma-conduit
+     , megaparsec, memory, mmorph, netrc, nix, optparse-applicative
+     , process, protolude, resourcet, retry, safe-exceptions, servant
      , servant-auth, servant-auth-client, servant-client
-     , servant-client-core, servant-conduit, temporary, text, unix
+     , servant-client-core, servant-conduit, stm, temporary, text, unix
      , uri-bytestring, vector, versions
      }:
      mkDerivation {
        pname = "cachix";
-       version = "0.5.1";
-       sha256 = "13xl87jgpa1swgppr86dylp8ndisasdr8zcmk1l2jjb7vgyly8mb";
+       version = "0.6.0";
+       sha256 = "1ay3k2npnplvgc44vn3zcyd5rgyfigvij4zil3nwrpdi0psd76nl";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
-         async base base64-bytestring bytestring cachix-api conduit
-         conduit-extra containers cookie cryptonite dhall directory ed25519
-         filepath fsnotify here http-client http-client-tls http-conduit
-         http-types inline-c inline-c-cpp lzma-conduit megaparsec memory
-         mmorph netrc optparse-applicative process protolude resourcet retry
-         safe-exceptions servant servant-auth servant-auth-client
-         servant-client servant-client-core servant-conduit text unix
-         uri-bytestring vector versions
+         async base base64-bytestring bytestring cachix-api concurrent-extra
+         conduit conduit-extra containers cookie cryptonite dhall directory
+         ed25519 filepath fsnotify here http-client http-client-tls
+         http-conduit http-types inline-c inline-c-cpp lzma-conduit
+         megaparsec memory mmorph netrc optparse-applicative process
+         protolude resourcet retry safe-exceptions servant servant-auth
+         servant-auth-client servant-client servant-client-core
+         servant-conduit stm text unix uri-bytestring vector versions
        ];
        librarySystemDepends = [ boost ];
        libraryPkgconfigDepends = [ nix ];
@@ -49291,27 +49390,26 @@ self: {
      , conduit, cookie, cryptonite, deepseq, exceptions, hspec
      , hspec-discover, http-api-data, http-media, jose, lens, memory
      , nix-narinfo, protolude, resourcet, servant, servant-auth
-     , servant-auth-server, servant-auth-swagger, servant-client
-     , servant-swagger, servant-swagger-ui-core, string-conv, swagger2
-     , text, time, transformers
+     , servant-auth-swagger, servant-client, servant-swagger
+     , servant-swagger-ui-core, string-conv, swagger2, text, time
+     , transformers
      }:
      mkDerivation {
        pname = "cachix-api";
-       version = "0.5.0";
-       sha256 = "14b4vg6wv7kzxkfbh64ml2wvm9w8fyv2k2sm7ncaa0pp0f26pswy";
+       version = "0.6.0";
+       sha256 = "0q6kl5lb05c1m62yqj0d8vimlghhrc3avl3bz5wjp70azs28jcd3";
        libraryHaskellDepends = [
          aeson base base16-bytestring bytestring conduit cookie cryptonite
          deepseq exceptions http-api-data http-media jose lens memory
          nix-narinfo protolude resourcet servant servant-auth
-         servant-auth-server servant-client string-conv swagger2 text time
+         servant-auth-swagger servant-client string-conv swagger2 text time
          transformers
        ];
        testHaskellDepends = [
          aeson base base16-bytestring bytestring conduit cookie cryptonite
          hspec http-api-data http-media lens memory protolude servant
-         servant-auth servant-auth-server servant-auth-swagger
-         servant-swagger servant-swagger-ui-core string-conv swagger2 text
-         transformers
+         servant-auth servant-auth-swagger servant-swagger
+         servant-swagger-ui-core string-conv swagger2 text transformers
        ];
        testToolDepends = [ hspec-discover ];
        description = "Servant HTTP API specification for https://cachix.org";
@@ -52935,15 +53033,13 @@ self: {
      }:
      mkDerivation {
        pname = "chatty";
-       version = "0.7.0.1";
-       sha256 = "0d7cfp3vvrmn7b6lc83j5pi7a90sk1rc1y48zb78f8plipp7ngb6";
-       revision = "1";
-       editedCabalFile = "1vh058qw0wphwn0l1lchhxms96p9bhsjna4j7lyvczmc9ba2mgdp";
+       version = "0.8.0.0";
+       sha256 = "1sq8d1irxrrhrfk874snfvwskh4ng6cm3nain99wcx5d3w4ch3rn";
        libraryHaskellDepends = [
          ansi-terminal base chatty-utils directory mtl process random setenv
          template-haskell text time transformers unix
        ];
-       description = "Some monad transformers and typeclasses for abstraction of global dependencies";
+       description = "Some monad transformers and typeclasses for text in- and output abstraction";
        license = stdenv.lib.licenses.agpl3;
      }) {};
 
@@ -52966,10 +53062,8 @@ self: {
     ({ mkDerivation, base, mtl, text, transformers }:
      mkDerivation {
        pname = "chatty-utils";
-       version = "0.7.3.4";
-       sha256 = "1dp1k641sryzp7zh5l3f8v4dajc71ly8l9fyv1c45cf0s81cxhys";
-       revision = "1";
-       editedCabalFile = "0b1bvxkp1yhw3ws12mkdys5dnml03phzj03sqkrk1289jm5nlfn9";
+       version = "0.7.3.5";
+       sha256 = "1pzg0bf73shwl91x4011khw62wgv33y5862gq110q8g913w4jrjw";
        libraryHaskellDepends = [ base mtl text transformers ];
        description = "Some utilities every serious chatty-based application may need";
        license = stdenv.lib.licenses.agpl3;
@@ -53956,6 +54050,8 @@ self: {
        ];
        description = "Channel/Arrow based streaming computation library";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "cielo" = callPackage
@@ -54305,6 +54401,8 @@ self: {
        benchmarkHaskellDepends = [ base criterion vector ];
        description = "Circular fixed-sized mutable vectors";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "cirru-parser" = callPackage
@@ -60872,24 +60970,6 @@ self: {
 
   "conferer" = callPackage
     ({ mkDerivation, base, bytestring, containers, deepseq, directory
-     , hspec, text
-     }:
-     mkDerivation {
-       pname = "conferer";
-       version = "0.4.1.1";
-       sha256 = "1fi3sflfkzgxzjv5s0w6ja9dqrlc72lli382j6phqdw3h4qja10d";
-       libraryHaskellDepends = [
-         base bytestring containers directory text
-       ];
-       testHaskellDepends = [
-         base bytestring containers deepseq directory hspec text
-       ];
-       description = "Configuration management library";
-       license = stdenv.lib.licenses.mpl20;
-     }) {};
-
-  "conferer_1_0_0_0" = callPackage
-    ({ mkDerivation, base, bytestring, containers, deepseq, directory
      , filepath, hspec, QuickCheck, text
      }:
      mkDerivation {
@@ -60905,7 +60985,6 @@ self: {
        ];
        description = "Configuration management library";
        license = stdenv.lib.licenses.mpl20;
-       hydraPlatforms = stdenv.lib.platforms.none;
      }) {};
 
   "conferer-aeson" = callPackage
@@ -60946,6 +61025,8 @@ self: {
        ];
        description = "Configuration for reading dhall files";
        license = stdenv.lib.licenses.mpl20;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "conferer-hedis" = callPackage
@@ -60964,25 +61045,12 @@ self: {
     ({ mkDerivation, base, conferer, hspec, hspec-core, text }:
      mkDerivation {
        pname = "conferer-hspec";
-       version = "0.4.0.1";
-       sha256 = "1g2dglsvj7caqrvbg1yc08j98ljf71l885kxmmk469ab07j1c5sz";
-       libraryHaskellDepends = [ base conferer hspec-core text ];
-       testHaskellDepends = [ base conferer hspec hspec-core text ];
-       description = "conferer's FromConfig instances for hspec Config";
-       license = stdenv.lib.licenses.mpl20;
-     }) {};
-
-  "conferer-hspec_1_0_0_0" = callPackage
-    ({ mkDerivation, base, conferer, hspec, hspec-core, text }:
-     mkDerivation {
-       pname = "conferer-hspec";
        version = "1.0.0.0";
        sha256 = "02c4z2999pa04r78n8xzx7idvgg028wlb2fgyk0878wb1gahzsxp";
        libraryHaskellDepends = [ base conferer hspec-core text ];
        testHaskellDepends = [ base conferer hspec hspec-core text ];
        description = "conferer's FromConfig instances for hspec Config";
        license = stdenv.lib.licenses.mpl20;
-       hydraPlatforms = stdenv.lib.platforms.none;
      }) {};
 
   "conferer-provider-dhall" = callPackage
@@ -61085,6 +61153,8 @@ self: {
        ];
        description = "Configuration for reading dhall files";
        license = stdenv.lib.licenses.mpl20;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "conferer-source-json" = callPackage
@@ -61105,6 +61175,8 @@ self: {
        ];
        description = "conferer's source for reading json files";
        license = stdenv.lib.licenses.mpl20;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "conferer-source-yaml" = callPackage
@@ -61122,6 +61194,8 @@ self: {
        ];
        description = "Configuration for reading yaml files";
        license = stdenv.lib.licenses.mpl20;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "conferer-warp" = callPackage
@@ -61129,21 +61203,6 @@ self: {
      }:
      mkDerivation {
        pname = "conferer-warp";
-       version = "0.4.0.1";
-       sha256 = "1swvrkfqvpnpw2nihqzgn8rxv0pfbc9cl8wlyfshrqirjm0lhbj3";
-       libraryHaskellDepends = [ base conferer http-types text wai warp ];
-       testHaskellDepends = [
-         base conferer hspec http-types text wai warp
-       ];
-       description = "conferer's FromConfig instances for warp settings";
-       license = stdenv.lib.licenses.mpl20;
-     }) {};
-
-  "conferer-warp_1_0_0_0" = callPackage
-    ({ mkDerivation, base, conferer, hspec, http-types, text, wai, warp
-     }:
-     mkDerivation {
-       pname = "conferer-warp";
        version = "1.0.0.0";
        sha256 = "14wrd50dfgc2m6lyfvsx4w605r8krf6ha96j3685vgy6fylff1bd";
        libraryHaskellDepends = [ base conferer http-types text wai warp ];
@@ -61152,7 +61211,6 @@ self: {
        ];
        description = "conferer's FromConfig instances for warp settings";
        license = stdenv.lib.licenses.mpl20;
-       hydraPlatforms = stdenv.lib.platforms.none;
      }) {};
 
   "conferer-yaml" = callPackage
@@ -61670,6 +61728,8 @@ self: {
        testHaskellDepends = [ base hedgehog ];
        description = "Orders, Galois connections, and lattices";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "consistent" = callPackage
@@ -62546,6 +62606,17 @@ self: {
        broken = true;
      }) {};
 
+  "contra-tracer" = callPackage
+    ({ mkDerivation, base }:
+     mkDerivation {
+       pname = "contra-tracer";
+       version = "0.1.0.0";
+       sha256 = "146g43sqa23n1qg100jvz5m1jcjfxx4rxzmc8559b6apys9ys4br";
+       libraryHaskellDepends = [ base ];
+       description = "Arrow and contravariant tracers";
+       license = stdenv.lib.licenses.bsd3;
+     }) {};
+
   "contracheck-applicative" = callPackage
     ({ mkDerivation, base, containers, contravariant, generics-sop
      , microlens, mmorph
@@ -64056,8 +64127,8 @@ self: {
     ({ mkDerivation, base, bytestring, c2hs, python3, text }:
      mkDerivation {
        pname = "cpython";
-       version = "3.5.0";
-       sha256 = "0ivvz6f824d2g4pk3qglz8fhzahp0kfjyv2wy6qpwfwcf1gvw7lg";
+       version = "3.5.1";
+       sha256 = "13vb65vgd9jncys1phgm3d9jmn3nq5k4ln2my34gc8vqpp7qxyh1";
        libraryHaskellDepends = [ base bytestring text ];
        libraryPkgconfigDepends = [ python3 ];
        libraryToolDepends = [ c2hs ];
@@ -64569,8 +64640,8 @@ self: {
      }:
      mkDerivation {
        pname = "crdt-event-fold";
-       version = "1.3.0.0";
-       sha256 = "0zpbn7rx9zywrfhpaj7lji0is0sb61al7q8fddrxy8vvirvhbb85";
+       version = "1.4.0.0";
+       sha256 = "0hagrbsgw58kchiifhq69s4hii7pv8zsvfzl3ijgxkb8iqp515gc";
        libraryHaskellDepends = [
          aeson base binary containers data-default-class data-dword
          monad-logger mtl transformers
@@ -66162,6 +66233,8 @@ self: {
        ];
        description = "Defining and manipulating css easing strings";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "css-selectors" = callPackage
@@ -66588,8 +66661,8 @@ self: {
        pname = "cue-sheet";
        version = "2.0.1";
        sha256 = "0papll3xcq2ipmya61jr71gf3zx2swmys829x5sbz7lv6abj9r3i";
-       revision = "2";
-       editedCabalFile = "0kblqr8mjmps56a7pbjwnby5ik8grmj15l1qir7q9kbn44x4s8l3";
+       revision = "3";
+       editedCabalFile = "1v8yvvb9sdpkg7m6z5a4sf0hcss7swb318700ap0qc79qn4ifdqb";
        enableSeparateDataOutput = true;
        libraryHaskellDepends = [
          base bytestring containers exceptions megaparsec mtl QuickCheck
@@ -68852,6 +68925,8 @@ self: {
        ];
        description = "Interval datatype, interval arithmetic and interval-based containers";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "data-inttrie" = callPackage
@@ -69245,6 +69320,8 @@ self: {
        ];
        description = "R-Tree is a spatial data structure similar to Quadtrees or B-Trees";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "data-ref" = callPackage
@@ -73059,6 +73136,8 @@ self: {
        ];
        description = "Generate HTML docs from a dhall package";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "dhall-fly" = callPackage
@@ -73124,6 +73203,8 @@ self: {
        ];
        description = "Convert between Dhall and JSON or YAML";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "dhall-lex" = callPackage
@@ -73174,6 +73255,8 @@ self: {
        ];
        description = "Language Server Protocol (LSP) server for Dhall";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "dhall-nix" = callPackage
@@ -73299,6 +73382,8 @@ self: {
        ];
        description = "Convert between Dhall and YAML";
        license = stdenv.lib.licenses.gpl3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "dhcp-lease-parser" = callPackage
@@ -74383,8 +74468,8 @@ self: {
      }:
      mkDerivation {
        pname = "differential";
-       version = "0.1.2.1";
-       sha256 = "164s372c7pfqnzhvrhxmic0csx3lgwqi06zz5w8zfvkw76md8qh3";
+       version = "0.2.0.0";
+       sha256 = "1dzxqva176dw22bb4hlv8dfizkzqsj5z9qdv7piwdh171nd9bwqd";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -75199,6 +75284,8 @@ self: {
        testHaskellDepends = [ base filepath ];
        description = "Recursively build, navigate, and operate on a tree of directory contents";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "directory-layout" = callPackage
@@ -78124,8 +78211,8 @@ self: {
      }:
      mkDerivation {
        pname = "dovin";
-       version = "3.0";
-       sha256 = "1avyls9yzvnxcs0lz05kh8bv7vdgfrziy0nvn378r7s12ynpwy7w";
+       version = "3.0.1";
+       sha256 = "1qdqzy3h4zwg1b36h5q5qnrpyki9fjhda6jk3izcj829805ya1i9";
        isLibrary = true;
        isExecutable = true;
        setupHaskellDepends = [ base Cabal directory filepath ];
@@ -80053,6 +80140,29 @@ self: {
        license = stdenv.lib.licenses.isc;
      }) {};
 
+  "early" = callPackage
+    ({ mkDerivation, base, containers, ghc, ghc-lib-parser, syb, text
+     , transformers, unordered-containers
+     }:
+     mkDerivation {
+       pname = "early";
+       version = "0.0.0";
+       sha256 = "0nx12376py2jc7yd94lfjbjxw3824fm3v2iviv406a2svkayw7pm";
+       isLibrary = true;
+       isExecutable = true;
+       libraryHaskellDepends = [
+         base containers ghc syb text transformers
+       ];
+       executableHaskellDepends = [
+         base ghc-lib-parser text unordered-containers
+       ];
+       testHaskellDepends = [ base ];
+       description = "Early return syntax in do-notation (GHC plugin)";
+       license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
+     }) {};
+
   "ease" = callPackage
     ({ mkDerivation, base, data-default }:
      mkDerivation {
@@ -82222,6 +82332,8 @@ self: {
        ];
        description = "Validate and (optionally) redo ELynx analyses";
        license = stdenv.lib.licenses.gpl3Plus;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "elynx-markov" = callPackage
@@ -82323,6 +82435,8 @@ self: {
        ];
        description = "Handle phylogenetic trees";
        license = stdenv.lib.licenses.gpl3Plus;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "emacs-keys" = callPackage
@@ -84164,6 +84278,8 @@ self: {
        ];
        description = "ANSI Escape Sequence Text Decoration Made Easy";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "escaped" = callPackage
@@ -86015,6 +86131,8 @@ self: {
        ];
        description = "database schema for exigo marking/assessment tools";
        license = stdenv.lib.licenses.bsd2;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "exinst" = callPackage
@@ -87171,8 +87289,8 @@ self: {
      }:
      mkDerivation {
        pname = "factor";
-       version = "1.4";
-       sha256 = "013f1h796ngp21pm3kd318vw4ah42bv6sbhjl18szk3sik88vd6z";
+       version = "1.5";
+       sha256 = "0fn7dlyaxa2pwf3xakszs75j0fvc7lsdzp4x2cm4hsnyyn1x5v9z";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -87471,6 +87589,8 @@ self: {
        ];
        description = "Library for producing fake data";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "fakedata-parser" = callPackage
@@ -87498,6 +87618,8 @@ self: {
        ];
        description = "Fake a -> Gen a";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "fakefs" = callPackage
@@ -87547,8 +87669,8 @@ self: {
      }:
      mkDerivation {
        pname = "faktory";
-       version = "1.0.1.3";
-       sha256 = "1mxgkf54hxlj753dva21gxdqamq4mgfslcq5gqhp154gi0xmm79w";
+       version = "1.0.1.4";
+       sha256 = "151jlcrp80f8riyf8rxzvggyxq3k2mg2fi81r7wnc4in6gzsc0qj";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -90354,10 +90476,8 @@ self: {
      }:
      mkDerivation {
        pname = "finite-field";
-       version = "0.9.0";
-       sha256 = "026l5qrc7vsm2s19z10xx30lrsfkwwcymyznyy5hrcrwqj9wf643";
-       revision = "2";
-       editedCabalFile = "11zivn1cjwxc7xy8q50raz1wpfgl0b459ai0f4j304rv7yiwrhdp";
+       version = "0.10.0";
+       sha256 = "1cw2d04dgbx8sk081xpnzla3im7ybvyd7v04wp53knj72h0aqydj";
        libraryHaskellDepends = [
          base deepseq hashable singletons template-haskell
        ];
@@ -91125,8 +91245,8 @@ self: {
        pname = "flac";
        version = "0.2.0";
        sha256 = "03zmsnnpkk26ss8ka2l7x9gsfcmiqfyc73v7fna6sk5cwzxsb33c";
-       revision = "1";
-       editedCabalFile = "1phwdnya8bgw24a80vbw0m4pm7r67grnc6si8683jz620snnsm48";
+       revision = "2";
+       editedCabalFile = "1b3cbhvvhbv1d0gkfwgn9j9jx9cjn3w606vbpfhak2cyjmw26q36";
        enableSeparateDataOutput = true;
        libraryHaskellDepends = [
          base bytestring containers directory exceptions filepath mtl text
@@ -91152,6 +91272,8 @@ self: {
        pname = "flac-picture";
        version = "0.1.2";
        sha256 = "02h36z65xmy0mvg7j2863h35dcf24l08ma0dxjbqcn42sca9ss0m";
+       revision = "1";
+       editedCabalFile = "1ib9ypz06i81bgkj08aw6fdyxi6fbl2029vwlcqybbhz9cnya1pm";
        enableSeparateDataOutput = true;
        libraryHaskellDepends = [ base bytestring flac JuicyPixels ];
        testHaskellDepends = [
@@ -92429,6 +92551,17 @@ self: {
        license = stdenv.lib.licenses.bsd3;
      }) {};
 
+  "foldable-ix" = callPackage
+    ({ mkDerivation, base }:
+     mkDerivation {
+       pname = "foldable-ix";
+       version = "0.1.0.0";
+       sha256 = "1lvf1n8mnv3imlry4nqdv8c2c930yic0raqs2awnbmyyy1c6fc79";
+       libraryHaskellDepends = [ base ];
+       description = "Functions to find out the indices of the elements in the Foldable structures";
+       license = stdenv.lib.licenses.mit;
+     }) {};
+
   "foldable1" = callPackage
     ({ mkDerivation, base, transformers, util }:
      mkDerivation {
@@ -92450,6 +92583,8 @@ self: {
        pname = "foldl";
        version = "1.4.10";
        sha256 = "1fl1vahga6dv21nkgjd265nlhmgqzr8sa0fb5dfqzk34fb01vvvq";
+       revision = "1";
+       editedCabalFile = "0rd3w7m8a8pxb8jpmi9nky4hf1jl35cm8vp1qq8mfzgpx5bbqd2w";
        libraryHaskellDepends = [
          base bytestring comonad containers contravariant hashable
          mwc-random primitive profunctors semigroupoids text transformers
@@ -92719,7 +92854,7 @@ self: {
        license = stdenv.lib.licenses.mit;
        hydraPlatforms = stdenv.lib.platforms.none;
        broken = true;
-     }) {foma = null;};
+     }) {inherit (pkgs) foma;};
 
   "font-awesome-type" = callPackage
     ({ mkDerivation, base }:
@@ -93507,14 +93642,15 @@ self: {
      }:
      mkDerivation {
        pname = "fp-ieee";
-       version = "0.1.0";
-       sha256 = "11av4rm7hwgm8xzflmcm7nmq2ynwfbb3dcyfx6hd75wwm2l1iz98";
+       version = "0.1.0.1";
+       sha256 = "11hj4ldpxcvpnyqhs02s0ryfjiql9pmn1h1caly3cfd1r9aairl9";
        libraryHaskellDepends = [ base integer-gmp integer-logarithms ];
        testHaskellDepends = [
          base decimal-arithmetic doctest hspec hspec-core integer-logarithms
          QuickCheck random
        ];
        benchmarkHaskellDepends = [ base gauge ];
+       description = "IEEE 754-2019 compliant operations";
        license = stdenv.lib.licenses.bsd3;
        hydraPlatforms = stdenv.lib.platforms.none;
        broken = true;
@@ -97797,6 +97933,8 @@ self: {
        libraryHaskellDepends = [ base ];
        description = "Generically derived enumerations";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "generic-env" = callPackage
@@ -99148,6 +99286,8 @@ self: {
        testSystemDepends = [ geos ];
        description = "Bindings for GEOS";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {inherit (pkgs) geos;};
 
   "getemx" = callPackage
@@ -100366,23 +100506,11 @@ self: {
     ({ mkDerivation, base, ghc }:
      mkDerivation {
        pname = "ghc-tcplugins-extra";
-       version = "0.4";
-       sha256 = "0z85ma3r7k4g669br3sdsmnxnk8srh1xi0wggi1gzqrrwpylyv8w";
-       libraryHaskellDepends = [ base ghc ];
-       description = "Utilities for writing GHC type-checker plugins";
-       license = stdenv.lib.licenses.bsd2;
-     }) {};
-
-  "ghc-tcplugins-extra_0_4_1" = callPackage
-    ({ mkDerivation, base, ghc }:
-     mkDerivation {
-       pname = "ghc-tcplugins-extra";
        version = "0.4.1";
        sha256 = "0v9y444gydfyk56y7adpabd633yv1d8jmddvgg272n8jpdpagw67";
        libraryHaskellDepends = [ base ghc ];
        description = "Utilities for writing GHC type-checker plugins";
        license = stdenv.lib.licenses.bsd2;
-       hydraPlatforms = stdenv.lib.platforms.none;
      }) {};
 
   "ghc-time-alloc-prof" = callPackage
@@ -100437,29 +100565,6 @@ self: {
      }:
      mkDerivation {
        pname = "ghc-typelits-extra";
-       version = "0.4.1";
-       sha256 = "0wfv0cympdrz999qml8j1cqrqppb22xm4gcn4k8i2hd31j748zb6";
-       libraryHaskellDepends = [
-         base containers ghc ghc-prim ghc-tcplugins-extra
-         ghc-typelits-knownnat ghc-typelits-natnormalise integer-gmp
-         transformers
-       ];
-       testHaskellDepends = [
-         base ghc-typelits-knownnat ghc-typelits-natnormalise tasty
-         tasty-hunit
-       ];
-       description = "Additional type-level operations on GHC.TypeLits.Nat";
-       license = stdenv.lib.licenses.bsd2;
-     }) {};
-
-  "ghc-typelits-extra_0_4_2" = callPackage
-    ({ mkDerivation, base, containers, ghc, ghc-prim
-     , ghc-tcplugins-extra, ghc-typelits-knownnat
-     , ghc-typelits-natnormalise, integer-gmp, tasty, tasty-hunit
-     , transformers
-     }:
-     mkDerivation {
-       pname = "ghc-typelits-extra";
        version = "0.4.2";
        sha256 = "0xpy52rib25iz5h89nqlj27isjk57pjbhlvlfam5q0g3x92572h4";
        libraryHaskellDepends = [
@@ -100473,7 +100578,6 @@ self: {
        ];
        description = "Additional type-level operations on GHC.TypeLits.Nat";
        license = stdenv.lib.licenses.bsd2;
-       hydraPlatforms = stdenv.lib.platforms.none;
      }) {};
 
   "ghc-typelits-knownnat" = callPackage
@@ -100483,26 +100587,6 @@ self: {
      }:
      mkDerivation {
        pname = "ghc-typelits-knownnat";
-       version = "0.7.3";
-       sha256 = "1vz2qjgdv5hv7zrq0hm9f4ly0q3bl1cz2spcqrdpdzhivfff651g";
-       libraryHaskellDepends = [
-         base ghc ghc-prim ghc-tcplugins-extra ghc-typelits-natnormalise
-         template-haskell transformers
-       ];
-       testHaskellDepends = [
-         base ghc-typelits-natnormalise tasty tasty-hunit tasty-quickcheck
-       ];
-       description = "Derive KnownNat constraints from other KnownNat constraints";
-       license = stdenv.lib.licenses.bsd2;
-     }) {};
-
-  "ghc-typelits-knownnat_0_7_4" = callPackage
-    ({ mkDerivation, base, ghc, ghc-prim, ghc-tcplugins-extra
-     , ghc-typelits-natnormalise, tasty, tasty-hunit, tasty-quickcheck
-     , template-haskell, transformers
-     }:
-     mkDerivation {
-       pname = "ghc-typelits-knownnat";
        version = "0.7.4";
        sha256 = "1i3kwq8i3p4i2jmmq8irycs0z3g69qy4i5smh14kbcz3pl35x71l";
        libraryHaskellDepends = [
@@ -100514,29 +100598,10 @@ self: {
        ];
        description = "Derive KnownNat constraints from other KnownNat constraints";
        license = stdenv.lib.licenses.bsd2;
-       hydraPlatforms = stdenv.lib.platforms.none;
      }) {};
 
   "ghc-typelits-natnormalise" = callPackage
     ({ mkDerivation, base, containers, ghc, ghc-tcplugins-extra
-     , integer-gmp, syb, tasty, tasty-hunit, template-haskell
-     , transformers
-     }:
-     mkDerivation {
-       pname = "ghc-typelits-natnormalise";
-       version = "0.7.2";
-       sha256 = "1hk2f2vqkpia7kv7pqwf942y1w9m7mvmikzabkrjp8f8gijcsk52";
-       libraryHaskellDepends = [
-         base containers ghc ghc-tcplugins-extra integer-gmp syb
-         transformers
-       ];
-       testHaskellDepends = [ base tasty tasty-hunit template-haskell ];
-       description = "GHC typechecker plugin for types of kind GHC.TypeLits.Nat";
-       license = stdenv.lib.licenses.bsd2;
-     }) {};
-
-  "ghc-typelits-natnormalise_0_7_3" = callPackage
-    ({ mkDerivation, base, containers, ghc, ghc-tcplugins-extra
      , integer-gmp, tasty, tasty-hunit, template-haskell, transformers
      }:
      mkDerivation {
@@ -100549,7 +100614,6 @@ self: {
        testHaskellDepends = [ base tasty tasty-hunit template-haskell ];
        description = "GHC typechecker plugin for types of kind GHC.TypeLits.Nat";
        license = stdenv.lib.licenses.bsd2;
-       hydraPlatforms = stdenv.lib.platforms.none;
      }) {};
 
   "ghc-typelits-presburger" = callPackage
@@ -100819,9 +100883,9 @@ self: {
      , fuzzy, ghc, ghc-boot, ghc-boot-th, ghc-check, ghc-paths
      , ghc-typelits-knownnat, gitrev, Glob, haddock-library, hashable
      , haskell-lsp, haskell-lsp-types, heapsize, hie-bios, hie-compat
-     , hslogger, implicit-hie-cradle, lens, lsp-test, mtl, network-uri
-     , opentelemetry, optparse-applicative, parallel, prettyprinter
-     , prettyprinter-ansi-terminal, process, QuickCheck
+     , hls-plugin-api, hslogger, implicit-hie-cradle, lens, lsp-test
+     , mtl, network-uri, opentelemetry, optparse-applicative, parallel
+     , prettyprinter, prettyprinter-ansi-terminal, process, QuickCheck
      , quickcheck-instances, record-dot-preprocessor, record-hasfield
      , regex-tdfa, rope-utf16-splay, safe, safe-exceptions, shake
      , shake-bench, sorted-list, stm, syb, tasty, tasty-expected-failure
@@ -100830,8 +100894,8 @@ self: {
      }:
      mkDerivation {
        pname = "ghcide";
-       version = "0.6.0.2";
-       sha256 = "0dd1vzz9vlvg790nkmgm5zbn0sc7msgmvfma7zkarf4zgqx1hmlg";
+       version = "0.7.0.0";
+       sha256 = "165dbwbcpl2r7jqsjk859c42yas8h877mx37d0jnx8vm47fdy484";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -100839,24 +100903,25 @@ self: {
          case-insensitive containers cryptohash-sha1 data-default deepseq
          directory extra filepath fingertree fuzzy ghc ghc-boot ghc-boot-th
          ghc-check ghc-paths Glob haddock-library hashable haskell-lsp
-         haskell-lsp-types heapsize hie-bios hie-compat hslogger
-         implicit-hie-cradle mtl network-uri opentelemetry parallel
-         prettyprinter prettyprinter-ansi-terminal regex-tdfa
+         haskell-lsp-types heapsize hie-bios hie-compat hls-plugin-api
+         hslogger implicit-hie-cradle lens mtl network-uri opentelemetry
+         parallel prettyprinter prettyprinter-ansi-terminal regex-tdfa
          rope-utf16-splay safe safe-exceptions shake sorted-list stm syb
          text time transformers unix unordered-containers utf8-string
        ];
        executableHaskellDepends = [
          aeson base bytestring containers data-default directory extra
          filepath gitrev hashable haskell-lsp haskell-lsp-types heapsize
-         hie-bios lens lsp-test optparse-applicative process safe-exceptions
-         shake text unordered-containers
+         hie-bios hls-plugin-api lens lsp-test optparse-applicative process
+         safe-exceptions shake text unordered-containers
        ];
        testHaskellDepends = [
-         aeson base binary bytestring containers directory extra filepath
-         ghc ghc-typelits-knownnat haddock-library haskell-lsp
-         haskell-lsp-types lens lsp-test network-uri optparse-applicative
-         process QuickCheck quickcheck-instances record-dot-preprocessor
-         record-hasfield rope-utf16-splay safe safe-exceptions shake tasty
+         aeson base binary bytestring containers data-default directory
+         extra filepath ghc ghc-typelits-knownnat haddock-library
+         haskell-lsp haskell-lsp-types hls-plugin-api lens lsp-test
+         network-uri optparse-applicative process QuickCheck
+         quickcheck-instances record-dot-preprocessor record-hasfield
+         rope-utf16-splay safe safe-exceptions shake tasty
          tasty-expected-failure tasty-hunit tasty-quickcheck tasty-rerun
          text
        ];
@@ -112065,6 +112130,26 @@ self: {
        license = stdenv.lib.licenses.bsd3;
      }) {};
 
+  "hackage-api" = callPackage
+    ({ mkDerivation, aeson, base, bytestring, Cabal, http-client
+     , http-client-tls, http-media, servant, servant-client
+     , servant-client-core, text, time
+     }:
+     mkDerivation {
+       pname = "hackage-api";
+       version = "0.1.0";
+       sha256 = "1hqla8h5jq5b149gz6kql0mdnv4hw0535wwsh7cj4sx9j6yyri9y";
+       libraryHaskellDepends = [
+         aeson base bytestring Cabal http-client http-client-tls http-media
+         servant servant-client servant-client-core text time
+       ];
+       testHaskellDepends = [ base http-client-tls servant-client ];
+       description = "An API binding to Hackage API";
+       license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
+     }) {};
+
   "hackage-db" = callPackage
     ({ mkDerivation, aeson, base, bytestring, Cabal, containers
      , directory, exceptions, filepath, tar, time, utf8-string
@@ -113773,14 +113858,18 @@ self: {
      }) {};
 
   "half" = callPackage
-    ({ mkDerivation, base, deepseq, hspec, QuickCheck, template-haskell
+    ({ mkDerivation, base, binary, bytestring, deepseq, QuickCheck
+     , template-haskell, test-framework, test-framework-quickcheck2
      }:
      mkDerivation {
        pname = "half";
-       version = "0.3";
-       sha256 = "14r0nx8hm5fic9gz0ybjjw4kyc758zfgvhhwvzsshpx5caq6zch6";
-       libraryHaskellDepends = [ base deepseq template-haskell ];
-       testHaskellDepends = [ base hspec QuickCheck ];
+       version = "0.3.1";
+       sha256 = "1l8m2spqg0ac50qys2jk5b32v6wxklbbk5ypjp3ga6z14hkw7bz2";
+       libraryHaskellDepends = [ base binary deepseq template-haskell ];
+       testHaskellDepends = [
+         base binary bytestring QuickCheck test-framework
+         test-framework-quickcheck2
+       ];
        description = "Half-precision floating-point";
        license = stdenv.lib.licenses.bsd3;
      }) {};
@@ -116470,15 +116559,15 @@ self: {
        broken = true;
      }) {};
 
-  "haskeline_0_8_1_0" = callPackage
+  "haskeline_0_8_1_1" = callPackage
     ({ mkDerivation, base, bytestring, containers, directory
      , exceptions, filepath, HUnit, process, stm, terminfo, text
      , transformers, unix
      }:
      mkDerivation {
        pname = "haskeline";
-       version = "0.8.1.0";
-       sha256 = "0r6skxr45k0qq5vlh9dyl5g5ham994b8z0k3z3v56bi3npvyi6xw";
+       version = "0.8.1.1";
+       sha256 = "1cg51rbhpa7ism0rg39dw7njz4r3q5h5pnysnbc37dh6gcdiyg2p";
        configureFlags = [ "-fterminfo" ];
        isLibrary = true;
        isExecutable = true;
@@ -119286,6 +119375,8 @@ self: {
        pname = "haskoin";
        version = "0.1.0.2";
        sha256 = "0l3h2wvi56k0dcfjambqyjrd45hb7bj0brp8nzrrcfn7fbpyjg8c";
+       revision = "1";
+       editedCabalFile = "0m1yd6l1amjrwdddrp5ddnazfzgjb6rndmw32pbpn5zim0r9i4rq";
        libraryHaskellDepends = [
          aeson base binary byteable bytestring containers cryptohash deepseq
          either json-rpc mtl pbkdf split text
@@ -119419,6 +119510,8 @@ self: {
        pname = "haskoin-protocol";
        version = "0.0.1.1";
        sha256 = "0r15csyylg5vd95z0spl5wkv6r8w7lpi983alsvlnkhv4dqnrg2v";
+       revision = "1";
+       editedCabalFile = "1smwy6g0fdwn04a9w5r7x0vhkylfmgrghlrnz93xxknv015a9f1z";
        libraryHaskellDepends = [
          base binary bytestring haskoin-crypto haskoin-util QuickCheck
        ];
@@ -119441,6 +119534,8 @@ self: {
        pname = "haskoin-script";
        version = "0.0.1";
        sha256 = "18lw5hxwvj4ichw1k4a35hjih7h0hd24khvl4m0yf2cq12m2gl11";
+       revision = "1";
+       editedCabalFile = "1438w0wijmifgcdzs5xg146f1vcm23iab9r07f19w3n21gcbvf94";
        libraryHaskellDepends = [
          base binary bytestring haskoin-crypto haskoin-protocol haskoin-util
          mtl QuickCheck
@@ -119539,6 +119634,8 @@ self: {
        pname = "haskoin-util";
        version = "0.0.1.1";
        sha256 = "0hh3vavqsp8pafw4nrv9py1kqcc1yx52zr80xsqzqjlsxq04fgfw";
+       revision = "1";
+       editedCabalFile = "1vfs64gbrbzi513sqalvpp4s0aff40d6gall301ipwpqfjz4jzzj";
        libraryHaskellDepends = [
          base binary bytestring either mtl QuickCheck
        ];
@@ -120770,6 +120867,24 @@ self: {
        license = stdenv.lib.licenses.mit;
      }) {};
 
+  "hasql-url" = callPackage
+    ({ mkDerivation, base, bytestring, hasql, network-uri, split, tasty
+     , tasty-quickcheck
+     }:
+     mkDerivation {
+       pname = "hasql-url";
+       version = "0.1.0.0";
+       sha256 = "12zsw4jag27g0bgxm9sp45bs2i7p5h42zs5avj01zlddpyhla0wx";
+       libraryHaskellDepends = [
+         base bytestring hasql network-uri split
+       ];
+       testHaskellDepends = [ base hasql tasty tasty-quickcheck ];
+       description = "Parse PostgreSQL connection URI into Hasql.Connection Settings";
+       license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
+     }) {};
+
   "hasqly-mysql" = callPackage
     ({ mkDerivation, base, binary, bytestring, dlist, mtl
      , mysql-haskell, scientific, text, time
@@ -121991,6 +122106,8 @@ self: {
        ];
        description = "Haskell name counts";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "hcron" = callPackage
@@ -123034,6 +123151,8 @@ self: {
        testHaskellDepends = [ base containers fakedata hedgehog ];
        description = "Use 'fakedata' with 'hedgehog'";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "hedgehog-fn" = callPackage
@@ -124847,6 +124966,8 @@ self: {
        ];
        description = "Streaming-friendly XML parsers";
        license = stdenv.lib.licenses.cc0;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "heyefi" = callPackage
@@ -125888,6 +126009,8 @@ self: {
        ];
        description = "Generates a references DB from .hie files";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "hieraclus" = callPackage
@@ -126548,6 +126671,8 @@ self: {
        ];
        description = "Generic project initialization tool";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "hinotify_0_3_9" = callPackage
@@ -128164,17 +128289,17 @@ self: {
      }) {};
 
   "hls-plugin-api" = callPackage
-    ({ mkDerivation, aeson, base, containers, data-default, Diff, ghc
-     , ghc-boot-th, ghcide, hashable, haskell-lsp, hslogger, lens
-     , process, regex-tdfa, shake, text, unordered-containers
+    ({ mkDerivation, aeson, base, containers, data-default, Diff
+     , hashable, haskell-lsp, hslogger, lens, process, regex-tdfa, shake
+     , text, unix, unordered-containers
      }:
      mkDerivation {
        pname = "hls-plugin-api";
-       version = "0.5.0.1";
-       sha256 = "0sv892m18ic9m8d5b8wm7385v80rc02fjy0wxvq9mzhgazz20cp2";
+       version = "0.6.0.0";
+       sha256 = "0dnd20mb0id0l2dz6j3ckfrjyfm3mjys0kf11z3a684i4bc0w1pi";
        libraryHaskellDepends = [
-         aeson base containers data-default Diff ghc ghc-boot-th ghcide
-         hashable haskell-lsp hslogger lens process regex-tdfa shake text
+         aeson base containers data-default Diff hashable haskell-lsp
+         hslogger lens process regex-tdfa shake text unix
          unordered-containers
        ];
        description = "Haskell Language Server API for plugin communication";
@@ -128916,9 +129041,9 @@ self: {
      , bytestring, comonad, containers, criterion, data-fix, deepseq
      , deriving-compat, Diff, directory, exceptions, filepath, free
      , gitrev, Glob, hashable, hashing, haskeline, hedgehog
-     , hnix-store-core, http-client, http-client-tls, http-types
-     , lens-family, lens-family-core, lens-family-th, logict, megaparsec
-     , monad-control, monadlist, mtl, neat-interpolation
+     , hnix-store-core, hnix-store-remote, http-client, http-client-tls
+     , http-types, lens-family, lens-family-core, lens-family-th, logict
+     , megaparsec, monad-control, monadlist, mtl, neat-interpolation
      , optparse-applicative, parser-combinators, pretty-show
      , prettyprinter, process, ref-tf, regex-tdfa, repline, scientific
      , semialign, semialign-indexed, serialise, some, split, syb, tasty
@@ -128928,21 +129053,22 @@ self: {
      }:
      mkDerivation {
        pname = "hnix";
-       version = "0.11.1";
-       sha256 = "0rdl1ky8l2zm5arkdq77qrg0xnqfavba0bnr9bd0zhjj3k2gb4v7";
+       version = "0.12.0.1";
+       sha256 = "013jlmzzr5fcvl0w9rrvhsg8jikg0hbc8z57yzxgz109x7hrnjzc";
        isLibrary = true;
        isExecutable = true;
+       enableSeparateDataOutput = true;
        libraryHaskellDepends = [
          aeson array base base16-bytestring binary bytestring comonad
          containers data-fix deepseq deriving-compat directory exceptions
-         filepath free gitrev hashable hashing hnix-store-core http-client
-         http-client-tls http-types lens-family lens-family-core
-         lens-family-th logict megaparsec monad-control monadlist mtl
-         neat-interpolation optparse-applicative parser-combinators
-         pretty-show prettyprinter process ref-tf regex-tdfa scientific
-         semialign semialign-indexed serialise some split syb
-         template-haskell text these time transformers transformers-base
-         unix unordered-containers vector xml
+         filepath free gitrev hashable hashing hnix-store-core
+         hnix-store-remote http-client http-client-tls http-types
+         lens-family lens-family-core lens-family-th logict megaparsec
+         monad-control monadlist mtl neat-interpolation optparse-applicative
+         parser-combinators pretty-show prettyprinter process ref-tf
+         regex-tdfa scientific semialign semialign-indexed serialise some
+         split syb template-haskell text these time transformers
+         transformers-base unix unordered-containers vector xml
        ];
        executableHaskellDepends = [
          aeson base base16-bytestring bytestring comonad containers data-fix
@@ -129043,8 +129169,6 @@ self: {
        ];
        description = "Remote hnix store";
        license = stdenv.lib.licenses.asl20;
-       hydraPlatforms = stdenv.lib.platforms.none;
-       broken = true;
      }) {};
 
   "hnn" = callPackage
@@ -129320,6 +129444,8 @@ self: {
        ];
        description = "Interact with the docker registry and generate nix build instructions";
        license = stdenv.lib.licenses.asl20;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "hocon" = callPackage
@@ -129597,8 +129723,8 @@ self: {
      }:
      mkDerivation {
        pname = "holmes";
-       version = "0.3.0.1";
-       sha256 = "0b7ifnmg2n3jfb1zgdzy3fylifqq0mxp00r2iwp9wrnf29rdzxp3";
+       version = "0.3.2.0";
+       sha256 = "1hrgdnlyqz8wjnqihp8gn3rhl1zfyd6p9yv4cjwsv876bgy17ql8";
        libraryHaskellDepends = [
          base containers hashable hedgehog logict mtl primitive transformers
          unordered-containers
@@ -129611,8 +129737,6 @@ self: {
        testToolDepends = [ markdown-unlit tasty-discover ];
        description = "Tools and combinators for solving constraint problems";
        license = stdenv.lib.licenses.mit;
-       hydraPlatforms = stdenv.lib.platforms.none;
-       broken = true;
      }) {};
 
   "holy-project" = callPackage
@@ -130262,8 +130386,8 @@ self: {
      }:
      mkDerivation {
        pname = "hopenpgp-tools";
-       version = "0.23.3";
-       sha256 = "1h6hg05i7vm0cnhn3sifmmv01hjxy0w030j4m3fig3ic57658q2p";
+       version = "0.23.6";
+       sha256 = "0hjh6avcd24czd5dv0kr78hkv8k48i3lgcxiahnfjaqwirmg5wix";
        isLibrary = false;
        isExecutable = true;
        executableHaskellDepends = [
@@ -130280,38 +130404,6 @@ self: {
        license = stdenv.lib.licenses.agpl3Plus;
      }) {};
 
-  "hopenpgp-tools_0_23_4" = callPackage
-    ({ mkDerivation, aeson, alex, array, base, base16-bytestring
-     , binary, binary-conduit, bytestring, conduit, conduit-extra
-     , containers, cryptonite, directory, errors, fgl, graphviz, happy
-     , hOpenPGP, http-client, http-client-tls, http-types, ixset-typed
-     , lens, memory, monad-loops, mtl, openpgp-asciiarmor
-     , optparse-applicative, prettyprinter, prettyprinter-ansi-terminal
-     , prettyprinter-convert-ansi-wl-pprint, resourcet, text, time
-     , time-locale-compat, transformers, unordered-containers, vector
-     , yaml
-     }:
-     mkDerivation {
-       pname = "hopenpgp-tools";
-       version = "0.23.4";
-       sha256 = "1l9aznav4a0cwbd0mw6vlqi85vb3wc7w4fik4m8znmg5xa7dzvsl";
-       isLibrary = false;
-       isExecutable = true;
-       executableHaskellDepends = [
-         aeson array base base16-bytestring binary binary-conduit bytestring
-         conduit conduit-extra containers cryptonite directory errors fgl
-         graphviz hOpenPGP http-client http-client-tls http-types
-         ixset-typed lens memory monad-loops mtl openpgp-asciiarmor
-         optparse-applicative prettyprinter prettyprinter-ansi-terminal
-         prettyprinter-convert-ansi-wl-pprint resourcet text time
-         time-locale-compat transformers unordered-containers vector yaml
-       ];
-       executableToolDepends = [ alex happy ];
-       description = "hOpenPGP-based command-line tools";
-       license = stdenv.lib.licenses.agpl3Plus;
-       hydraPlatforms = stdenv.lib.platforms.none;
-     }) {};
-
   "hopenssl" = callPackage
     ({ mkDerivation, base, bytestring, HUnit, openssl }:
      mkDerivation {
@@ -131004,6 +131096,8 @@ self: {
        ];
        description = "hpack's dhalling";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "hpaco" = callPackage
@@ -133112,26 +133206,26 @@ self: {
      }) {};
 
   "hsautogui" = callPackage
-    ({ mkDerivation, base, containers, cpython, mtl, python3
+    ({ mkDerivation, base, containers, cpython, mtl, python
      , template-haskell, text
      }:
      mkDerivation {
        pname = "hsautogui";
-       version = "0.1.0";
-       sha256 = "0ds1r620825z7dq8rahbi7jymkn5n7y47i7m92qw4dl2cdl0s4g0";
+       version = "0.2.0";
+       sha256 = "0xcacp9r8iw9rqd5yawj5haznkjv6agigg5y4j1s0rhykc1s440n";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
          base containers cpython mtl template-haskell text
        ];
-       librarySystemDepends = [ python3 ];
+       librarySystemDepends = [ python ];
        executableHaskellDepends = [ base ];
-       executableSystemDepends = [ python3 ];
+       executableSystemDepends = [ python ];
        description = "Haskell bindings for PyAutoGUI, a library for automating user interaction";
        license = stdenv.lib.licenses.bsd3;
        hydraPlatforms = stdenv.lib.platforms.none;
        broken = true;
-     }) {inherit (pkgs) python3;};
+     }) {inherit (pkgs) python;};
 
   "hsay" = callPackage
     ({ mkDerivation, base, Hclip, HTTP, process, unix }:
@@ -135115,13 +135209,29 @@ self: {
      }:
      mkDerivation {
        pname = "hspec";
-       version = "2.7.4";
-       sha256 = "0zql8cl025ai3yx2dhp1sgvmw8n4ngqbrlmb42hcgv26q8qnvhmi";
+       version = "2.7.5";
+       sha256 = "0dyd0rb5sh5b72v14qmgwnv2fq76wiz9h8k0027bl8lsl0a77gmv";
+       libraryHaskellDepends = [
+         base hspec-core hspec-discover hspec-expectations QuickCheck
+       ];
+       description = "A Testing Framework for Haskell";
+       license = stdenv.lib.licenses.mit;
+     }) {};
+
+  "hspec_2_7_6" = callPackage
+    ({ mkDerivation, base, hspec-core, hspec-discover
+     , hspec-expectations, QuickCheck
+     }:
+     mkDerivation {
+       pname = "hspec";
+       version = "2.7.6";
+       sha256 = "0ynd111mwm5ykl74nb7ac7mz1b9xvs1hqjdksfm83dy2sj4axwpx";
        libraryHaskellDepends = [
          base hspec-core hspec-discover hspec-expectations QuickCheck
        ];
        description = "A Testing Framework for Haskell";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
      }) {};
 
   "hspec-attoparsec" = callPackage
@@ -135187,8 +135297,35 @@ self: {
      }:
      mkDerivation {
        pname = "hspec-core";
-       version = "2.7.4";
-       sha256 = "1k0rs9399m6bzmndc9ybs26mxrzkl9pifrijvknysbaqfcifmq35";
+       version = "2.7.5";
+       sha256 = "0pgmy4r47pdya1h5g1mk4idjs7c2b5dqa5xkqgqn2v60bg32n17p";
+       libraryHaskellDepends = [
+         ansi-terminal array base call-stack clock deepseq directory
+         filepath hspec-expectations HUnit QuickCheck quickcheck-io random
+         setenv stm tf-random transformers
+       ];
+       testHaskellDepends = [
+         ansi-terminal array base call-stack clock deepseq directory
+         filepath hspec-expectations hspec-meta HUnit process QuickCheck
+         quickcheck-io random setenv silently stm temporary tf-random
+         transformers
+       ];
+       testToolDepends = [ hspec-meta ];
+       testTarget = "--test-option=--skip --test-option='Test.Hspec.Core.Runner.hspecResult runs specs in parallel'";
+       description = "A Testing Framework for Haskell";
+       license = stdenv.lib.licenses.mit;
+     }) {};
+
+  "hspec-core_2_7_6" = callPackage
+    ({ mkDerivation, ansi-terminal, array, base, call-stack, clock
+     , deepseq, directory, filepath, hspec-expectations, hspec-meta
+     , HUnit, process, QuickCheck, quickcheck-io, random, setenv
+     , silently, stm, temporary, tf-random, transformers
+     }:
+     mkDerivation {
+       pname = "hspec-core";
+       version = "2.7.6";
+       sha256 = "1j9kpvjf1yz3bl32cklxz8dnykc48ya67lin4r2hvbzcd3kg63rf";
        libraryHaskellDepends = [
          ansi-terminal array base call-stack clock deepseq directory
          filepath hspec-expectations HUnit QuickCheck quickcheck-io random
@@ -135204,6 +135341,7 @@ self: {
        testTarget = "--test-option=--skip --test-option='Test.Hspec.Core.Runner.hspecResult runs specs in parallel'";
        description = "A Testing Framework for Haskell";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
      }) {};
 
   "hspec-dirstream" = callPackage
@@ -135229,8 +135367,27 @@ self: {
      }:
      mkDerivation {
        pname = "hspec-discover";
-       version = "2.7.4";
-       sha256 = "02laain23bcnzsl65347qr5knvrmrlhd0kzc0d88kx59lpzm27a0";
+       version = "2.7.5";
+       sha256 = "1d049y6g15s2rvng8gzbnv0fybfhyxjs3hp200fg8kwzq7vzkvmf";
+       isLibrary = true;
+       isExecutable = true;
+       libraryHaskellDepends = [ base directory filepath ];
+       executableHaskellDepends = [ base directory filepath ];
+       testHaskellDepends = [
+         base directory filepath hspec-meta QuickCheck
+       ];
+       testToolDepends = [ hspec-meta ];
+       description = "Automatically discover and run Hspec tests";
+       license = stdenv.lib.licenses.mit;
+     }) {};
+
+  "hspec-discover_2_7_6" = callPackage
+    ({ mkDerivation, base, directory, filepath, hspec-meta, QuickCheck
+     }:
+     mkDerivation {
+       pname = "hspec-discover";
+       version = "2.7.6";
+       sha256 = "12n26rxdrpk54fqrgrdj7r8kyq3fla3na10j4pnsjkir72bvhd17";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [ base directory filepath ];
@@ -135241,6 +135398,7 @@ self: {
        testToolDepends = [ hspec-meta ];
        description = "Automatically discover and run Hspec tests";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
      }) {};
 
   "hspec-expectations" = callPackage
@@ -136847,6 +137005,8 @@ self: {
        pname = "htaglib";
        version = "1.2.0";
        sha256 = "0ph04j1ysjzzrcyllgibzrzfv5g5mgpa6s0ksxww15aryipw65sa";
+       revision = "1";
+       editedCabalFile = "09vsz2z5sb5ai3qpksqdckb43vndqs66x4abx3lln2xr40dlkljv";
        enableSeparateDataOutput = true;
        libraryHaskellDepends = [ base bytestring text transformers ];
        librarySystemDepends = [ taglib ];
@@ -137504,23 +137664,23 @@ self: {
        license = stdenv.lib.licenses.bsd3;
      }) {};
 
-  "http-api-data_0_4_2" = callPackage
+  "http-api-data_0_4_3" = callPackage
     ({ mkDerivation, attoparsec, attoparsec-iso8601, base, base-compat
      , bytestring, containers, cookie, hashable, hspec, hspec-discover
-     , http-types, HUnit, nats, QuickCheck, quickcheck-instances, tagged
-     , text, time-compat, transformers, unordered-containers, uuid-types
+     , http-types, HUnit, QuickCheck, quickcheck-instances, tagged, text
+     , time-compat, transformers, unordered-containers, uuid-types
      }:
      mkDerivation {
        pname = "http-api-data";
-       version = "0.4.2";
-       sha256 = "0xzfvxxh33ivlnrnzmm19cni3jgb5ph18n9hykkw3d6l3rhwzcnl";
+       version = "0.4.3";
+       sha256 = "171bw2a44pg50d3y77gw2y9vmx72laky7hnn5hw6r93pnjmlf9yz";
        libraryHaskellDepends = [
          attoparsec attoparsec-iso8601 base base-compat bytestring
          containers cookie hashable http-types tagged text time-compat
          transformers unordered-containers uuid-types
        ];
        testHaskellDepends = [
-         base base-compat bytestring cookie hspec HUnit nats QuickCheck
+         base base-compat bytestring cookie hspec HUnit QuickCheck
          quickcheck-instances text time-compat unordered-containers
          uuid-types
        ];
@@ -137835,19 +137995,18 @@ self: {
      }) {};
 
   "http-client-websockets" = callPackage
-    ({ mkDerivation, base, bytestring, doctest, hspec, http-client
+    ({ mkDerivation, base, bytestring, hspec, http-client
      , http-client-tls, network-uri, utf8-string, websockets
      }:
      mkDerivation {
        pname = "http-client-websockets";
-       version = "0.1.1.0";
-       sha256 = "1kmvwhfsp1l672km2a06pww0a3wmwbxcwwg1k78xcnc767wj0g1m";
+       version = "0.1.1.1";
+       sha256 = "0b5kvyrfhhj7c5ys8ccxwv6prhb6sj0ycinzbk1yrwnd3wrmzk78";
        libraryHaskellDepends = [
          base bytestring http-client network-uri utf8-string websockets
        ];
        testHaskellDepends = [
-         base bytestring doctest hspec http-client-tls network-uri
-         websockets
+         base bytestring hspec http-client-tls network-uri websockets
        ];
        description = "Glue code for http-client and websockets";
        license = stdenv.lib.licenses.cc0;
@@ -139083,6 +139242,8 @@ self: {
        ];
        description = "A TUI MPD client, inspired by ncmpcpp";
        license = stdenv.lib.licenses.gpl2Plus;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "human-parse" = callPackage
@@ -139415,8 +139576,8 @@ self: {
      }:
      mkDerivation {
        pname = "hurl";
-       version = "1.5.0.0";
-       sha256 = "1fzy2zzwn5x420xz91fj64h6g0vzlam4058pymb2pdmg4x801j42";
+       version = "2.0.0.0";
+       sha256 = "0rr4v8dbbkasg68zkv6z2p4ib12kazqjrad4s0z7h6l7hy6rqwbz";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -139428,6 +139589,8 @@ self: {
        executableHaskellDepends = [ base directory network-uri ];
        description = "Haskell URL resolver";
        license = stdenv.lib.licenses.gpl3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "hurriyet" = callPackage
@@ -140258,6 +140421,8 @@ self: {
        ];
        description = "Avro support for Kafka infrastructure";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "hw-kafka-client" = callPackage
@@ -140267,8 +140432,8 @@ self: {
      }:
      mkDerivation {
        pname = "hw-kafka-client";
-       version = "4.0.0";
-       sha256 = "0cwiaxri121lh713sisy9mka0h6z2ip82hzqbyzqj1dnljkqry9c";
+       version = "4.0.1";
+       sha256 = "05ahw4cdp5kk5j4rbjf1bdvivg3nhiaaf68p902mp8jcbh7fz9sf";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -141897,6 +142062,8 @@ self: {
        pname = "hyraxAbif";
        version = "0.2.3.27";
        sha256 = "1ww4lgf280sjj9bhj8s6pxadqwk91jkx6lngb2cqcf81gr38drhm";
+       revision = "1";
+       editedCabalFile = "0l8dl3mw4vw8xhq59hin72rc5qh2swbzv41z61bqj2i1088xw0dg";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -144586,8 +144753,8 @@ self: {
 
   "indigo" = callPackage
     ({ mkDerivation, base, casing, cleveland, constraints, containers
-     , directory, fmt, hedgehog, hspec-expectations, HUnit, lorentz
-     , megaparsec, microlens-th, morley, morley-prelude
+     , directory, file-embed, fmt, hedgehog, hspec-expectations, HUnit
+     , lorentz, megaparsec, microlens-th, morley, morley-prelude
      , optparse-applicative, process, reflection, shelly, singletons
      , string-interpolate, summoner, tasty, tasty-discover
      , tasty-hedgehog, tasty-hunit-compat, template-haskell, text, vinyl
@@ -144595,8 +144762,8 @@ self: {
      }:
      mkDerivation {
        pname = "indigo";
-       version = "0.4";
-       sha256 = "1qa6xbzyfl1f1c6kw71b0zi538zxql07kidkmsjz91sy9nrc93ml";
+       version = "0.5.0";
+       sha256 = "121y842b8ik37lp01k9gqh8g63wcpn32w7br7nw9valjjxmc3dkg";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -144605,7 +144772,7 @@ self: {
          with-utf8
        ];
        executableHaskellDepends = [
-         base directory megaparsec morley morley-prelude
+         base directory file-embed megaparsec morley morley-prelude
          optparse-applicative process shelly string-interpolate summoner
          text with-utf8
        ];
@@ -145004,8 +145171,8 @@ self: {
      }:
      mkDerivation {
        pname = "inline-c";
-       version = "0.9.1.3";
-       sha256 = "1b2dcyg6b15q5n7k9k391y78wblqlvkrwxr8hbnp0y6x8h8l8ma8";
+       version = "0.9.1.4";
+       sha256 = "021r3ghn3cv1nykkkgyd50gq5cmczam8j37xqfi7vmyx5iwdv0a2";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -152000,6 +152167,8 @@ self: {
        ];
        description = "Katip scribe for raven (https://sentry.io)";
        license = stdenv.lib.licenses.asl20;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "katip-rollbar" = callPackage
@@ -153357,6 +153526,8 @@ self: {
        ];
        description = "Kleene algebra";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "kleene-list" = callPackage
@@ -155080,6 +155251,8 @@ self: {
        pname = "lame";
        version = "0.2.0";
        sha256 = "1bqq3aanfffdsl3v0am7jdfslcr6y372cq7jx36z7g09zy5mp2sp";
+       revision = "1";
+       editedCabalFile = "1czjga37b56xs6jrylsf5gip5srmlfg2982k96l5w4300sj8ricz";
        enableSeparateDataOutput = true;
        libraryHaskellDepends = [
          base bytestring directory exceptions filepath text transformers
@@ -156919,6 +157092,8 @@ self: {
        ];
        description = "Fine-grained library for constructing and manipulating lattices";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "launchdarkly-server-sdk" = callPackage
@@ -157755,6 +157930,8 @@ self: {
        benchmarkHaskellDepends = [ base bytestring criterion deepseq ];
        description = "LEB128 encoding logic for and in Haskell";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "leb128-cereal" = callPackage
@@ -159400,21 +159577,21 @@ self: {
 
   "libmpd" = callPackage
     ({ mkDerivation, attoparsec, base, bytestring, containers
-     , data-default-class, filepath, hspec, mtl, network, old-locale
-     , QuickCheck, safe-exceptions, text, time, unix, utf8-string
+     , data-default-class, filepath, hspec, mtl, network, QuickCheck
+     , safe-exceptions, text, time, unix, utf8-string
      }:
      mkDerivation {
        pname = "libmpd";
-       version = "0.9.2.0";
-       sha256 = "0vjzwdxlldn07v9mkkx5vbh4pmz7s71qjh4c126f968a807zmqrn";
+       version = "0.9.3.0";
+       sha256 = "08bi0m7kxh2ppkabq5vsx1cwz3i1y4y7w4j0g1hi9q9raml6y0y9";
        libraryHaskellDepends = [
          attoparsec base bytestring containers data-default-class filepath
-         mtl network old-locale safe-exceptions text time utf8-string
+         mtl network safe-exceptions text time utf8-string
        ];
        testHaskellDepends = [
          attoparsec base bytestring containers data-default-class filepath
-         hspec mtl network old-locale QuickCheck safe-exceptions text time
-         unix utf8-string
+         hspec mtl network QuickCheck safe-exceptions text time unix
+         utf8-string
        ];
        description = "An MPD client library";
        license = stdenv.lib.licenses.mit;
@@ -160499,8 +160676,8 @@ self: {
      }:
      mkDerivation {
        pname = "line-bot-sdk";
-       version = "0.5.2";
-       sha256 = "1vrfq9v8lv5nwdmy7n99p7dnm10b35ng5n24ncjq54i0ci2ldi75";
+       version = "0.6.0";
+       sha256 = "13flx2vkm2112agygb4f1924mq79a8i1739mm8lp8v2v32cjngp5";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -160515,8 +160692,8 @@ self: {
        testHaskellDepends = [
          aeson aeson-qq base base64-bytestring bytestring cryptohash-sha256
          deepseq free hspec hspec-expectations hspec-wai http-client
-         http-types servant servant-client servant-client-core
-         servant-server text time transformers wai warp
+         http-client-tls http-types servant servant-client
+         servant-client-core servant-server text time transformers wai warp
        ];
        description = "Haskell SDK for LINE Messaging API";
        license = stdenv.lib.licenses.bsd3;
@@ -160547,6 +160724,8 @@ self: {
        testHaskellDepends = [ base hspec QuickCheck ];
        description = "raster line drawing";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "line-size" = callPackage
@@ -161965,8 +162144,8 @@ self: {
     ({ mkDerivation, base, doctest, mtl }:
      mkDerivation {
        pname = "list-transformer";
-       version = "1.0.6";
-       sha256 = "0gc36nhx3a8rks943fyrnqzp47cp8gg58yijpfqxig086gblmwpl";
+       version = "1.0.7";
+       sha256 = "1i8zmds67fyglbw1ygcyffly5ykq62p2hcm23vxrxvj3ryq9iih8";
        libraryHaskellDepends = [ base mtl ];
        testHaskellDepends = [ base doctest ];
        description = "List monad transformer";
@@ -165150,6 +165329,24 @@ self: {
        license = "GPL-2.0-or-later AND BSD-3-Clause";
      }) {};
 
+  "lukko_0_1_1_3" = callPackage
+    ({ mkDerivation, async, base, bytestring, filepath, singleton-bool
+     , tasty, tasty-expected-failure, tasty-hunit, temporary
+     }:
+     mkDerivation {
+       pname = "lukko";
+       version = "0.1.1.3";
+       sha256 = "07xb926kixqv5scqdl8w34z42zjzdpbq06f0ha3f3nm3rxhgn3m8";
+       libraryHaskellDepends = [ base ];
+       testHaskellDepends = [
+         async base bytestring filepath singleton-bool tasty
+         tasty-expected-failure tasty-hunit temporary
+       ];
+       description = "File locking";
+       license = "GPL-2.0-or-later AND BSD-3-Clause";
+       hydraPlatforms = stdenv.lib.platforms.none;
+     }) {};
+
   "lumberjack" = callPackage
     ({ mkDerivation, base, contravariant, exceptions, mtl
      , prettyprinter, prettyprinter-ansi-terminal, text, time
@@ -165513,8 +165710,8 @@ self: {
      }:
      mkDerivation {
        pname = "lzlib";
-       version = "1.0.7.0";
-       sha256 = "0dwwnpfzy5sg4cylpcz3d1aq26grdq0jvidw97x2fkcq2j4d9bak";
+       version = "1.0.7.1";
+       sha256 = "18y6diahfvqvv3qp6ch1jbi9jwz6li4xm1y1c5pi2895h4c51ljf";
        libraryHaskellDepends = [ base bytestring ];
        libraryToolDepends = [ c2hs ];
        testHaskellDepends = [
@@ -166359,17 +166556,15 @@ self: {
      }) {};
 
   "mail-reports" = callPackage
-    ({ mkDerivation, aeson, base, bytestring, mtl, resourcet, streaming
-     , streaming-bytestring, streaming-utils, text, time, xml
-     , zip-archive
+    ({ mkDerivation, aeson, base, bytestring, mtl, text, time, xml
+     , zip-archive, zlib
      }:
      mkDerivation {
        pname = "mail-reports";
-       version = "0.2.0.0";
-       sha256 = "1g3jazpcyhsmiz9i9vx0n784n2n9nqzrbbnjhjlzji2si9gnkg9z";
+       version = "0.3.0.0";
+       sha256 = "10n3q21d3ihqj1v2zsi4674jbvwbfjh0bkan6nml30k3ahw86xxa";
        libraryHaskellDepends = [
-         aeson base bytestring mtl resourcet streaming streaming-bytestring
-         streaming-utils text time xml zip-archive
+         aeson base bytestring mtl text time xml zip-archive zlib
        ];
        description = "A parser library for DMARC and SMTP TLS reports";
        license = stdenv.lib.licenses.agpl3;
@@ -167875,6 +168070,28 @@ self: {
        license = stdenv.lib.licenses.bsd3;
      }) {};
 
+  "massiv-persist" = callPackage
+    ({ mkDerivation, base, bytestring, deepseq, doctest, hspec
+     , hspec-discover, massiv, massiv-test, persist, primitive
+     , QuickCheck
+     }:
+     mkDerivation {
+       pname = "massiv-persist";
+       version = "0.1.0.0";
+       sha256 = "0w3hm8mzk2vsd0myk7sl1cckl2yhr7b1y9qb9nzph5gw99hsc761";
+       libraryHaskellDepends = [
+         base bytestring deepseq massiv persist primitive
+       ];
+       testHaskellDepends = [
+         base doctest hspec massiv massiv-test persist QuickCheck
+       ];
+       testToolDepends = [ hspec-discover ];
+       description = "Compatibility of 'massiv' with 'persist'";
+       license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
+     }) {};
+
   "massiv-scheduler" = callPackage
     ({ mkDerivation, atomic-primops, base, Cabal, cabal-doctest
      , deepseq, doctest, exceptions, hspec, QuickCheck, template-haskell
@@ -167895,6 +168112,25 @@ self: {
        license = stdenv.lib.licenses.bsd3;
      }) {};
 
+  "massiv-serialise" = callPackage
+    ({ mkDerivation, base, deepseq, doctest, hspec, hspec-discover
+     , massiv, massiv-test, QuickCheck, serialise, vector
+     }:
+     mkDerivation {
+       pname = "massiv-serialise";
+       version = "0.1.0.0";
+       sha256 = "0780lggn343k64ph3c27zhkkx0gmk9zfvv5pxz6zl1817xfqzc83";
+       libraryHaskellDepends = [ base deepseq massiv serialise vector ];
+       testHaskellDepends = [
+         base doctest hspec massiv massiv-test QuickCheck serialise
+       ];
+       testToolDepends = [ hspec-discover ];
+       description = "Compatibility of 'massiv' with 'serialise'";
+       license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
+     }) {};
+
   "massiv-test" = callPackage
     ({ mkDerivation, base, bytestring, containers, data-default
      , data-default-class, deepseq, exceptions, genvalidity-hspec, hspec
@@ -168481,6 +168717,18 @@ self: {
        license = stdenv.lib.licenses.bsd3;
      }) {};
 
+  "matroid" = callPackage
+    ({ mkDerivation, base, containers, hspec, QuickCheck }:
+     mkDerivation {
+       pname = "matroid";
+       version = "0.0.0";
+       sha256 = "0k7x9m8zn45s9r9frpqagrjkwbmfd9hfx2v1kwx7h5gfdkmkpb5z";
+       libraryHaskellDepends = [ base containers hspec QuickCheck ];
+       testHaskellDepends = [ base containers hspec QuickCheck ];
+       description = "matroid (combinatorial pre-geometries) library";
+       license = stdenv.lib.licenses.bsd3;
+     }) {};
+
   "matsuri" = callPackage
     ({ mkDerivation, base, ConfigFile, containers, directory, MissingH
      , mtl, network, old-locale, split, time, vty, vty-ui, XMPP
@@ -168925,6 +169173,8 @@ self: {
        ];
        description = "Sample from a posterior using Markov chain Monte Carlo";
        license = stdenv.lib.licenses.gpl3Plus;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "mcmc-samplers" = callPackage
@@ -170420,6 +170670,19 @@ self: {
        broken = true;
      }) {};
 
+  "method" = callPackage
+    ({ mkDerivation, base, hspec, hspec-discover, rio, transformers }:
+     mkDerivation {
+       pname = "method";
+       version = "0.1.0.0";
+       sha256 = "0j8jvjc663gkmx7bpzj30q1sfqpxjg16166xklvvgk0i01zh4rw7";
+       libraryHaskellDepends = [ base rio transformers ];
+       testHaskellDepends = [ base hspec rio transformers ];
+       testToolDepends = [ hspec-discover ];
+       description = "rebindable methods for improving testability";
+       license = stdenv.lib.licenses.bsd3;
+     }) {};
+
   "metric" = callPackage
     ({ mkDerivation, base, data-default, edit-distance, hmatrix
      , QuickCheck, test-framework, test-framework-quickcheck2, vector
@@ -171035,6 +171298,24 @@ self: {
        license = stdenv.lib.licenses.bsd3;
      }) {};
 
+  "microlens-th_0_4_3_9" = callPackage
+    ({ mkDerivation, base, containers, microlens, tagged
+     , template-haskell, th-abstraction, transformers
+     }:
+     mkDerivation {
+       pname = "microlens-th";
+       version = "0.4.3.9";
+       sha256 = "08gfqf24r95dcnw4jlnhh8ijmfwiyr9zaiiz4lbzp72hrkarlbiw";
+       libraryHaskellDepends = [
+         base containers microlens template-haskell th-abstraction
+         transformers
+       ];
+       testHaskellDepends = [ base microlens tagged ];
+       description = "Automatic generation of record lenses for microlens";
+       license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+     }) {};
+
   "micrologger" = callPackage
     ({ mkDerivation, aeson, base, bytestring, containers, hspec, lens
      , text, text-format, time, transformers
@@ -172720,8 +173001,8 @@ self: {
        pname = "mmark-cli";
        version = "0.0.5.0";
        sha256 = "15qrp2q1flx9csqvj8zx9w1jqg8pwfi0v7wpia7n7vg09jgydhby";
-       revision = "5";
-       editedCabalFile = "1ncyh564gk6fhirx97jnr6v2nw3k69kngxd3gbn9wbi6hm6zz238";
+       revision = "6";
+       editedCabalFile = "1qki0f2iwr9phma4wby3alnsxigzl5qc1ims8cvhszkill9yfi4z";
        isLibrary = false;
        isExecutable = true;
        executableHaskellDepends = [
@@ -180889,8 +181170,8 @@ self: {
      }:
      mkDerivation {
        pname = "neptune-backend";
-       version = "0.2.1";
-       sha256 = "0i6dw3g1sdhnf33g88rp251irzfmvvl77fz3ihvwzmy44qavdhrp";
+       version = "0.3.0";
+       sha256 = "0lsimmpy5wpgsq5pn6zp386wnzqi04mql3vj03d8iadckyjizgvl";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -180908,6 +181189,8 @@ self: {
        ];
        description = "Neptune Client";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "nerf" = callPackage
@@ -181132,6 +181415,8 @@ self: {
        ];
        description = "An MQTT Protocol Implementation";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "net-mqtt-lens" = callPackage
@@ -181148,6 +181433,8 @@ self: {
        ];
        description = "Optics for net-mqtt";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "net-mqtt-rpc" = callPackage
@@ -181169,6 +181456,8 @@ self: {
        ];
        description = "Make RPC calls via an MQTT broker";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "net-spider" = callPackage
@@ -181193,6 +181482,8 @@ self: {
        ];
        description = "A graph database middleware to maintain a time-varying graph";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "net-spider-cli" = callPackage
@@ -181213,6 +181504,8 @@ self: {
        ];
        description = "CLI option parsers for NetSpider objects";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "net-spider-pangraph" = callPackage
@@ -183665,8 +183958,8 @@ self: {
      }:
      mkDerivation {
        pname = "niv";
-       version = "0.2.18";
-       sha256 = "1jgljmj7msix2vn9nxip9q4754hx4739w4r7sa05l6q4ba5ilwqd";
+       version = "0.2.19";
+       sha256 = "15smcgr81ryxb3a57b88azz2xsvcq92n0cmjam8v1x8r6j0w0p39";
        isLibrary = true;
        isExecutable = true;
        enableSeparateDataOutput = true;
@@ -183741,6 +184034,8 @@ self: {
        pname = "nix-derivation";
        version = "1.1.1";
        sha256 = "1jcgq7c0x6q33ddq3ns4w69z23r31cvb2qxj04v2pyd5v8rwls9d";
+       revision = "1";
+       editedCabalFile = "1ink37s91kbrq8p0sqyi1i90xp2jimyg1cnzy9ydjh3iv21f7pi5";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -183918,19 +184213,20 @@ self: {
      }) {};
 
   "nix-tree" = callPackage
-    ({ mkDerivation, aeson, async, base, brick, containers, deepseq
-     , directory, filepath, hashable, hrfsize, lens, parallel, protolude
-     , text, transformers, typed-process, unordered-containers, vty
+    ({ mkDerivation, aeson, async, base, brick, bytestring, containers
+     , deepseq, directory, filepath, hashable, hrfsize, lens, parallel
+     , protolude, text, transformers, typed-process
+     , unordered-containers, vty
      }:
      mkDerivation {
        pname = "nix-tree";
-       version = "0.1.3.0";
-       sha256 = "03ih8gz26rpkipd46zbrkpr9lp23q0nnq8ks6j80d32096n7q59i";
+       version = "0.1.3.1";
+       sha256 = "1rihvfvfsrkgvq87bli9gzpbv1ny93n21cf31bid1b3g3cwadffp";
        isLibrary = false;
        isExecutable = true;
        executableHaskellDepends = [
-         aeson async base brick containers deepseq directory filepath
-         hashable hrfsize lens parallel protolude text transformers
+         aeson async base brick bytestring containers deepseq directory
+         filepath hashable hrfsize lens parallel protolude text transformers
          typed-process unordered-containers vty
        ];
        description = "Interactively browse a Nix store paths dependencies";
@@ -187673,6 +187969,44 @@ self: {
        license = stdenv.lib.licenses.bsd3;
      }) {};
 
+  "openai-hs" = callPackage
+    ({ mkDerivation, aeson, base, bytestring, casing, containers, cpphs
+     , hspec, http-client, http-client-tls, http-types, openai-servant
+     , servant, servant-client, servant-client-core, text, vector
+     }:
+     mkDerivation {
+       pname = "openai-hs";
+       version = "0.1.1.0";
+       sha256 = "0cfcw1jlsvzzyvxi2wmqn3klh0fr8rpi8ai6sg315ml7ignyfxz5";
+       libraryHaskellDepends = [
+         aeson base casing cpphs http-client http-types openai-servant
+         servant servant-client text
+       ];
+       testHaskellDepends = [
+         aeson base bytestring casing containers cpphs hspec http-client
+         http-client-tls http-types openai-servant servant servant-client
+         servant-client-core text vector
+       ];
+       description = "Unofficial OpenAI client";
+       license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
+     }) {};
+
+  "openai-servant" = callPackage
+    ({ mkDerivation, aeson, base, casing, servant, text, time, vector
+     }:
+     mkDerivation {
+       pname = "openai-servant";
+       version = "0.1.0.0";
+       sha256 = "0fn8ram1rnf9qgs7iwl579gdz8z1qfjy6hhgk0n2z1dh28lhgq6d";
+       libraryHaskellDepends = [
+         aeson base casing servant text time vector
+       ];
+       description = "Unofficial OpenAI servant types";
+       license = stdenv.lib.licenses.bsd3;
+     }) {};
+
   "openapi-petstore" = callPackage
     ({ mkDerivation, aeson, base, base64-bytestring, bytestring
      , case-insensitive, containers, deepseq, exceptions, hspec
@@ -189459,6 +189793,8 @@ self: {
        testToolDepends = [ hspec-discover ];
        description = "Convert numbers to words in different languages";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "ordrea" = callPackage
@@ -189706,6 +190042,8 @@ self: {
        pname = "ormolu";
        version = "0.1.4.1";
        sha256 = "1aamgzimjn9h7kwby9ajfgbj5dx08nmxyalwvpg9rs4xd8pbpd9s";
+       revision = "1";
+       editedCabalFile = "1fi8fxyhw9jdwhsbmrikjqd461wrz7h4kdszrahlvdjfdsn4wh7d";
        isLibrary = true;
        isExecutable = true;
        enableSeparateDataOutput = true;
@@ -191128,8 +191466,8 @@ self: {
      }:
      mkDerivation {
        pname = "pandoc-plot";
-       version = "1.0.1.0";
-       sha256 = "0p7sfsi70vbwkxwknl5k31qsvnkwvhdjr8c2q7y0pjz3xz9zdrjq";
+       version = "1.0.2.0";
+       sha256 = "10iwhwr3161mx438bi3q9m15wj60fs5hr6q90g3jqiv6w18n6zdm";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -191307,8 +191645,8 @@ self: {
     ({ mkDerivation }:
      mkDerivation {
        pname = "pandora";
-       version = "0.3.3";
-       sha256 = "16jaq5q0b2q230iwhfhs2p1fmmqb38zssr7zbgjmry2045ya2dhh";
+       version = "0.3.4";
+       sha256 = "0xmf75v6b5cj083fjxz3hl6cj9ix2v68h8ix5zrh94qik5is4rl7";
        description = "A box of patterns and paradigms";
        license = stdenv.lib.licenses.mit;
      }) {};
@@ -192349,8 +192687,8 @@ self: {
      }:
      mkDerivation {
        pname = "parochial";
-       version = "0.1.0.0";
-       sha256 = "14sjpm97cl3i4ndnl8dmqd08an6y7n11yarhfw5wr7k5l3lrw64c";
+       version = "0.2.0.0";
+       sha256 = "0sb42rln3svcfs78ab2fs6kq3k975xin6gqnm83rg3kryaawnra7";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -192363,6 +192701,8 @@ self: {
        ];
        description = "Help Manage project specific documentation";
        license = stdenv.lib.licenses.agpl3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "parport" = callPackage
@@ -193111,25 +193451,26 @@ self: {
 
   "passman" = callPackage
     ({ mkDerivation, aeson, base, base16-bytestring, base64-bytestring
-     , bytestring, containers, easy-file, HCL, HUnit, lens, random, SHA
-     , text, transformers
+     , bytestring, containers, easy-file, HCL, HUnit, microlens
+     , microlens-th, random, SHA, text, transformers
      }:
      mkDerivation {
        pname = "passman";
-       version = "0.2.1";
-       sha256 = "0xa7cc38x012nznp5cwma44gf11v24w7h7cja869i282v7g5693b";
+       version = "0.3.0";
+       sha256 = "1m3g4ah1wvga3kq9krvg13niisq4rqkb7i6f6lil39v6lplq5drq";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
          aeson base base16-bytestring base64-bytestring bytestring
-         containers lens random SHA text
+         containers microlens microlens-th random SHA text
        ];
        executableHaskellDepends = [
-         aeson base bytestring containers easy-file HCL lens random
-         transformers
+         aeson base bytestring containers easy-file HCL microlens
+         microlens-th random transformers
        ];
        testHaskellDepends = [
-         aeson base bytestring containers HUnit lens random
+         aeson base bytestring containers HUnit microlens microlens-th
+         random
        ];
        description = "a simple password manager";
        license = stdenv.lib.licenses.lgpl3;
@@ -195744,6 +196085,8 @@ self: {
        ];
        description = "Backend for the persistent library using ODBC";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "persistent-pagination" = callPackage
@@ -196895,6 +197238,73 @@ self: {
        license = stdenv.lib.licenses.mit;
      }) {};
 
+  "phonetic-languages-simplified-examples-array" = callPackage
+    ({ mkDerivation, base, heaps, mmsyn2-array, parallel
+     , phonetic-languages-constraints-array
+     , phonetic-languages-filters-array
+     , phonetic-languages-permutations-array, phonetic-languages-plus
+     , phonetic-languages-rhythmicity
+     , phonetic-languages-simplified-base
+     , phonetic-languages-simplified-examples-common
+     , phonetic-languages-simplified-properties-array
+     , phonetic-languages-ukrainian-array, print-info, subG
+     , ukrainian-phonetics-basic-array, uniqueness-periods-vector-stats
+     }:
+     mkDerivation {
+       pname = "phonetic-languages-simplified-examples-array";
+       version = "0.2.1.0";
+       sha256 = "12ri0dv6ifswnp983asa0yyd7xl58ic22payxpri6653f58lkc4h";
+       isLibrary = true;
+       isExecutable = true;
+       libraryHaskellDepends = [
+         base heaps mmsyn2-array parallel
+         phonetic-languages-constraints-array
+         phonetic-languages-filters-array
+         phonetic-languages-permutations-array phonetic-languages-plus
+         phonetic-languages-rhythmicity phonetic-languages-simplified-base
+         phonetic-languages-simplified-examples-common
+         phonetic-languages-simplified-properties-array
+         phonetic-languages-ukrainian-array subG
+         ukrainian-phonetics-basic-array uniqueness-periods-vector-stats
+       ];
+       executableHaskellDepends = [
+         base heaps mmsyn2-array parallel
+         phonetic-languages-constraints-array
+         phonetic-languages-filters-array
+         phonetic-languages-permutations-array phonetic-languages-plus
+         phonetic-languages-rhythmicity phonetic-languages-simplified-base
+         phonetic-languages-simplified-examples-common
+         phonetic-languages-simplified-properties-array
+         phonetic-languages-ukrainian-array print-info subG
+         ukrainian-phonetics-basic-array uniqueness-periods-vector-stats
+       ];
+       description = "Helps to create Ukrainian texts with the given phonetic properties";
+       license = stdenv.lib.licenses.mit;
+     }) {};
+
+  "phonetic-languages-simplified-examples-common" = callPackage
+    ({ mkDerivation, base, heaps, mmsyn2-array
+     , phonetic-languages-constraints-array
+     , phonetic-languages-simplified-common
+     , phonetic-languages-simplified-properties-lists-double
+     , phonetic-languages-ukrainian-array, subG
+     , ukrainian-phonetics-basic-array
+     }:
+     mkDerivation {
+       pname = "phonetic-languages-simplified-examples-common";
+       version = "0.1.0.0";
+       sha256 = "0khgv7gycsr1qvc0d158ics2zmxvpybrr5k105ifq93y2qgcjqpa";
+       libraryHaskellDepends = [
+         base heaps mmsyn2-array phonetic-languages-constraints-array
+         phonetic-languages-simplified-common
+         phonetic-languages-simplified-properties-lists-double
+         phonetic-languages-ukrainian-array subG
+         ukrainian-phonetics-basic-array
+       ];
+       description = "Some commonly used by phonetic-languages-simplified* series functions";
+       license = stdenv.lib.licenses.mit;
+     }) {};
+
   "phonetic-languages-simplified-lists-examples" = callPackage
     ({ mkDerivation, base, heaps, mmsyn2, parallel
      , phonetic-languages-constraints, phonetic-languages-permutations
@@ -196936,8 +197346,8 @@ self: {
      }:
      mkDerivation {
        pname = "phonetic-languages-simplified-properties-array";
-       version = "0.1.0.0";
-       sha256 = "0p072ydixsfi5ps45qi147gd5lsahpykw27ar8n5zb6sihsvklzp";
+       version = "0.1.1.0";
+       sha256 = "0ildphgb5dd2s5hc4nr7ii9q9dzm0qa7vc2j4yjcis72jjzjx6nd";
        libraryHaskellDepends = [
          base phonetic-languages-rhythmicity
          phonetic-languages-simplified-base ukrainian-phonetics-basic-array
@@ -200122,6 +200532,8 @@ self: {
        doHaddock = false;
        description = "Tool for refactoring expressions into pointfree form";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "pointful" = callPackage
@@ -201092,6 +201504,8 @@ self: {
        ];
        description = "Maps and sets of partial orders";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "pomodoro" = callPackage
@@ -201374,6 +201788,8 @@ self: {
        testToolDepends = [ hspec-discover ];
        description = "Static key-value storage backed by poppy";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "poppler" = callPackage
@@ -202343,8 +202759,8 @@ self: {
      }:
      mkDerivation {
        pname = "postgresql-query";
-       version = "3.7.0";
-       sha256 = "0raxd0vd6hf772g11x8p0c6h86sipwk74z5kfxb38mbi26yj0p24";
+       version = "3.8.0";
+       sha256 = "1bk355kqsiyxn269bp5icf5s80p2bzxy08r8g8llainppjxnq8n8";
        libraryHaskellDepends = [
          aeson attoparsec base blaze-builder bytestring containers
          data-default exceptions file-embed haskell-src-meta hreader hset
@@ -202413,6 +202829,35 @@ self: {
        license = stdenv.lib.licenses.bsd3;
      }) {};
 
+  "postgresql-simple_0_6_4" = callPackage
+    ({ mkDerivation, aeson, attoparsec, base, base16-bytestring
+     , bytestring, bytestring-builder, case-insensitive, containers
+     , cryptohash-md5, filepath, hashable, HUnit, inspection-testing
+     , Only, postgresql-libpq, scientific, tasty, tasty-golden
+     , tasty-hunit, template-haskell, text, time-compat, transformers
+     , uuid-types, vector
+     }:
+     mkDerivation {
+       pname = "postgresql-simple";
+       version = "0.6.4";
+       sha256 = "0rz2bklxp4pvbxb2w49h5p6pbwabn6d5d4j4mrya4fpa0d13k43d";
+       libraryHaskellDepends = [
+         aeson attoparsec base bytestring bytestring-builder
+         case-insensitive containers hashable Only postgresql-libpq
+         scientific template-haskell text time-compat transformers
+         uuid-types vector
+       ];
+       testHaskellDepends = [
+         aeson base base16-bytestring bytestring case-insensitive containers
+         cryptohash-md5 filepath HUnit inspection-testing postgresql-libpq
+         tasty tasty-golden tasty-hunit text time-compat vector
+       ];
+       benchmarkHaskellDepends = [ base vector ];
+       description = "Mid-Level PostgreSQL client library";
+       license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+     }) {};
+
   "postgresql-simple-bind" = callPackage
     ({ mkDerivation, attoparsec, base, bytestring, data-default
      , exceptions, heredoc, hspec, postgresql-simple, template-haskell
@@ -203874,27 +204319,29 @@ self: {
 
   "preql" = callPackage
     ({ mkDerivation, aeson, alex, array, base, binary-parser
-     , bytestring, bytestring-strict-builder, contravariant, free, happy
-     , mtl, postgresql-binary, postgresql-libpq, scientific, tasty
+     , bytestring, bytestring-strict-builder, containers, contravariant
+     , generic-random, happy, hedgehog, mtl, postgresql-binary
+     , postgresql-libpq, scientific, syb, tasty, tasty-hedgehog
      , tasty-hunit, template-haskell, text, th-lift-instances, time
-     , transformers, uuid, vector
+     , transformers, uuid, vector, vector-sized
      }:
      mkDerivation {
        pname = "preql";
-       version = "0.3";
-       sha256 = "03zdkxlkvqyccvi682w0inxl70fvzi4l56kicp9qrb661jaqvy9q";
+       version = "0.4";
+       sha256 = "142vq05flg052016npvh1xrk3w1dkks5gn58ivning6w1d0z1v1a";
        libraryHaskellDepends = [
          aeson array base binary-parser bytestring bytestring-strict-builder
-         contravariant free mtl postgresql-binary postgresql-libpq
-         scientific template-haskell text th-lift-instances time
-         transformers uuid vector
+         contravariant mtl postgresql-binary postgresql-libpq scientific syb
+         template-haskell text th-lift-instances time transformers uuid
+         vector vector-sized
        ];
        libraryToolDepends = [ alex happy ];
        testHaskellDepends = [
          aeson array base binary-parser bytestring bytestring-strict-builder
-         contravariant free mtl postgresql-binary postgresql-libpq
-         scientific tasty tasty-hunit template-haskell text
-         th-lift-instances time transformers uuid vector
+         containers contravariant generic-random hedgehog mtl
+         postgresql-binary postgresql-libpq scientific syb tasty
+         tasty-hedgehog tasty-hunit template-haskell text th-lift-instances
+         time transformers uuid vector vector-sized
        ];
        testToolDepends = [ alex happy ];
        description = "safe PostgreSQL queries using Quasiquoters";
@@ -205643,8 +206090,6 @@ self: {
        ];
        description = "Treemap visualiser for GHC prof files";
        license = stdenv.lib.licenses.bsd3;
-       hydraPlatforms = stdenv.lib.platforms.none;
-       broken = true;
      }) {};
 
   "profunctor-arrows" = callPackage
@@ -206099,17 +206544,18 @@ self: {
     ({ mkDerivation, aeson, base, bytestring, cassava, containers
      , generic-random, lens, mongoDB, mtl, network-uri, persistent
      , persistent-mongoDB, QuickCheck, quickcheck-instances
-     , safe-exceptions, scientific, swagger2, text, time, uuid, vector
+     , safe-exceptions, scientific, servant, swagger2, text, time, uuid
+     , vector
      }:
      mkDerivation {
        pname = "prolude";
-       version = "0.0.0.14";
-       sha256 = "1lsr85ibkrdcmwg66iiazr3wksk66153l2wdlk583q71w2r5h6is";
+       version = "0.0.0.15";
+       sha256 = "1hm24qz13yrhvg8a0xx781pv29lbxzdzazk7byfjqv4dsy8c7mkp";
        libraryHaskellDepends = [
          aeson base bytestring cassava containers generic-random lens
          mongoDB mtl network-uri persistent persistent-mongoDB QuickCheck
-         quickcheck-instances safe-exceptions scientific swagger2 text time
-         uuid vector
+         quickcheck-instances safe-exceptions scientific servant swagger2
+         text time uuid vector
        ];
        description = "ITProTV's custom prelude";
        license = stdenv.lib.licenses.mit;
@@ -206550,6 +206996,8 @@ self: {
        libraryToolDepends = [ c2hs ];
        description = "Simple audio library for SDL";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {inherit (pkgs) SDL2;};
 
   "proteome" = callPackage
@@ -206627,6 +207075,8 @@ self: {
        ];
        description = "Arbitrary instances for proto-lens";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "proto-lens-combinators" = callPackage
@@ -207080,6 +207530,24 @@ self: {
        broken = true;
      }) {};
 
+  "proton" = callPackage
+    ({ mkDerivation, adjunctions, base, bifunctors, comonad
+     , compactable, containers, contravariant, distributive, linear, mtl
+     , profunctors, tagged
+     }:
+     mkDerivation {
+       pname = "proton";
+       version = "0.0.1";
+       sha256 = "0l3176d1vjvknns2dx7qnwi7n45mc6v4qx9iv3z4488msjfqx6gf";
+       libraryHaskellDepends = [
+         adjunctions base bifunctors comonad compactable containers
+         contravariant distributive linear mtl profunctors tagged
+       ];
+       license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
+     }) {};
+
   "proton-haskell" = callPackage
     ({ mkDerivation, base, containers, directory, filepath, HUnit
      , test-framework, test-framework-hunit
@@ -207403,8 +207871,8 @@ self: {
      }:
      mkDerivation {
        pname = "ptr-poker";
-       version = "0.1.1.2";
-       sha256 = "06h267z01cvk2sck7ycbi8vssg4985nh7cxx2mw92hiqj1kqp0gp";
+       version = "0.1.1.3";
+       sha256 = "1qrcsci4jccx4l1zlpqr202jl2dhpmcbbq94gfgdax80q8js3yrq";
        libraryHaskellDepends = [ base bytestring scientific text ];
        testHaskellDepends = [ hedgehog numeric-limits rerebase ];
        benchmarkHaskellDepends = [ gauge rerebase ];
@@ -207899,6 +208367,8 @@ self: {
        benchmarkHaskellDepends = [ base base-compat bytestring time ];
        description = "A Haskell-only implementation of zlib / DEFLATE";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "pureMD5" = callPackage
@@ -209687,8 +210157,8 @@ self: {
      }:
      mkDerivation {
        pname = "quickcheck-instances";
-       version = "0.3.25.1";
-       sha256 = "06gg3y56ws1bc9yz00fmm0i5vrmqd2mqlxnbxp676yksfyr80qxd";
+       version = "0.3.25.2";
+       sha256 = "0ihqbarl2ddrfgq3mq09lswwn8213qpw13g49qxs5mjkcm6gbk3h";
        libraryHaskellDepends = [
          array base bytestring case-insensitive containers data-fix hashable
          integer-logarithms old-time QuickCheck scientific splitmix strict
@@ -209941,14 +210411,16 @@ self: {
      }:
      mkDerivation {
        pname = "quickcheck-string-random";
-       version = "0.1.3.0";
-       sha256 = "0pyh2xa68d6jhca1lr5ymmxqs19m17hjxdlrplyl0pww65mfrj8d";
+       version = "0.1.4.0";
+       sha256 = "08ikiqgzhizg4acv9kba6glwa47xzpdzrpzcz95kcw7b90q9qqp9";
        libraryHaskellDepends = [ base QuickCheck string-random text ];
        testHaskellDepends = [
          base QuickCheck tasty tasty-quickcheck text
        ];
        description = "Helper to build generators with Text.StringRandom";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "quickcheck-text" = callPackage
@@ -210017,8 +210489,8 @@ self: {
      }:
      mkDerivation {
        pname = "quickjs-hs";
-       version = "0.1.2.3";
-       sha256 = "1azd2173hwij0z2qxn4k6fi7bkiyaar0q751z15byhbdzil7pf1d";
+       version = "0.1.2.4";
+       sha256 = "18b9yp87v94bcjy68jip2n31f5hajn0509p9z7yhgv8647pdvnx7";
        libraryHaskellDepends = [
          aeson base bytestring containers exceptions inline-c mtl scientific
          string-conv text time transformers unliftio-core
@@ -210664,20 +211136,22 @@ self: {
      }) {};
 
   "r-glpk-phonetic-languages-ukrainian-durations" = callPackage
-    ({ mkDerivation, base, lists-flines, mmsyn2
-     , ukrainian-phonetics-basic, vector
+    ({ mkDerivation, base, foldable-ix, lists-flines, mmsyn2-array
+     , ukrainian-phonetics-basic-array
      }:
      mkDerivation {
        pname = "r-glpk-phonetic-languages-ukrainian-durations";
-       version = "0.2.2.0";
-       sha256 = "1svwml88hfnpdgbnny8nzga9gxnmgjggnkks8gz9dplcf8w1w39d";
+       version = "0.3.0.0";
+       sha256 = "0x4i2qj1zq9r2641bwrx2x18c61ziddf8p10hfgz6hr449h6w5v3";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
-         base lists-flines mmsyn2 ukrainian-phonetics-basic vector
+         base foldable-ix lists-flines mmsyn2-array
+         ukrainian-phonetics-basic-array
        ];
        executableHaskellDepends = [
-         base lists-flines mmsyn2 ukrainian-phonetics-basic vector
+         base foldable-ix lists-flines mmsyn2-array
+         ukrainian-phonetics-basic-array
        ];
        description = "Can be used to calculate the durations of the approximations of the Ukrainian phonemes";
        license = stdenv.lib.licenses.mit;
@@ -211319,8 +211793,8 @@ self: {
        pname = "random";
        version = "1.2.0";
        sha256 = "1pmr7zbbqg58kihhhwj8figf5jdchhi7ik2apsyxbgsqq3vrqlg4";
-       revision = "3";
-       editedCabalFile = "04hrdpc4h35dqbwyc4vfp2hw7wsr6b121f3rm8l94j11kli4108y";
+       revision = "4";
+       editedCabalFile = "08mq836ganl3sq6mfn3hrj6xm0h30klp21y7gbd9md2882agndrk";
        libraryHaskellDepends = [ base bytestring deepseq mtl splitmix ];
        testHaskellDepends = [
          base bytestring containers doctest mwc-random primitive smallcheck
@@ -212538,6 +213012,8 @@ self: {
        benchmarkHaskellDepends = [ base gauge mwc-random ];
        description = "Randomized Binary Search Trees";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "rc" = callPackage
@@ -213410,29 +213886,28 @@ self: {
     ({ mkDerivation, aeson, ansi-terminal, array, attoparsec, base
      , base64-bytestring, bytestring, cassava, cereal, colour
      , containers, cryptohash-sha256, cubicbezier, directory, filelock
-     , filepath, fingertree, fsnotify, geojson, ghcid, hashable
-     , hgeometry, hgeometry-combinatorial, JuicyPixels, lens, linear
-     , matrix, mtl, neat-interpolation, open-browser
-     , optparse-applicative, parallel, process, QuickCheck, random
-     , random-shuffle, reanimate-svg, split, tasty
-     , tasty-expected-failure, tasty-golden, tasty-hunit
-     , tasty-quickcheck, tasty-rerun, temporary, text, time
-     , unordered-containers, vector, vector-space, websockets, xml
+     , filepath, fingertree, fsnotify, geojson, hashable, hgeometry
+     , hgeometry-combinatorial, JuicyPixels, lens, linear, matrix, mtl
+     , neat-interpolation, network, open-browser, optparse-applicative
+     , parallel, process, QuickCheck, random, random-shuffle
+     , reanimate-svg, split, tasty, tasty-expected-failure, tasty-golden
+     , tasty-hunit, tasty-quickcheck, tasty-rerun, temporary, text, time
+     , unix, unordered-containers, vector, vector-space, websockets, xml
      }:
      mkDerivation {
        pname = "reanimate";
-       version = "1.1.2.1";
-       sha256 = "043jpim33pliymnks47i39hz36wp61rvwjyk9f0k89whsi74bkd6";
+       version = "1.1.3.1";
+       sha256 = "0x2pfbf712lixpj1mv1gvv26xi80shiq3798mkd0kqmvzkz57aqz";
        enableSeparateDataOutput = true;
        libraryHaskellDepends = [
          aeson ansi-terminal array attoparsec base base64-bytestring
          bytestring cassava cereal colour containers cryptohash-sha256
          cubicbezier directory filelock filepath fingertree fsnotify geojson
-         ghcid hashable hgeometry hgeometry-combinatorial JuicyPixels lens
-         linear matrix mtl neat-interpolation open-browser
+         hashable hgeometry hgeometry-combinatorial JuicyPixels lens linear
+         matrix mtl neat-interpolation network open-browser
          optparse-applicative parallel process random random-shuffle
-         reanimate-svg split temporary text time unordered-containers vector
-         vector-space websockets xml
+         reanimate-svg split temporary text time unix unordered-containers
+         vector vector-space websockets xml
        ];
        testHaskellDepends = [
          base bytestring directory filepath linear process QuickCheck tasty
@@ -214904,6 +215379,33 @@ self: {
        broken = true;
      }) {};
 
+  "reflex-gi-gtk" = callPackage
+    ({ mkDerivation, async, base, containers, dependent-sum
+     , exception-transformers, gi-gdk, gi-glib, gi-gtk, haskell-gi-base
+     , mtl, patch, primitive, ref-tf, reflex, semialign, stm, text
+     , these, witherable
+     }:
+     mkDerivation {
+       pname = "reflex-gi-gtk";
+       version = "0.2.0.0";
+       sha256 = "0dx9g5v5i0fhxn1kn6fsj8hpwnax8wq89drsv8q2fwk9pxd8i384";
+       isLibrary = true;
+       isExecutable = true;
+       libraryHaskellDepends = [
+         async base containers dependent-sum exception-transformers gi-gdk
+         gi-glib gi-gtk haskell-gi-base mtl primitive ref-tf reflex
+         semialign stm text these witherable
+       ];
+       executableHaskellDepends = [
+         base containers dependent-sum gi-gtk haskell-gi-base mtl patch
+         reflex text
+       ];
+       description = "Helper functions to use reflex with gi-gtk";
+       license = stdenv.lib.licenses.mpl20;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
+     }) {};
+
   "reflex-gloss" = callPackage
     ({ mkDerivation, base, dependent-sum, gloss, mtl, reflex
      , transformers
@@ -217349,6 +217851,22 @@ self: {
        license = stdenv.lib.licenses.bsd2;
      }) {};
 
+  "replace-attoparsec_1_4_4_0" = callPackage
+    ({ mkDerivation, attoparsec, base, bytestring, Cabal, parsers, text
+     }:
+     mkDerivation {
+       pname = "replace-attoparsec";
+       version = "1.4.4.0";
+       sha256 = "06js4adbzvm2qn18vlaaxhav2dq1hqp825lmsvpg69cylp72fzif";
+       libraryHaskellDepends = [ attoparsec base bytestring text ];
+       testHaskellDepends = [
+         attoparsec base bytestring Cabal parsers text
+       ];
+       description = "Find, replace, and split string patterns with Attoparsec parsers (instead of regex)";
+       license = stdenv.lib.licenses.bsd2;
+       hydraPlatforms = stdenv.lib.platforms.none;
+     }) {};
+
   "replace-megaparsec" = callPackage
     ({ mkDerivation, base, bytestring, Cabal, megaparsec
      , parser-combinators, text
@@ -217584,6 +218102,8 @@ self: {
        pname = "req";
        version = "3.8.0";
        sha256 = "1qd0bawdxig6sldlhqgj8cpkzfy7da9yy0wkvzs6mps6yk14kbap";
+       revision = "1";
+       editedCabalFile = "1gkd25bg87r0dr8rb04r3scjfm66v88905490fiy4x1826gj9cv0";
        enableSeparateDataOutput = true;
        libraryHaskellDepends = [
          aeson authenticate-oauth base blaze-builder bytestring
@@ -217611,8 +218131,8 @@ self: {
        pname = "req-conduit";
        version = "1.0.0";
        sha256 = "193bv4jp7rrbpb1i9as9s2l978wz5kbz5kvr7ppllif5ppj699qx";
-       revision = "7";
-       editedCabalFile = "08ynq0760hd2v1pmbfmc2n71vjr33qmv1cgnklbqn2ibzbg3mmx2";
+       revision = "8";
+       editedCabalFile = "1md7zajmw87qrx6rvs35yrkbjs3s9nm0akg35jmf7a34xccrr7a7";
        libraryHaskellDepends = [
          base bytestring conduit http-client req resourcet transformers
        ];
@@ -219039,8 +219559,8 @@ self: {
      }:
      mkDerivation {
        pname = "rhbzquery";
-       version = "0.4.1";
-       sha256 = "0zfn9bzgm3wb2apnnnakh0lmys0nf9a2ch797m1sfsrbx2mjqvmh";
+       version = "0.4.2";
+       sha256 = "1j9nxizi1wsgz5gamdn9izy4aq6ci41gbkvsw7bbpc8fnvv5gpd2";
        isLibrary = false;
        isExecutable = true;
        executableHaskellDepends = [
@@ -220185,6 +220705,8 @@ self: {
        ];
        description = "RocksDB database querying library for Haskell";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "roguestar" = callPackage
@@ -220621,6 +221143,20 @@ self: {
        license = stdenv.lib.licenses.gpl3;
      }) {};
 
+  "rose" = callPackage
+    ({ mkDerivation, base, comonad, free, indexed-traversable
+     , QuickCheck, quickcheck-classes
+     }:
+     mkDerivation {
+       pname = "rose";
+       version = "0.1";
+       sha256 = "1nmprllcihxif0m7p484afrmcabxhc2v5z5g3j3j658z6mbn1b2g";
+       libraryHaskellDepends = [ base comonad free indexed-traversable ];
+       testHaskellDepends = [ base QuickCheck quickcheck-classes ];
+       description = "rose trees";
+       license = stdenv.lib.licenses.bsd3;
+     }) {};
+
   "rose-trees" = callPackage
     ({ mkDerivation, base, containers, criterion, deepseq, hashable
      , mtl, QuickCheck, quickcheck-instances, semigroupoids, semigroups
@@ -220681,6 +221217,8 @@ self: {
        testToolDepends = [ hspec-discover ];
        description = "Common rose tree/forest functions";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "rosezipper" = callPackage
@@ -221773,6 +222311,8 @@ self: {
        benchmarkHaskellDepends = [ base criterion ];
        description = "RISC-V";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "rvar" = callPackage
@@ -224707,6 +225247,8 @@ self: {
        ];
        description = "Core Package for scrapbook";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "scrape-changes" = callPackage
@@ -226148,6 +226690,22 @@ self: {
        license = stdenv.lib.licenses.bsd3;
      }) {};
 
+  "semirings_0_6" = callPackage
+    ({ mkDerivation, base, base-compat-batteries, containers, hashable
+     , unordered-containers
+     }:
+     mkDerivation {
+       pname = "semirings";
+       version = "0.6";
+       sha256 = "16q535bvjl7395sqkx6zlw48y4fzr7irp44pcp7w9irpn4cncdcr";
+       libraryHaskellDepends = [
+         base base-compat-batteries containers hashable unordered-containers
+       ];
+       description = "two monoids as one, in holy haskimony";
+       license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+     }) {};
+
   "semver" = callPackage
     ({ mkDerivation, attoparsec, base, criterion, deepseq, hashable
      , tasty, tasty-hunit, text
@@ -226214,15 +226772,19 @@ self: {
      }) {};
 
   "sendgrid-v3" = callPackage
-    ({ mkDerivation, aeson, base, lens, semigroups, tasty, tasty-hunit
-     , text, wreq
+    ({ mkDerivation, aeson, base, bytestring, http-client, lens
+     , semigroups, tasty, tasty-hunit, text, wreq
      }:
      mkDerivation {
        pname = "sendgrid-v3";
-       version = "0.1.2.0";
-       sha256 = "06j07c86560f4w4vpx6gbnmrbyhs9i69jksliifsd9a9flg93vx3";
-       libraryHaskellDepends = [ aeson base lens semigroups text wreq ];
-       testHaskellDepends = [ base semigroups tasty tasty-hunit text ];
+       version = "0.3.0.0";
+       sha256 = "0b1m2r0zq3f3ggy9nds42rf0w25p08mkcs9crvckmvqjhmwik1cm";
+       libraryHaskellDepends = [
+         aeson base bytestring http-client lens semigroups text wreq
+       ];
+       testHaskellDepends = [
+         base lens semigroups tasty tasty-hunit text wreq
+       ];
        description = "Sendgrid v3 API library";
        license = stdenv.lib.licenses.mit;
        hydraPlatforms = stdenv.lib.platforms.none;
@@ -227047,6 +227609,8 @@ self: {
        testToolDepends = [ hspec-discover ];
        description = "servant-docs/servant-auth compatibility";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "servant-auth-hmac" = callPackage
@@ -227359,6 +227923,8 @@ self: {
        ];
        description = "Checked exceptions for Servant APIs";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "servant-checked-exceptions-core" = callPackage
@@ -227380,6 +227946,8 @@ self: {
        testHaskellDepends = [ base doctest Glob ];
        description = "Checked exceptions for Servant APIs";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "servant-cli" = callPackage
@@ -227638,6 +228206,8 @@ self: {
        ];
        description = "generate API docs for your servant webservice";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "servant-docs-simple" = callPackage
@@ -228029,6 +228599,8 @@ self: {
        testToolDepends = [ hspec-discover markdown-unlit ];
        description = "Automatic derivation of querying functions for servant";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "servant-http2-client" = callPackage
@@ -228318,6 +228890,8 @@ self: {
        ];
        description = "multipart/form-data (e.g file upload) support for servant";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "servant-named" = callPackage
@@ -228700,6 +229274,8 @@ self: {
        ];
        description = "Documentation generator for 'RawM' endpoints";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "servant-rawm-server" = callPackage
@@ -229961,6 +230537,8 @@ self: {
        executableToolDepends = [ alex happy ];
        description = "Treating files as sets to perform rapid set manipulation";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "setenv" = callPackage
@@ -232229,6 +232807,8 @@ self: {
        ];
        description = "Arithmetic over signs and sets of signs";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "signable" = callPackage
@@ -234858,6 +235438,8 @@ self: {
        executableHaskellDepends = [ base ];
        description = "Handle molecular sequences";
        license = stdenv.lib.licenses.gpl3Plus;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "small-bytearray-builder" = callPackage
@@ -236608,6 +237190,8 @@ self: {
        ];
        description = "persistent snaplet for the Snap Framework";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "snaplet-postgresql-simple" = callPackage
@@ -237922,26 +238506,19 @@ self: {
      }) {};
 
   "souffle-haskell" = callPackage
-    ({ mkDerivation, array, base, containers, deepseq, directory, extra
-     , filepath, hedgehog, hspec, hspec-hedgehog, megaparsec, mtl
+    ({ mkDerivation, array, base, containers, deepseq, directory
+     , filepath, hedgehog, hspec, hspec-hedgehog, mtl
      , neat-interpolation, process, template-haskell, temporary, text
      , type-errors-pretty, vector
      }:
      mkDerivation {
        pname = "souffle-haskell";
-       version = "2.0.1";
-       sha256 = "1imnmgx2wpxx2g51ajcsvnrpwvw97wmind9wzfirfx4l7zr3cp7d";
-       isLibrary = true;
-       isExecutable = true;
+       version = "2.1.0";
+       sha256 = "1szkv27my46xgwqanhb6wkgncll08yznpl0p2m1wq5cifxir2m7h";
        libraryHaskellDepends = [
          array base containers deepseq directory filepath mtl process
          template-haskell temporary text type-errors-pretty vector
        ];
-       executableHaskellDepends = [
-         array base containers deepseq directory extra filepath megaparsec
-         mtl process template-haskell temporary text type-errors-pretty
-         vector
-       ];
        testHaskellDepends = [
          array base containers deepseq directory filepath hedgehog hspec
          hspec-hedgehog mtl neat-interpolation process template-haskell
@@ -239705,6 +240282,8 @@ self: {
        testHaskellDepends = [ base mtl sqlite-simple text ];
        description = "Wrapper around errors from sqlite-simple";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "sqlite-simple-typed" = callPackage
@@ -240269,8 +240848,8 @@ self: {
        pname = "stache";
        version = "2.2.0";
        sha256 = "09cfj8hs2249gqf0nrlv9b8vg8gmxabs7ndxasphxdd0rb1y3z3g";
-       revision = "2";
-       editedCabalFile = "1p435wl5c50wjz5s07p102dlyg3pby7n918gp4za0crgb8fi99xh";
+       revision = "3";
+       editedCabalFile = "1wjdn7qsrfnz2cqwx2pggi8ak3pj01zsmax14gvb8xsq4w9crdvx";
        isLibrary = true;
        isExecutable = true;
        enableSeparateDataOutput = true;
@@ -240437,8 +241016,8 @@ self: {
      }:
      mkDerivation {
        pname = "stack-clean-old";
-       version = "0.2.2";
-       sha256 = "0d755pndi990l1g0nkzhylz8ki4zz8vs40axnrl7wqcc430vwa24";
+       version = "0.3";
+       sha256 = "1nszwagwsc6n02smqg70c79a21q9bwamlk4nqqbgzp009jfv0b7c";
        isLibrary = false;
        isExecutable = true;
        executableHaskellDepends = [
@@ -240726,6 +241305,8 @@ self: {
        ];
        description = "Convert stack projects to cabal.project + cabal.project.freeze";
        license = stdenv.lib.licenses.gpl3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "stack2nix" = callPackage
@@ -243920,6 +244501,8 @@ self: {
        testSystemDepends = [ lmdb ];
        description = "Stream data to or from LMDB databases using the streamly library";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {inherit (pkgs) lmdb;};
 
   "streamly-posix" = callPackage
@@ -244463,6 +245046,33 @@ self: {
        ];
        description = "A library for generating random string from a regular experession";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
+     }) {};
+
+  "string-random_0_1_4_0" = callPackage
+    ({ mkDerivation, attoparsec, base, bytestring, containers
+     , optparse-applicative, pcre-heavy, QuickCheck, random, tasty
+     , tasty-hunit, tasty-quickcheck, text, transformers
+     }:
+     mkDerivation {
+       pname = "string-random";
+       version = "0.1.4.0";
+       sha256 = "09xv1jbhsz8hfxc6y54fj4pkhyxfbfh53i6kxy408zm3raa2nmii";
+       isLibrary = true;
+       isExecutable = true;
+       libraryHaskellDepends = [
+         attoparsec base containers random text transformers
+       ];
+       executableHaskellDepends = [ base optparse-applicative text ];
+       testHaskellDepends = [
+         base bytestring pcre-heavy QuickCheck tasty tasty-hunit
+         tasty-quickcheck text
+       ];
+       description = "A library for generating random string from a regular experession";
+       license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "string-similarity" = callPackage
@@ -244717,6 +245327,8 @@ self: {
        ];
        description = "Unofficial Stripe client";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "stripe-http-client" = callPackage
@@ -246433,6 +247045,31 @@ self: {
        broken = true;
      }) {inherit (pkgs) librsvg;};
 
+  "svgone" = callPackage
+    ({ mkDerivation, base, bytestring, containers, directory, extra
+     , filepath, generic-lens, lens, linear, mtl, pretty-simple, process
+     , reanimate-svg, safe, text
+     }:
+     mkDerivation {
+       pname = "svgone";
+       version = "0.2.0.0";
+       sha256 = "1r176z555amzfj1jxpgc6n495rp60v829d5raab8nddj5rhr5p35";
+       isLibrary = true;
+       isExecutable = true;
+       libraryHaskellDepends = [
+         base bytestring containers directory extra filepath generic-lens
+         lens linear mtl pretty-simple process reanimate-svg safe text
+       ];
+       executableHaskellDepends = [
+         base bytestring containers directory extra filepath generic-lens
+         lens linear mtl pretty-simple process reanimate-svg safe text
+       ];
+       description = "Optimise SVGs";
+       license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
+     }) {};
+
   "svgutils" = callPackage
     ({ mkDerivation, base, filepath, xml }:
      mkDerivation {
@@ -247227,8 +247864,8 @@ self: {
      }:
      mkDerivation {
        pname = "symantic-parser";
-       version = "0.0.0.20210101";
-       sha256 = "04lc4wyg4gi0781nd2wzi5s96r0x7kd3yknhhdfx9m0w83qqwwj2";
+       version = "0.0.0.20210102";
+       sha256 = "00gmcbn1amdr9nx54wia898gc7437563g9gpvlkhsg9r7197acid";
        libraryHaskellDepends = [
          array base bytestring containers ghc-prim hashable template-haskell
          text transformers unordered-containers
@@ -247240,6 +247877,8 @@ self: {
        ];
        description = "Parser combinators statically optimized and staged via typed meta-programming";
        license = stdenv.lib.licenses.gpl3Plus;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "symantic-xml" = callPackage
@@ -248478,6 +249117,8 @@ self: {
        ];
        description = "Format tabular data as grid or table";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "table-tennis" = callPackage
@@ -249709,15 +250350,15 @@ self: {
        license = stdenv.lib.licenses.mit;
      }) {};
 
-  "tasty_1_4_0_1" = callPackage
+  "tasty_1_4_0_2" = callPackage
     ({ mkDerivation, ansi-terminal, base, clock, containers, mtl
      , optparse-applicative, stm, tagged, unbounded-delays, unix
      , wcwidth
      }:
      mkDerivation {
        pname = "tasty";
-       version = "1.4.0.1";
-       sha256 = "1ffq2gpasdqm2drhd2aglcq33yrpb1h3grfyqyc34amz65bfczqq";
+       version = "1.4.0.2";
+       sha256 = "143ybyjgqin1jzd597wxgr66rambhnk93gk7knjs2f8j23vrr7n0";
        libraryHaskellDepends = [
          ansi-terminal base clock containers mtl optparse-applicative stm
          tagged unbounded-delays unix wcwidth
@@ -250331,6 +250972,8 @@ self: {
        ];
        description = "A fancy test runner, including support for golden tests";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "tasty-smallcheck" = callPackage
@@ -250704,30 +251347,6 @@ self: {
      }) {};
 
   "tdigest" = callPackage
-    ({ mkDerivation, base, base-compat, binary, Cabal, cabal-doctest
-     , deepseq, doctest, reducers, semigroupoids, semigroups, tasty
-     , tasty-quickcheck, transformers, vector, vector-algorithms
-     }:
-     mkDerivation {
-       pname = "tdigest";
-       version = "0.2.1";
-       sha256 = "0kmqmzjcs406hv2fv9bkfayxpsd41dbry8bpkhy4y1jdgh33hvnl";
-       revision = "5";
-       editedCabalFile = "1crjfhxhs8ihbl2xn1dqr5w19g7w74mcf2w889my6zb935l7lyjs";
-       setupHaskellDepends = [ base Cabal cabal-doctest ];
-       libraryHaskellDepends = [
-         base base-compat binary deepseq reducers semigroupoids transformers
-         vector vector-algorithms
-       ];
-       testHaskellDepends = [
-         base base-compat binary deepseq doctest semigroups tasty
-         tasty-quickcheck vector vector-algorithms
-       ];
-       description = "On-line accumulation of rank-based statistics";
-       license = stdenv.lib.licenses.bsd3;
-     }) {};
-
-  "tdigest_0_2_1_1" = callPackage
     ({ mkDerivation, base, base-compat, binary, deepseq, reducers
      , semigroupoids, semigroups, tasty, tasty-quickcheck, transformers
      , vector, vector-algorithms
@@ -250746,7 +251365,6 @@ self: {
        ];
        description = "On-line accumulation of rank-based statistics";
        license = stdenv.lib.licenses.bsd3;
-       hydraPlatforms = stdenv.lib.platforms.none;
      }) {};
 
   "tdigest-Chart" = callPackage
@@ -251157,6 +251775,29 @@ self: {
        broken = true;
      }) {};
 
+  "telegraph" = callPackage
+    ({ mkDerivation, aeson, base, bytestring, conduit, deriving-aeson
+     , exceptions, generic-data-surgery, http-client, http-client-tls
+     , http-conduit, monad-control, mtl, text, transformers-base
+     }:
+     mkDerivation {
+       pname = "telegraph";
+       version = "0.1.0";
+       sha256 = "0rl3di034ln127pp8gzdjxlgbas93jjzxikacvhpyzgcpskd78y9";
+       libraryHaskellDepends = [
+         aeson base bytestring conduit deriving-aeson exceptions
+         generic-data-surgery http-client http-conduit monad-control mtl
+         text transformers-base
+       ];
+       testHaskellDepends = [
+         aeson base bytestring conduit deriving-aeson exceptions
+         generic-data-surgery http-client http-client-tls http-conduit
+         monad-control mtl text transformers-base
+       ];
+       description = "Binding to the telegraph API";
+       license = stdenv.lib.licenses.bsd3;
+     }) {};
+
   "teleport" = callPackage
     ({ mkDerivation, aeson, ansi-terminal, base, bytestring
      , configurator, optparse-applicative, system-filepath, text, turtle
@@ -251934,6 +252575,8 @@ self: {
        testHaskellDepends = [ base containers HUnit QuickCheck ];
        description = "Term Rewriting Library";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "termbox" = callPackage
@@ -252132,8 +252775,8 @@ self: {
      }:
      mkDerivation {
        pname = "termonad";
-       version = "4.0.1.2";
-       sha256 = "0gf1p3bjc42jmw5jb7ysm0vnyk5zah8y6fv23k8b6r2zdr8p9v6w";
+       version = "4.1.0.0";
+       sha256 = "17b9fxs9dc2pb8v2fxnly968v3bcy8g756r60nibd04fisrd1pmk";
        isLibrary = true;
        isExecutable = true;
        enableSeparateDataOutput = true;
@@ -253112,6 +253755,18 @@ self: {
        license = stdenv.lib.licenses.bsd3;
      }) {};
 
+  "text-ansi_0_1_1" = callPackage
+    ({ mkDerivation, base, text }:
+     mkDerivation {
+       pname = "text-ansi";
+       version = "0.1.1";
+       sha256 = "1vcrsg7v8n6znh1pd9kbm20bc6dg3zijd3xjdjljadf15vfkd5f6";
+       libraryHaskellDepends = [ base text ];
+       description = "Text styling for ANSI terminals";
+       license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+     }) {};
+
   "text-binary" = callPackage
     ({ mkDerivation, base, binary, text }:
      mkDerivation {
@@ -253919,8 +254574,8 @@ self: {
     ({ mkDerivation, base, deepseq, hspec, QuickCheck, text, vector }:
      mkDerivation {
        pname = "text-zipper";
-       version = "0.10.1";
-       sha256 = "0jxicjp0ak1fyl1n3yspxq6hv9l90zzy75glsv8bc2svsn9ypyls";
+       version = "0.11";
+       sha256 = "07l1pyx93gv95cn1wh1di129axhm9sqsn4znykliacv60ld854ys";
        enableSeparateDataOutput = true;
        libraryHaskellDepends = [ base deepseq text vector ];
        testHaskellDepends = [ base hspec QuickCheck text ];
@@ -254987,6 +255642,35 @@ self: {
        broken = true;
      }) {};
 
+  "thock" = callPackage
+    ({ mkDerivation, aeson, base, brick, containers, file-embed, lens
+     , mtl, network, random, text, text-zipper, time, vector, vty
+     , websockets
+     }:
+     mkDerivation {
+       pname = "thock";
+       version = "0.2.0.0";
+       sha256 = "1wj3zldfqpa8xvk62qv13frhxmrjhrjismcb9iyblkrwlcxzfyns";
+       isLibrary = true;
+       isExecutable = true;
+       libraryHaskellDepends = [
+         aeson base brick containers file-embed lens mtl network random text
+         text-zipper time vector vty websockets
+       ];
+       executableHaskellDepends = [
+         aeson base brick containers file-embed lens mtl network random text
+         text-zipper time vector vty websockets
+       ];
+       testHaskellDepends = [
+         aeson base brick containers file-embed lens mtl network random text
+         text-zipper time vector vty websockets
+       ];
+       description = "A modern TUI typing game featuring online racing against friends";
+       license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
+     }) {};
+
   "thorn" = callPackage
     ({ mkDerivation, base, bifunctors, containers, contravariant, mtl
      , profunctors, random, template-haskell
@@ -255180,8 +255864,6 @@ self: {
        ];
        description = "A graphical tool for profiling parallel Haskell programs";
        license = stdenv.lib.licenses.bsd3;
-       hydraPlatforms = stdenv.lib.platforms.none;
-       broken = true;
      }) {};
 
   "threefish" = callPackage
@@ -257068,6 +257750,108 @@ self: {
        license = stdenv.lib.licenses.bsd3;
      }) {};
 
+  "tlex" = callPackage
+    ({ mkDerivation, base, Cabal, cabal-doctest, containers, doctest
+     , hspec, hspec-discover, QuickCheck, tlex-core
+     }:
+     mkDerivation {
+       pname = "tlex";
+       version = "0.1.0.0";
+       sha256 = "1qcn9m3zj33scvydshaqlnag5cw49vr2p7dh6z1fssbn061ik4iv";
+       setupHaskellDepends = [ base Cabal cabal-doctest ];
+       libraryHaskellDepends = [ base containers tlex-core ];
+       testHaskellDepends = [
+         base containers doctest hspec QuickCheck tlex-core
+       ];
+       testToolDepends = [ hspec-discover ];
+       description = "A lexer generator";
+       license = "(Apache-2.0 OR MPL-2.0)";
+     }) {};
+
+  "tlex-core" = callPackage
+    ({ mkDerivation, array, base, Cabal, cabal-doctest, containers
+     , doctest, hashable, hspec, hspec-discover, QuickCheck
+     , transformers, unordered-containers
+     }:
+     mkDerivation {
+       pname = "tlex-core";
+       version = "0.1.0.0";
+       sha256 = "009xld55rrch7r1ld9s8l3syahqnfphazl211gsaahck9f9ii3bh";
+       setupHaskellDepends = [ base Cabal cabal-doctest ];
+       libraryHaskellDepends = [
+         array base containers hashable transformers unordered-containers
+       ];
+       testHaskellDepends = [
+         array base containers doctest hashable hspec QuickCheck
+         transformers unordered-containers
+       ];
+       testToolDepends = [ hspec-discover ];
+       description = "A lexer generator";
+       license = "(Apache-2.0 OR MPL-2.0)";
+     }) {};
+
+  "tlex-debug" = callPackage
+    ({ mkDerivation, base, Cabal, cabal-doctest, containers, doctest
+     , hspec, hspec-discover, QuickCheck, tlex, tlex-core
+     , unordered-containers
+     }:
+     mkDerivation {
+       pname = "tlex-debug";
+       version = "0.1.0.0";
+       sha256 = "1jxflcmgkqh24ybhpbzhxvmqywh6197xzi24ma074zzfyzf07jgx";
+       setupHaskellDepends = [ base Cabal cabal-doctest ];
+       libraryHaskellDepends = [
+         base containers tlex tlex-core unordered-containers
+       ];
+       testHaskellDepends = [
+         base containers doctest hspec QuickCheck tlex tlex-core
+         unordered-containers
+       ];
+       testToolDepends = [ hspec-discover ];
+       description = "Debug utilities for Tlex";
+       license = "(Apache-2.0 OR MPL-2.0)";
+     }) {};
+
+  "tlex-encoding" = callPackage
+    ({ mkDerivation, base, Cabal, cabal-doctest, charset, containers
+     , doctest, hspec, hspec-discover, QuickCheck, tlex, tlex-core
+     }:
+     mkDerivation {
+       pname = "tlex-encoding";
+       version = "0.1.0.0";
+       sha256 = "1m5sp3paklybg94r2g5wyzgnqdzxs3a4gn7lknj1a3wdwhz9cc17";
+       setupHaskellDepends = [ base Cabal cabal-doctest ];
+       libraryHaskellDepends = [ base charset containers tlex tlex-core ];
+       testHaskellDepends = [
+         base charset containers doctest hspec QuickCheck tlex tlex-core
+       ];
+       testToolDepends = [ hspec-discover ];
+       description = "Encoding plugin for Tlex";
+       license = "(Apache-2.0 OR MPL-2.0)";
+     }) {};
+
+  "tlex-th" = callPackage
+    ({ mkDerivation, array, base, Cabal, cabal-doctest, containers
+     , doctest, ghc-prim, hspec, hspec-discover, QuickCheck
+     , template-haskell, tlex, tlex-core
+     }:
+     mkDerivation {
+       pname = "tlex-th";
+       version = "0.1.0.0";
+       sha256 = "0iy6xnp9nm17jcjkgnlyc3pdiwlkgxzqhi4pgv4a29kmvvy5izcz";
+       setupHaskellDepends = [ base Cabal cabal-doctest ];
+       libraryHaskellDepends = [
+         array base containers ghc-prim template-haskell tlex tlex-core
+       ];
+       testHaskellDepends = [
+         array base containers doctest ghc-prim hspec QuickCheck
+         template-haskell tlex tlex-core
+       ];
+       testToolDepends = [ hspec-discover ];
+       description = "TemplateHaskell plugin for Tlex";
+       license = "(Apache-2.0 OR MPL-2.0)";
+     }) {};
+
   "tls" = callPackage
     ({ mkDerivation, asn1-encoding, asn1-types, async, base, bytestring
      , cereal, cryptonite, data-default-class, gauge, hourglass, memory
@@ -257170,6 +257954,8 @@ self: {
        executableHaskellDepends = [ base ];
        description = "Handle phylogenetic trees";
        license = stdenv.lib.licenses.gpl3Plus;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "tmapchan" = callPackage
@@ -257629,6 +258415,8 @@ self: {
        pname = "tokyocabinet-haskell";
        version = "0.0.6";
        sha256 = "1cav27hnl49ghl6f7mhyaqmvfdqib6s76z251vai4vih9psis8rk";
+       revision = "1";
+       editedCabalFile = "1mk2nwi51zm0b2081db26xipwa0yd53ikhxa5vd8fp8x2w52wliw";
        libraryHaskellDepends = [ base bytestring mtl ];
        librarySystemDepends = [ tokyocabinet ];
        testHaskellDepends = [ base bytestring directory HUnit mtl ];
@@ -257840,6 +258628,8 @@ self: {
        ];
        description = "tonatona plugin for accessing PostgreSQL database";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "tonatona-persistent-sqlite" = callPackage
@@ -257860,6 +258650,8 @@ self: {
        ];
        description = "tonatona plugin for accessing Sqlite database";
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "tonatona-servant" = callPackage
@@ -260632,6 +261424,8 @@ self: {
        executableHaskellDepends = [ base text time ttn ];
        description = "TheThingsNetwork client";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "ttrie" = callPackage
@@ -264387,6 +265181,8 @@ self: {
        testToolDepends = [ hspec-discover ];
        description = "Functions to work with unicode blocks more convenient";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "unicoder" = callPackage
@@ -264547,6 +265343,8 @@ self: {
        pname = "uniplate";
        version = "1.6.13";
        sha256 = "1lis5qcb5j7yzd1cqjaqpb6bmkyjfb7l4nhk3ykmcma4513cjxz7";
+       revision = "1";
+       editedCabalFile = "1rvvzmi43gbrww0f17dzchm3g61zvm97arrfa5raljqb1mbibdy8";
        libraryHaskellDepends = [
          base containers ghc-prim hashable syb unordered-containers
        ];
@@ -264570,6 +265368,8 @@ self: {
        ];
        description = "UniProt-KB format parser";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "uniq-deep" = callPackage
@@ -264588,14 +265388,12 @@ self: {
      }) {};
 
   "unique" = callPackage
-    ({ mkDerivation, base, ghc-prim, hashable }:
+    ({ mkDerivation, base, hashable }:
      mkDerivation {
        pname = "unique";
-       version = "0";
-       sha256 = "140a9avcxs1fkj1v2awplq6prd1g13yg0kckccw6i1qpgcdigyz3";
-       revision = "2";
-       editedCabalFile = "0ydjjd6j7gr4mibky6j5rqwhy9frvfii0sr4g8shaxnph3y0kb6b";
-       libraryHaskellDepends = [ base ghc-prim hashable ];
+       version = "0.0.1";
+       sha256 = "1dgln2dr64ma1isqskj1qnjslg9smmr7jssg8hmk68wp36i3rwkd";
+       libraryHaskellDepends = [ base hashable ];
        description = "Fully concurrent unique identifiers";
        license = stdenv.lib.licenses.bsd3;
      }) {};
@@ -265010,6 +265808,8 @@ self: {
        ];
        description = "A class for finite and recursively enumerable types";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "universe-base" = callPackage
@@ -265025,6 +265825,8 @@ self: {
        testHaskellDepends = [ base containers QuickCheck ];
        description = "A class for finite and recursively enumerable types";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "universe-dependent-sum" = callPackage
@@ -265040,6 +265842,8 @@ self: {
        ];
        description = "Universe instances for types from dependent-sum";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "universe-instances-base" = callPackage
@@ -265053,6 +265857,8 @@ self: {
        libraryHaskellDepends = [ base universe-base ];
        description = "Universe instances for types from the base package";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "universe-instances-extended" = callPackage
@@ -265070,6 +265876,8 @@ self: {
        ];
        description = "Universe instances for types from selected extra packages";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "universe-instances-trans" = callPackage
@@ -265083,6 +265891,8 @@ self: {
        libraryHaskellDepends = [ base universe-base ];
        description = "Universe instances for types from the transformers and mtl packages";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "universe-reverse-instances" = callPackage
@@ -265096,6 +265906,8 @@ self: {
        libraryHaskellDepends = [ base containers universe-base ];
        description = "Instances of standard classes that are made possible by enumerations";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "universe-some" = callPackage
@@ -265115,6 +265927,8 @@ self: {
        testHaskellDepends = [ base some template-haskell universe-base ];
        description = "Universe instances for Some from some";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "universe-th" = callPackage
@@ -266895,14 +267709,13 @@ self: {
      }) {};
 
   "utf8-string" = callPackage
-    ({ mkDerivation, base, bytestring }:
+    ({ mkDerivation, base, bytestring, HUnit }:
      mkDerivation {
        pname = "utf8-string";
-       version = "1.0.1.1";
-       sha256 = "0h7imvxkahiy8pzr8cpsimifdfvv18lizrb33k6mnq70rcx9w2zv";
-       revision = "3";
-       editedCabalFile = "02vhj5gykkqa2dyn7s6gn8is1b5fdn9xcqqvlls268g7cpv6rk38";
+       version = "1.0.2";
+       sha256 = "16mh36ffva9rh6k37bi1046pgpj14h0cnmj1iir700v0lynxwj7f";
        libraryHaskellDepends = [ base bytestring ];
+       testHaskellDepends = [ base HUnit ];
        description = "Support for reading and writing UTF8 Strings";
        license = stdenv.lib.licenses.bsd3;
      }) {};
@@ -270379,8 +271192,8 @@ self: {
     ({ mkDerivation, base, bytestring, transformers, vector, vulkan }:
      mkDerivation {
        pname = "vulkan";
-       version = "3.8.2";
-       sha256 = "1wq3hd99zqzasfj4w86yypcd0yrdp8q3xrzx3g2v6vyi99qwzdrr";
+       version = "3.8.3";
+       sha256 = "0ml3zccwk86ryjgxhdc0qdvmjq1fmw4wrhblss4rdml9kww8y2ar";
        libraryHaskellDepends = [ base bytestring transformers vector ];
        librarySystemDepends = [ vulkan ];
        description = "Bindings to the Vulkan graphics API";
@@ -270811,8 +271624,8 @@ self: {
      }:
      mkDerivation {
        pname = "wai-extra";
-       version = "3.1.4.1";
-       sha256 = "0q95vz3x0avznpv0mcb71vlmamyws8sm50asrhcph5qwfwh9x13a";
+       version = "3.1.5";
+       sha256 = "1xq4w3i3mazdcpb7d60sag6bqqp33sgx0hf808bbjjk6bf03qraw";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -270824,7 +271637,8 @@ self: {
        ];
        testHaskellDepends = [
          aeson base bytestring case-insensitive cookie fast-logger hspec
-         http-types http2 HUnit resourcet text time transformers wai zlib
+         http-types http2 HUnit iproute resourcet text time transformers wai
+         zlib
        ];
        description = "Provides some basic WAI handlers and middleware";
        license = stdenv.lib.licenses.mit;
@@ -272795,6 +273609,8 @@ self: {
        pname = "wave";
        version = "0.2.0";
        sha256 = "149kgwngq3qxc7gxpkqb16j669j0wpv2f3gnvfwp58yg6m4259ki";
+       revision = "1";
+       editedCabalFile = "19rxhnqhhv1qs35y723c15c8nifj8pakcrd09jlvg5271zg4qb0b";
        enableSeparateDataOutput = true;
        libraryHaskellDepends = [
          base bytestring cereal containers transformers
@@ -274567,6 +275383,8 @@ self: {
        ];
        description = "Data types for large but fixed width signed and unsigned integers";
        license = stdenv.lib.licenses.bsd2;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "wigner-symbols" = callPackage
@@ -275414,6 +276232,8 @@ self: {
        testHaskellDepends = [ base smallcheck tasty tasty-smallcheck ];
        description = "Words of arbitrary size";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "word-trie" = callPackage
@@ -278016,6 +278836,22 @@ self: {
        license = stdenv.lib.licenses.bsd3;
      }) {};
 
+  "xml-lens_0_3" = callPackage
+    ({ mkDerivation, base, case-insensitive, containers, lens, text
+     , xml-conduit
+     }:
+     mkDerivation {
+       pname = "xml-lens";
+       version = "0.3";
+       sha256 = "1i3b22sz7fkh9vjlfpwzz6fg57br8xq6q7zz76f66h6hymc284dz";
+       libraryHaskellDepends = [
+         base case-insensitive containers lens text xml-conduit
+       ];
+       description = "Lenses, traversals, and prisms for xml-conduit";
+       license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+     }) {};
+
   "xml-monad" = callPackage
     ({ mkDerivation, base, mtl, transformers, transformers-compose, xml
      }:
@@ -281572,8 +282408,8 @@ self: {
      }:
      mkDerivation {
        pname = "yesod-form-multi";
-       version = "1.7.0";
-       sha256 = "02xba6x59sx8c72vazbl5jhjkxgni6h3bkvidr4hvqrx2bscmk45";
+       version = "1.7.0.1";
+       sha256 = "0dpcyq6l28zbm12rzjp18bhjaghf38jhjzj6qp40qyvb5f8yx9dp";
        libraryHaskellDepends = [
          base containers network-uri shakespeare text transformers
          yesod-core yesod-form
@@ -281832,8 +282668,8 @@ self: {
      }:
      mkDerivation {
        pname = "yesod-page-cursor";
-       version = "2.0.0.0";
-       sha256 = "0dlr16jkv104siq7r7ff02x60dy6bvhrgq43s5g8iydc9khafai8";
+       version = "2.0.0.1";
+       sha256 = "1fsq2shnn1izhw28f8dfyc8ssfxfjhzip0hh1cw80hpcg7q0pr73";
        libraryHaskellDepends = [
          aeson base bytestring containers http-link-header network-uri text
          unliftio yesod-core
@@ -281845,6 +282681,34 @@ self: {
          time unliftio unliftio-core wai-extra yesod yesod-core yesod-test
        ];
        license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
+     }) {};
+
+  "yesod-page-cursor_2_0_0_2" = callPackage
+    ({ mkDerivation, aeson, base, bytestring, containers, hspec
+     , hspec-expectations-lifted, http-link-header, http-types, lens
+     , lens-aeson, monad-logger, mtl, network-uri, persistent
+     , persistent-sqlite, persistent-template, scientific, text, time
+     , unliftio, unliftio-core, wai-extra, yesod, yesod-core, yesod-test
+     }:
+     mkDerivation {
+       pname = "yesod-page-cursor";
+       version = "2.0.0.2";
+       sha256 = "1wlwzxc2amnq1ma2lvclrc3dzhh8s6d8ffz6yk9rq88aijgvw35m";
+       libraryHaskellDepends = [
+         aeson base bytestring containers http-link-header network-uri text
+         unliftio yesod-core
+       ];
+       testHaskellDepends = [
+         aeson base bytestring hspec hspec-expectations-lifted
+         http-link-header http-types lens lens-aeson monad-logger mtl
+         persistent persistent-sqlite persistent-template scientific text
+         time unliftio unliftio-core wai-extra yesod yesod-core yesod-test
+       ];
+       license = stdenv.lib.licenses.mit;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "yesod-paginate" = callPackage
@@ -283572,6 +284436,8 @@ self: {
        testHaskellDepends = [ array base bytestring hspec mtl ];
        description = "Row-major coordinates";
        license = stdenv.lib.licenses.bsd3;
+       hydraPlatforms = stdenv.lib.platforms.none;
+       broken = true;
      }) {};
 
   "yxdb-utils" = callPackage
@@ -284405,6 +285271,8 @@ self: {
        pname = "zip";
        version = "1.6.0";
        sha256 = "1k00g2952yf3iyq1p6pjn307zsxsc9j3iq6lih3rr8vysiijivcx";
+       revision = "1";
+       editedCabalFile = "1x8f4l08cfi3sawmhmd7q8krmh3nylgd32q0qx4i2zh2kpvj4ww9";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
diff --git a/pkgs/development/haskell-modules/non-hackage-packages.nix b/pkgs/development/haskell-modules/non-hackage-packages.nix
index b31f6c6289d5..af317c92a5ab 100644
--- a/pkgs/development/haskell-modules/non-hackage-packages.nix
+++ b/pkgs/development/haskell-modules/non-hackage-packages.nix
@@ -25,6 +25,8 @@ self: super: {
   hls-tactics-plugin = self.callPackage ../tools/haskell/haskell-language-server/hls-tactics-plugin.nix { };
   hls-explicit-imports-plugin = self.callPackage ../tools/haskell/haskell-language-server/hls-explicit-imports-plugin.nix { };
   hls-retrie-plugin = self.callPackage ../tools/haskell/haskell-language-server/hls-retrie-plugin.nix { };
+  hls-class-plugin = self.callPackage ../tools/haskell/haskell-language-server/hls-class-plugin.nix { };
+  hls-eval-plugin = self.callPackage ../tools/haskell/haskell-language-server/hls-eval-plugin.nix { };
 
   nix-output-monitor = self.callPackage ../../tools/nix/nix-output-monitor { };
 
diff --git a/pkgs/development/interpreters/php/7.3.nix b/pkgs/development/interpreters/php/7.3.nix
index 30e26bf87a1b..13b64e8cb6e2 100644
--- a/pkgs/development/interpreters/php/7.3.nix
+++ b/pkgs/development/interpreters/php/7.3.nix
@@ -4,8 +4,8 @@ let
   generic = (import ./generic.nix) _args;
 
   base = callPackage generic (_args // {
-    version = "7.3.25";
-    sha256 = "1yq2fwpg9jgcafcrq4ffqm52r0f80pi6zy7fj1yb1qwim96mlcb9";
+    version = "7.3.26";
+    sha256 = "0klxnf6nhsib9b2mdls1x2wbpi04gmgwxajbn593rzalh5y5l7ip";
 
     # https://bugs.php.net/bug.php?id=76826
     extraPatches = lib.optional stdenv.isDarwin ./php73-darwin-isfinite.patch;
diff --git a/pkgs/development/interpreters/php/7.4.nix b/pkgs/development/interpreters/php/7.4.nix
index b45da1fb86cb..9ee0c9c9e7cc 100644
--- a/pkgs/development/interpreters/php/7.4.nix
+++ b/pkgs/development/interpreters/php/7.4.nix
@@ -4,8 +4,8 @@ let
   generic = (import ./generic.nix) _args;
 
   base = callPackage generic (_args // {
-    version = "7.4.13";
-    sha256 = "1nhzldjp8jfd1hivfyn5wydim5daibz0vkfxgys2xj8igs2kk8qm";
+    version = "7.4.14";
+    sha256 = "1xm1s2w9fsd8q7kjbpqw8s4bs7ggziwws23m0ykkmvmd0l3cm2b8";
   });
 
 in base.withExtensions ({ all, ... }: with all; ([
diff --git a/pkgs/development/interpreters/php/8.0.nix b/pkgs/development/interpreters/php/8.0.nix
index ded661e55853..5779c836dd4f 100644
--- a/pkgs/development/interpreters/php/8.0.nix
+++ b/pkgs/development/interpreters/php/8.0.nix
@@ -4,8 +4,8 @@ let
   generic = (import ./generic.nix) _args;
 
   base = callPackage generic (_args // {
-    version = "8.0.0";
-    sha256 = "02cx3gvxqvkllp54jfvs83kl8bmpcqyzp9jf1d0l9x5bgv1jv0sy";
+    version = "8.0.1";
+    sha256 = "1vmx9rhks8v2198f9d6cq62bway5mrfsz72garjdwcyi82ppckn4";
   });
 
 in base.withExtensions ({ all, ... }: with all; ([
diff --git a/pkgs/development/interpreters/php/fix-opcache-configure.patch b/pkgs/development/interpreters/php/fix-opcache-configure.patch
deleted file mode 100644
index e67d2cc7bc79..000000000000
--- a/pkgs/development/interpreters/php/fix-opcache-configure.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-diff --git a/Zend/Zend.m4 b/Zend/Zend.m4
-index 726188597496..781e51d3e44c 100644
---- a/Zend/Zend.m4
-+++ b/Zend/Zend.m4
-@@ -190,12 +190,6 @@ dnl LIBZEND_OTHER_CHECKS
- dnl
- AC_DEFUN([LIBZEND_OTHER_CHECKS],[
- 
--AC_ARG_ENABLE([zts],
--  [AS_HELP_STRING([--enable-zts],
--    [Enable thread safety])],
--  [ZEND_ZTS=$enableval],
--  [ZEND_ZTS=no])
--
- AC_MSG_CHECKING(whether to enable thread-safety)
- AC_MSG_RESULT($ZEND_ZTS)
- 
-diff --git a/configure.ac b/configure.ac
-index 8d6e922fa9bf..e07a75d19ac7 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -797,6 +797,19 @@ if test "$PHP_DEBUG_ASSERTIONS" = "yes"; then
-   ZEND_DEBUG=yes
- fi
- 
-+AC_ARG_ENABLE([zts],
-+  [AS_HELP_STRING([--enable-zts],
-+    [Enable thread safety])],
-+  [ZEND_ZTS=$enableval],
-+  [ZEND_ZTS=no])
-+
-+if test "$ZEND_ZTS" = "yes"; then
-+  AC_DEFINE(ZTS, 1,[ ])
-+  PHP_THREAD_SAFETY=yes
-+else
-+  PHP_THREAD_SAFETY=no
-+fi
-+
- PHP_ARG_ENABLE([rtld-now],
-   [whether to dlopen extensions with RTLD_NOW instead of RTLD_LAZY],
-   [AS_HELP_STRING([--enable-rtld-now],
-@@ -1136,13 +1149,6 @@ LIBZEND_BASIC_CHECKS
- LIBZEND_DLSYM_CHECK
- LIBZEND_OTHER_CHECKS
- 
--if test "$ZEND_ZTS" = "yes"; then
--  AC_DEFINE(ZTS,1,[ ])
--  PHP_THREAD_SAFETY=yes
--else
--  PHP_THREAD_SAFETY=no
--fi
--
- INCLUDES="$INCLUDES -I\$(top_builddir)/TSRM"
- INCLUDES="$INCLUDES -I\$(top_builddir)/Zend"
- 
-diff --git a/ext/opcache/config.m4 b/ext/opcache/config.m4
-index 054cd28c0247..93d72fb73d19 100644
---- a/ext/opcache/config.m4
-+++ b/ext/opcache/config.m4
-@@ -66,7 +66,7 @@ if test "$PHP_OPCACHE" != "no"; then
-       esac
-     fi
- 
--    if test "$enable_zts" = "yes"; then
-+    if test "$PHP_THREAD_SAFETY" = "yes"; then
-       DASM_FLAGS="$DASM_FLAGS -D ZTS=1"
-     fi
- 
-diff --git a/ext/session/config.m4 b/ext/session/config.m4
-index 7abc8813b72a..da31bbde86cc 100644
---- a/ext/session/config.m4
-+++ b/ext/session/config.m4
-@@ -31,7 +31,7 @@ if test "$PHP_MM" != "no"; then
-     AC_MSG_ERROR(cannot find mm library)
-   fi
- 
--  if test "$enable_zts" = "yes"; then
-+  if test "$PHP_THREAD_SAFETY" = "yes"; then
-     dnl The mm library is not thread-safe, and mod_mm.c refuses to compile.
-     AC_MSG_ERROR(--with-mm cannot be combined with --enable-zts)
-   fi
\ No newline at end of file
diff --git a/pkgs/development/libraries/doctest/default.nix b/pkgs/development/libraries/doctest/default.nix
index d647d5f38880..43ca46ce5517 100644
--- a/pkgs/development/libraries/doctest/default.nix
+++ b/pkgs/development/libraries/doctest/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "doctest";
-  version = "2.4.1";
+  version = "2.4.4";
 
   src = fetchFromGitHub {
     owner = "onqtam";
     repo = "doctest";
     rev = version;
-    sha256 = "17g7n6rjs90i0b231x5s934qnr8m80ga2yg1z344bnsdiqcjd63w";
+    hash = "sha256-NqXC5948prTCi4gsaR8bJPBTrmH+rJbHsGvwkJlpjXY=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/development/libraries/flatbuffers/default.nix b/pkgs/development/libraries/flatbuffers/default.nix
index 922eba4335c9..0b96a91e45fa 100644
--- a/pkgs/development/libraries/flatbuffers/default.nix
+++ b/pkgs/development/libraries/flatbuffers/default.nix
@@ -31,14 +31,15 @@ stdenv.mkDerivation rec {
   '';
 
   nativeBuildInputs = [ cmake ];
-  enableParallelBuilding = true;
 
   cmakeFlags = [ "-DFLATBUFFERS_BUILD_TESTS=${if doCheck then "ON" else "OFF"}" ];
 
-  doCheck = stdenv.hostPlatform == stdenv.buildPlatform;
+  # tests fail to compile
+  doCheck = false;
+  # doCheck = stdenv.hostPlatform == stdenv.buildPlatform;
   checkTarget = "test";
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "Memory Efficient Serialization Library";
     longDescription = ''
       FlatBuffers is an efficient cross platform serialization library for
@@ -46,9 +47,9 @@ stdenv.mkDerivation rec {
       access serialized data without unpacking/parsing it first, while still
       having great forwards/backwards compatibility.
     '';
-    maintainers = [ stdenv.lib.maintainers.teh ];
-    license = stdenv.lib.licenses.asl20;
-    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ maintainers.teh ];
+    license = licenses.asl20;
+    platforms = platforms.unix;
     homepage = "https://google.github.io/flatbuffers/";
   };
 }
diff --git a/pkgs/development/libraries/gpgme/default.nix b/pkgs/development/libraries/gpgme/default.nix
index 067d62a11a27..6f1626a0abe5 100644
--- a/pkgs/development/libraries/gpgme/default.nix
+++ b/pkgs/development/libraries/gpgme/default.nix
@@ -34,7 +34,9 @@ stdenv.mkDerivation rec {
       sha256 = "00d4sxq63601lzdp2ha1i8fvybh7dzih4531jh8bx07fab3sw65g";
     })
     # Disable python tests on Darwin as they use gpg (see configureFlags below)
-  ] ++ lib.optional stdenv.isDarwin ./disable-python-tests.patch;
+  ] ++ lib.optional stdenv.isDarwin ./disable-python-tests.patch
+  # Fix _AC_UNDECLARED_WARNING for autoconf≥2.70. See https://lists.gnupg.org/pipermail/gnupg-devel/2020-November/034643.html
+  ++ lib.optional stdenv.cc.isClang ./fix-clang-autoconf-undeclared-warning.patch;
 
   outputs = [ "out" "dev" "info" ];
   outputBin = "dev"; # gpgme-config; not so sure about gpgme-tool
diff --git a/pkgs/development/libraries/gpgme/fix-clang-autoconf-undeclared-warning.patch b/pkgs/development/libraries/gpgme/fix-clang-autoconf-undeclared-warning.patch
new file mode 100644
index 000000000000..2d08f982ce6f
--- /dev/null
+++ b/pkgs/development/libraries/gpgme/fix-clang-autoconf-undeclared-warning.patch
@@ -0,0 +1,36 @@
+diff -Naur gpgme.old/configure.ac gpgme.new/configure.ac
+--- gpgme.old/configure.ac	2020-11-12 04:19:50.000000000 -0500
++++ gpgme.new/configure.ac	2021-01-08 03:04:38.000000000 -0500
+@@ -166,6 +166,16 @@
+                           mym4_minor mym4_micro)
+ AC_SUBST(VERSION_NUMBER)
+ 
++# Try to find a thread-safe version of ttyname().
++gnupg_REPLACE_TTYNAME_R
++if test "$ac_cv_func_ttyname_r" != yes; then
++  AC_MSG_WARN([
++***
++*** ttyname() is not thread-safe and ttyname_r() does not exist
++***])
++fi
++
++
+ # We need to compile and run a program on the build machine.  A
+ # comment in libgpg-error says that the AC_PROG_CC_FOR_BUILD macro in
+ # the AC archive is broken for autoconf 2.57.  Given that there is no
+@@ -658,15 +668,6 @@
+ 
+ AC_FUNC_FSEEKO
+ 
+-# Try to find a thread-safe version of ttyname().
+-gnupg_REPLACE_TTYNAME_R
+-if test "$ac_cv_func_ttyname_r" != yes; then
+-  AC_MSG_WARN([
+-***
+-*** ttyname() is not thread-safe and ttyname_r() does not exist
+-***])
+-fi
+-
+ # Try to find a thread-safe version of getenv().
+ have_thread_safe_getenv=no
+ jm_GLIBC21
diff --git a/pkgs/development/libraries/intel-media-driver/default.nix b/pkgs/development/libraries/intel-media-driver/default.nix
index 153e41a777cc..6f2f543af06d 100644
--- a/pkgs/development/libraries/intel-media-driver/default.nix
+++ b/pkgs/development/libraries/intel-media-driver/default.nix
@@ -1,6 +1,7 @@
 { stdenv, fetchFromGitHub
 , cmake, pkg-config
-, libva, libpciaccess, intel-gmmlib, libX11
+, libva, libpciaccess, intel-gmmlib
+, enableX11 ? true, libX11
 }:
 
 stdenv.mkDerivation rec {
@@ -23,7 +24,8 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ cmake pkg-config ];
 
-  buildInputs = [ libva libpciaccess intel-gmmlib libX11 ];
+  buildInputs = [ libva libpciaccess intel-gmmlib ]
+    ++ stdenv.lib.optional enableX11 libX11;
 
   meta = with stdenv.lib; {
     description = "Intel Media Driver for VAAPI — Broadwell+ iGPUs";
@@ -38,4 +40,9 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     maintainers = with maintainers; [ primeos jfrankenau ];
   };
+
+  postFixup = stdenv.lib.optionalString enableX11 ''
+    patchelf --set-rpath "$(patchelf --print-rpath $out/lib/dri/iHD_drv_video.so):${stdenv.lib.makeLibraryPath [ libX11  ]}" \
+      $out/lib/dri/iHD_drv_video.so
+  '';
 }
diff --git a/pkgs/development/libraries/libbladeRF/default.nix b/pkgs/development/libraries/libbladeRF/default.nix
index b2853011b140..e9ef0af463b3 100644
--- a/pkgs/development/libraries/libbladeRF/default.nix
+++ b/pkgs/development/libraries/libbladeRF/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchFromGitHub, pkgconfig, cmake, git, doxygen, help2man, ncurses, tecla
+{ stdenv, lib, fetchFromGitHub, fetchpatch, pkgconfig, cmake, git, doxygen, help2man, ncurses, tecla
 , libusb1, udev }:
 
 let
@@ -23,6 +23,15 @@ in stdenv.mkDerivation {
     sha256 = "0g89al4kwfbx1l3zjddgb9ay4mhr7zk0ndchca3sm1vq2j47nf4l";
   };
 
+  # This patch is required for version 2.2.1. As the patch is already part of
+  # upstream master, it will be incorporated into the next release. The patch
+  # fixes a (well-justified) compiler warning which breaks the build because
+  # we compile with -Werror.
+  patches = [ (fetchpatch {
+    url = "https://github.com/Nuand/bladeRF/commit/163425d48a3b7d8c100d7295220d3648c050d0dd.patch";
+    sha256 = "1swsymlyxm3yk2k8l71z1fv0a5k2rmab02f0c7xkrvk683mq6yxw";
+  }) ];
+
   nativeBuildInputs = [ pkgconfig ];
   # ncurses used due to https://github.com/Nuand/bladeRF/blob/ab4fc672c8bab4f8be34e8917d3f241b1d52d0b8/host/utilities/bladeRF-cli/CMakeLists.txt#L208
   buildInputs = [ cmake git doxygen help2man tecla libusb1 ]
diff --git a/pkgs/development/libraries/libfprint/default.nix b/pkgs/development/libraries/libfprint/default.nix
index 4984d95ffa4e..11051f70e448 100644
--- a/pkgs/development/libraries/libfprint/default.nix
+++ b/pkgs/development/libraries/libfprint/default.nix
@@ -44,6 +44,8 @@ stdenv.mkDerivation rec {
     nss
   ];
 
+  NIX_CFLAGS_COMPILE = "-Wno-error=array-bounds";
+
   mesonFlags = [
     "-Dudev_rules_dir=${placeholder "out"}/lib/udev/rules.d"
   ];
diff --git a/pkgs/development/libraries/libguestfs/default.nix b/pkgs/development/libraries/libguestfs/default.nix
index b875b3579037..d6e45deadcf8 100644
--- a/pkgs/development/libraries/libguestfs/default.nix
+++ b/pkgs/development/libraries/libguestfs/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, pkgconfig, autoreconfHook, makeWrapper
 , ncurses, cpio, gperf, cdrkit, flex, bison, qemu, pcre, augeas, libxml2
 , acl, libcap, libcap_ng, libconfig, systemd, fuse, yajl, libvirt, hivex, db
-, gmp, readline, file, numactl, xen, libapparmor, jansson
+, gmp, readline, file, numactl, libapparmor, jansson
 , getopt, perlPackages, ocamlPackages
 , libtirpc
 , appliance ? null
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
     ncurses cpio gperf jansson
     cdrkit flex bison qemu pcre augeas libxml2 acl libcap libcap_ng libconfig
     systemd fuse yajl libvirt gmp readline file hivex db
-    numactl xen libapparmor getopt perlPackages.ModuleBuild
+    numactl libapparmor getopt perlPackages.ModuleBuild
     libtirpc
   ] ++ (with perlPackages; [ perl libintl_perl GetoptLong SysVirt ])
     ++ (with ocamlPackages; [ ocaml findlib ocamlbuild ocaml_libvirt gettext-stub ounit ])
diff --git a/pkgs/development/libraries/libosmium/default.nix b/pkgs/development/libraries/libosmium/default.nix
index 830465fb113c..10e6d61d1565 100644
--- a/pkgs/development/libraries/libosmium/default.nix
+++ b/pkgs/development/libraries/libosmium/default.nix
@@ -2,19 +2,21 @@
 
 stdenv.mkDerivation rec {
   pname = "libosmium";
-  version = "2.15.6";
+  version = "2.16.0";
 
   src = fetchFromGitHub {
     owner = "osmcode";
     repo = "libosmium";
     rev = "v${version}";
-    sha256 = "0rqy18bbakp41f44y5id9ixh0ar2dby46z17p4115z8k1vv9znq2";
+    sha256 = "1na51g6xfm1bx0d0izbg99cwmqn0grp0g41znn93xnhs202qnb2h";
   };
 
   nativeBuildInputs = [ cmake ];
 
   buildInputs = [ protozero zlib bzip2 expat boost ];
 
+  cmakeFlags = [ "-DINSTALL_GDALCPP:BOOL=ON" ];
+
   doCheck = true;
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/libplacebo/default.nix b/pkgs/development/libraries/libplacebo/default.nix
index ac8552fa9ef4..956b34fd93dd 100644
--- a/pkgs/development/libraries/libplacebo/default.nix
+++ b/pkgs/development/libraries/libplacebo/default.nix
@@ -11,18 +11,28 @@
 , glslang
 , lcms2
 , epoxy
+, libGL
+, xorg
 }:
 
 stdenv.mkDerivation rec {
   pname = "libplacebo";
-  version = "2.72.2";
+  version = "3.104.0";
+
+  patches = [
+    (fetchpatch {
+      # support glslang>=11.0.0; Upstream MR: https://code.videolan.org/videolan/libplacebo/-/merge_requests/131
+      url = "https://code.videolan.org/videolan/libplacebo/-/commit/affd15a2faa1340d40dcf277a8acffe2987f517c.patch";
+      sha256 = "1nm27mdm9rn3wsbjdif46pici6mbzmfb6521ijl8ah4mxn9p1ikc";
+    })
+  ];
 
   src = fetchFromGitLab {
     domain = "code.videolan.org";
     owner = "videolan";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1ijqpx1pagc6qg63ynqrinvckwc8aaw1i0lx48gg5szwk8afib4i";
+    sha256 = "0p5mx8ch7cp7b54yrkl4fs8bcvqma1h461gx6ps4kagn4dsx8asb";
   };
 
   nativeBuildInputs = [
@@ -39,6 +49,8 @@ stdenv.mkDerivation rec {
     glslang
     lcms2
     epoxy
+    libGL
+    xorg.libX11
   ];
 
   mesonFlags = [
diff --git a/pkgs/development/libraries/libqalculate/default.nix b/pkgs/development/libraries/libqalculate/default.nix
index bc142b0a57c2..b61bcd030270 100644
--- a/pkgs/development/libraries/libqalculate/default.nix
+++ b/pkgs/development/libraries/libqalculate/default.nix
@@ -3,19 +3,20 @@
 
 stdenv.mkDerivation rec {
   pname = "libqalculate";
-  version = "3.14.0";
+  version = "3.16.0";
 
   src = fetchFromGitHub {
     owner = "qalculate";
     repo = "libqalculate";
     rev = "v${version}";
-    sha256 = "1j4sr9s7152xmci677pnz64spv8s3ia26fbp5cqx8ydv7swlivh2";
+    sha256 = "0nrf03q3qrsvxf6kjpv69l49yfal79834a3jv75mzi6y674ach9g";
   };
 
   outputs = [ "out" "dev" "doc" ];
 
   nativeBuildInputs = [ intltool pkgconfig autoreconfHook doxygen ];
   buildInputs = [ curl gettext libiconv readline ];
+  configureFlags = ["--with-readline=${readline.dev}"];
   propagatedBuildInputs = [ libxml2 mpfr icu ];
   enableParallelBuilding = true;
 
diff --git a/pkgs/development/libraries/libschrift/default.nix b/pkgs/development/libraries/libschrift/default.nix
new file mode 100644
index 000000000000..a06f6c50d667
--- /dev/null
+++ b/pkgs/development/libraries/libschrift/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "libschrift";
+  version = "0.9.1";
+
+  src = fetchFromGitHub {
+    owner = "tomolt";
+    repo = pname;
+    rev = "c6d20460d6e602e8829d3a227fd7be4c4c3cda86";
+    hash = "sha256-BuTmWaWFZ0DXujlbhbmK3Woit8fR9F4DWmKszHX6gOI=";
+  };
+
+  postPatch = ''
+    substituteInPlace config.mk \
+      --replace "PREFIX = /usr/local" "PREFIX = $out"
+  '';
+
+  makeFlags = [ "libschrift.a" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/tomolt/libschrift";
+    description = "A lightweight TrueType font rendering library";
+    license = licenses.isc;
+    platforms = platforms.all;
+    maintainers = [ maintainers.sternenseemann ];
+  };
+}
diff --git a/pkgs/development/libraries/libsurvive/default.nix b/pkgs/development/libraries/libsurvive/default.nix
index 7f326112b2ff..11a5cdcf4e93 100644
--- a/pkgs/development/libraries/libsurvive/default.nix
+++ b/pkgs/development/libraries/libsurvive/default.nix
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
     description = "Open Source Lighthouse Tracking System";
     homepage = "https://github.com/cntools/libsurvive";
     license = licenses.mit;
-    maintainers = with maintainers; [ prusnak ];
+    maintainers = with maintainers; [ expipiplus1 prusnak ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/libvmaf/default.nix b/pkgs/development/libraries/libvmaf/default.nix
index 9f7e84558f7d..293cb21bb5d6 100644
--- a/pkgs/development/libraries/libvmaf/default.nix
+++ b/pkgs/development/libraries/libvmaf/default.nix
@@ -2,24 +2,28 @@
 
 stdenv.mkDerivation rec {
   pname = "libvmaf";
-  version = "1.5.3";
+  version = "2.1.0";
 
   src = fetchFromGitHub {
     owner = "netflix";
     repo = "vmaf";
     rev = "v${version}";
-    sha256 = "0x3l3g0hgrrjh3ygmxr1pd3rd5589s07c7id35nvj76ch5b7gy63";
+    sha256 = "0gh4zwz975x9kvqdmzs45f96rk99apay57jc68rc8c2xm7gfis58";
   };
 
   sourceRoot = "source/libvmaf";
 
   nativeBuildInputs = [ meson ninja nasm ];
+
+  mesonFlags = [ "-Denable_avx512=true" ];
+
   outputs = [ "out" "dev" ];
-  doCheck = true;
+  doCheck = false;
 
   meta = with stdenv.lib; {
     homepage = "https://github.com/Netflix/vmaf";
     description = "Perceptual video quality assessment based on multi-method fusion (VMAF)";
+    changelog = "https://github.com/Netflix/vmaf/blob/v${version}/CHANGELOG.md";
     platforms = platforms.unix;
     license = licenses.bsd2Patent;
     maintainers = [ maintainers.cfsmp3 maintainers.marsam ];
diff --git a/pkgs/development/libraries/openhmd/default.nix b/pkgs/development/libraries/openhmd/default.nix
index 66656a142342..ab1b9b7b1ddc 100644
--- a/pkgs/development/libraries/openhmd/default.nix
+++ b/pkgs/development/libraries/openhmd/default.nix
@@ -1,45 +1,52 @@
-{ lib, stdenv, fetchFromGitHub, pkgconfig, cmake, hidapi
-, withExamples ? true, SDL2 ? null, libGL ? null, glew ? null
+{ stdenv
+, fetchFromGitHub
+, cmake
+, pkg-config
+, hidapi
+, SDL2
+, libGL
+, glew
+, withExamples ? true
 }:
 
-with lib;
+let examplesOnOff = if withExamples then "ON" else "OFF"; in
 
-let onoff = if withExamples then "ON" else "OFF"; in
-
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   pname = "openhmd";
-  version = "0.3.0-rc1-20181218";
+  version = "0.3.0";
 
   src = fetchFromGitHub {
     owner = "OpenHMD";
     repo = "OpenHMD";
-    rev = "80d51bea575a5bf71bb3a0b9683b80ac3146596a";
-    sha256 = "09011vnlsn238r5vbb1ab57x888ljaa34xibrnfbm5bl9417ii4z";
+    rev = version;
+    sha256 = "1hkpdl4zgycag5k8njvqpx01apxmm8m8pvhlsxgxpqiqy9a38ccg";
   };
 
-  nativeBuildInputs = [ pkgconfig cmake ];
+  nativeBuildInputs = [ cmake pkg-config ];
 
   buildInputs = [
     hidapi
-  ] ++ optionals withExamples [
-    SDL2 libGL glew
+  ] ++ stdenv.lib.optionals withExamples [
+    SDL2
+    glew
+    libGL
   ];
 
   cmakeFlags = [
     "-DBUILD_BOTH_STATIC_SHARED_LIBS=ON"
-    "-DOPENHMD_EXAMPLE_SIMPLE=${onoff}"
-    "-DOPENHMD_EXAMPLE_SDL=${onoff}"
+    "-DOPENHMD_EXAMPLE_SIMPLE=${examplesOnOff}"
+    "-DOPENHMD_EXAMPLE_SDL=${examplesOnOff}"
     "-DOpenGL_GL_PREFERENCE=GLVND"
   ];
 
-  postInstall = optionalString withExamples ''
+  postInstall = stdenv.lib.optionalString withExamples ''
     mkdir -p $out/bin
     install -D examples/simple/simple $out/bin/openhmd-example-simple
     install -D examples/opengl/openglexample $out/bin/openhmd-example-opengl
   '';
 
-  meta = {
-    homepage = "http://www.openhmd.net";
+  meta = with stdenv.lib; {
+    homepage = "http://www.openhmd.net"; # https does not work
     description = "Library API and drivers immersive technology";
     longDescription = ''
       OpenHMD is a very simple FLOSS C library and a set of drivers
@@ -48,7 +55,7 @@ stdenv.mkDerivation {
       Oculus Rift, HTC Vive, Windows Mixed Reality, and etc.
     '';
     license = licenses.boost;
-    maintainers = [ maintainers.oxij ];
+    maintainers = with maintainers; [ oxij ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/libraries/qmltermwidget/default.nix b/pkgs/development/libraries/qmltermwidget/default.nix
index ac2584573114..53e83182c2b0 100644
--- a/pkgs/development/libraries/qmltermwidget/default.nix
+++ b/pkgs/development/libraries/qmltermwidget/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, qtbase, qtquick1, qmake, qtmultimedia, utmp }:
+{ stdenv, fetchFromGitHub, qtbase, qtquick1, qmake, qtmultimedia, utmp, fetchpatch }:
 
 stdenv.mkDerivation {
   version = "2018-11-24";
@@ -15,7 +15,15 @@ stdenv.mkDerivation {
                 ++ stdenv.lib.optional stdenv.isDarwin utmp;
   nativeBuildInputs = [ qmake ];
 
-  patchPhase = ''
+  patches = [
+    (fetchpatch {
+      name = "fix-missing-includes.patch";
+      url = "https://github.com/Swordfish90/qmltermwidget/pull/27/commits/485f8d6d841b607ba49e55a791f7f587e4e193bc.diff";
+      sha256 = "186s8pv3642vr4lxsds919h0y2vrkl61r7wqq9mc4a5zk5vprinj";
+    })
+  ];
+
+  postPatch = ''
     substituteInPlace qmltermwidget.pro \
       --replace '$$[QT_INSTALL_QML]' "/$qtQmlPrefix/"
   '';
diff --git a/pkgs/development/libraries/sentencepiece/default.nix b/pkgs/development/libraries/sentencepiece/default.nix
index e918a3b3d1d2..bc463aa4010a 100644
--- a/pkgs/development/libraries/sentencepiece/default.nix
+++ b/pkgs/development/libraries/sentencepiece/default.nix
@@ -18,7 +18,9 @@ stdenv.mkDerivation rec {
     sha256 = "sha256:11cqw4hx33gw2jmrg11jyp7fj9pwzwjwzqcn24jfsbgh6n8gks5x";
   };
 
-  nativeBuildInputs = [ cmake ] ++ lib.optional withGPerfTools gperftools;
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = lib.optionals withGPerfTools [ gperftools ];
 
   outputs = [ "bin" "dev" "out" ];
 
diff --git a/pkgs/development/libraries/vtk/generic.nix b/pkgs/development/libraries/vtk/generic.nix
index 7bfd8d9fcfff..2cb0fe33d529 100644
--- a/pkgs/development/libraries/vtk/generic.nix
+++ b/pkgs/development/libraries/vtk/generic.nix
@@ -1,5 +1,5 @@
 { majorVersion, minorVersion, sourceSha256, patchesToFetch ? [] }:
-{ stdenv, lib, fetchurl, cmake, libGLU, libGL, libX11, xorgproto, libXt, libtiff
+{ stdenv, lib, fetchurl, cmake, libGLU, libGL, libX11, xorgproto, libXt, libpng, libtiff
 , fetchpatch
 , enableQt ? false, wrapQtAppsHook, qtbase, qtx11extras, qttools
 , enablePython ? false, pythonInterpreter ? throw "vtk: Python support requested, but no python interpreter was given."
@@ -24,7 +24,7 @@ in stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ cmake ];
 
-  buildInputs = [ libtiff ]
+  buildInputs = [ libpng libtiff ]
     ++ optionals enableQt [ qtbase qtx11extras qttools ]
     ++ optionals stdenv.isLinux [
       libGLU
@@ -65,6 +65,7 @@ in stdenv.mkDerivation rec {
   cmakeFlags = [
     "-DCMAKE_C_FLAGS=-fPIC"
     "-DCMAKE_CXX_FLAGS=-fPIC"
+    "-DVTK_USE_SYSTEM_PNG=ON"
     "-DVTK_USE_SYSTEM_TIFF=1"
     "-DOPENGL_INCLUDE_DIR=${libGL}/include"
     "-DCMAKE_INSTALL_LIBDIR=lib"
diff --git a/pkgs/development/ocaml-modules/csexp/default.nix b/pkgs/development/ocaml-modules/csexp/default.nix
index 0ca094382228..26c064d6ff51 100644
--- a/pkgs/development/ocaml-modules/csexp/default.nix
+++ b/pkgs/development/ocaml-modules/csexp/default.nix
@@ -4,6 +4,8 @@ buildDunePackage rec {
   pname = "csexp";
   version = "1.3.2";
 
+  useDune2 = true;
+
   minimumOCamlVersion = "4.02.3";
 
   src = fetchurl {
diff --git a/pkgs/development/ocaml-modules/eliom/default.nix b/pkgs/development/ocaml-modules/eliom/default.nix
index de2955e57c92..5d3c53100449 100644
--- a/pkgs/development/ocaml-modules/eliom/default.nix
+++ b/pkgs/development/ocaml-modules/eliom/default.nix
@@ -1,6 +1,7 @@
 { stdenv, fetchzip, which, ocsigen_server, ocaml,
   lwt_react,
   opaline, ppx_deriving, findlib
+, ppx_tools_versioned
 , js_of_ocaml-ocamlbuild, js_of_ocaml-ppx, js_of_ocaml-ppx_deriving_json
 , js_of_ocaml-lwt
 , js_of_ocaml-tyxml
@@ -22,6 +23,7 @@ stdenv.mkDerivation rec
   };
 
   buildInputs = [ ocaml which findlib js_of_ocaml-ocamlbuild js_of_ocaml-ppx_deriving_json opaline
+    ppx_tools_versioned
   ];
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/ocaml-modules/elpi/default.nix b/pkgs/development/ocaml-modules/elpi/default.nix
index 865c5448c5bd..6f0d355fed5b 100644
--- a/pkgs/development/ocaml-modules/elpi/default.nix
+++ b/pkgs/development/ocaml-modules/elpi/default.nix
@@ -1,15 +1,19 @@
-{ lib, fetchzip, buildDunePackage, camlp5
+{ stdenv, lib, fetchzip, buildDunePackage, camlp5
 , ppxlib, ppx_deriving, re, perl, ncurses
+, version ? "1.12.0"
 }:
-
+with lib;
+let fetched = import ../../../build-support/coq/meta-fetch/default.nix
+  {inherit stdenv fetchzip; } ({
+    release."1.12.0".sha256 = "1agisdnaq9wrw3r73xz14yrq3wx742i6j8i5icjagqk0ypmly2is";
+    release."1.11.4".sha256 = "1m0jk9swcs3jcrw5yyw5343v8mgax238cjb03s8gc4wipw1fn9f5";
+    releaseRev = v: "v${v}";
+    location = { domain = "github.com"; owner = "LPCIC"; repo = "elpi"; };
+  }) version;
+in
 buildDunePackage rec {
   pname = "elpi";
-  version = "1.11.4";
-
-   src = fetchzip {
-     url = "https://github.com/LPCIC/elpi/releases/download/v${version}/elpi-v${version}.tbz";
-     sha256 = "1hmjp2z52j17vwhhdkj45n9jx11jxkdg2dwa0n04yyw0qqy4m7c1";
-   };
+  inherit (fetched) version src;
 
   minimumOCamlVersion = "4.04";
 
@@ -19,8 +23,8 @@ buildDunePackage rec {
 
   meta = {
     description = "Embeddable λProlog Interpreter";
-    license = lib.licenses.lgpl21Plus;
-    maintainers = [ lib.maintainers.vbgl ];
+    license = licenses.lgpl21Plus;
+    maintainers = [ maintainers.vbgl ];
     homepage = "https://github.com/LPCIC/elpi";
   };
 
diff --git a/pkgs/development/ocaml-modules/lwt/ppx.nix b/pkgs/development/ocaml-modules/lwt/ppx.nix
index f2707064f2af..2df17844d1a0 100644
--- a/pkgs/development/ocaml-modules/lwt/ppx.nix
+++ b/pkgs/development/ocaml-modules/lwt/ppx.nix
@@ -1,8 +1,12 @@
-{ fetchzip, buildDunePackage, lwt, ppx_tools_versioned }:
+{ fetchzip, buildDunePackage, lwt, ppxlib }:
 
 buildDunePackage {
   pname = "lwt_ppx";
-  version = "2.0.1";
+  version = "2.0.2";
+
+  useDune2 = true;
+
+  minimumOCamlVersion = "4.04";
 
   src = fetchzip {
     # `lwt_ppx` has a different release cycle than Lwt, but it's included in
@@ -12,12 +16,11 @@ buildDunePackage {
     #
     # This is particularly useful for overriding Lwt without breaking `lwt_ppx`,
     # as new Lwt releases may contain broken `lwt_ppx` code.
-    url = "https://github.com/ocsigen/lwt/archive/5.2.0.tar.gz";
-    sha256 = "1znw8ckwdmqsnrcgar4g33zgr659l4l904bllrz69bbwdnfmz2x3";
+    url = "https://github.com/ocsigen/lwt/archive/5.4.0.tar.gz";
+    sha256 = "1ay1zgadnw19r9hl2awfjr22n37l7rzxd9v73pjbahavwm2ay65d";
   };
 
-
-  propagatedBuildInputs = [ lwt ppx_tools_versioned ];
+  propagatedBuildInputs = [ lwt ppxlib ];
 
   meta = {
     description = "Ppx syntax extension for Lwt";
diff --git a/pkgs/development/ocaml-modules/ppx_tools_versioned/default.nix b/pkgs/development/ocaml-modules/ppx_tools_versioned/default.nix
index 958c088cd6a2..5200c13d89fd 100644
--- a/pkgs/development/ocaml-modules/ppx_tools_versioned/default.nix
+++ b/pkgs/development/ocaml-modules/ppx_tools_versioned/default.nix
@@ -4,6 +4,8 @@ buildDunePackage rec {
   pname = "ppx_tools_versioned";
   version = "5.4.0";
 
+  useDune2 = true;
+
   src = fetchFromGitHub {
     owner = "ocaml-ppx";
     repo = pname;
diff --git a/pkgs/development/php-packages/pdlib/default.nix b/pkgs/development/php-packages/pdlib/default.nix
new file mode 100644
index 000000000000..830519467017
--- /dev/null
+++ b/pkgs/development/php-packages/pdlib/default.nix
@@ -0,0 +1,24 @@
+{ buildPecl, lib, pkgs }:
+let
+  pname = "pdlib";
+  version = "1.0.2";
+in
+buildPecl {
+  inherit pname version;
+
+  src = pkgs.fetchFromGitHub {
+    owner = "goodspb";
+    repo = "pdlib";
+    rev = "v${version}";
+    sha256 = "0qnmqwlw5vb2rvliap4iz9val6mal4qqixcw69pwskdw5jka6v5i";
+  };
+
+  nativeBuildInputs = [ pkgs.pkg-config ];
+  buildInputs = [ (pkgs.dlib.override { guiSupport = true; }) ];
+
+  meta = with lib; {
+    description = "A PHP extension for Dlib";
+    license = with licenses; [ mit ];
+    maintainers = lib.teams.php.members;
+  };
+}
diff --git a/pkgs/development/python-modules/advantage-air/default.nix b/pkgs/development/python-modules/advantage-air/default.nix
new file mode 100644
index 000000000000..4d6d91c5716d
--- /dev/null
+++ b/pkgs/development/python-modules/advantage-air/default.nix
@@ -0,0 +1,26 @@
+{ aiohttp, buildPythonPackage, fetchPypi, lib, pythonOlder }:
+
+buildPythonPackage rec {
+  pname = "advantage_air";
+  version = "0.2.2";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit version pname;
+    sha256 = "04q2sjw9r50c00m4sfv98w9cwmmr970830c97m32p5j8ijb10j5x";
+  };
+
+  propagatedBuildInputs = [ aiohttp ];
+
+  # No tests
+  doCheck = false;
+  pythonImportsCheck = [ "advantage_air" ];
+
+  meta = with lib; {
+    description = "API helper for Advantage Air's MyAir and e-zone API";
+    homepage = "https://github.com/Bre77/advantage_air";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jamiemagee ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiosqlite/default.nix b/pkgs/development/python-modules/aiosqlite/default.nix
index e616a5363477..44cae12cba52 100644
--- a/pkgs/development/python-modules/aiosqlite/default.nix
+++ b/pkgs/development/python-modules/aiosqlite/default.nix
@@ -1,32 +1,31 @@
 { lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
 , aiounittest
+, buildPythonPackage
+, fetchPypi
 , isPy27
-, pytest
+, pytestCheckHook
+, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "aiosqlite";
-  version = "0.12.0";
+  version = "0.16.0";
   disabled = isPy27;
 
-  src = fetchFromGitHub {
-    owner = "jreese";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "090vdv210zfry0bms5b3lmm06yhiyjb8ga96996cqs611l7c2a2j";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1a0fjmlvadyzsml10g5p1qif7192k0swy5zwjp8v48y5zc3yy56h";
   };
 
-  buildInputs = [
-    setuptools
-  ];
-
   checkInputs = [
     aiounittest
+    pytestCheckHook
+    typing-extensions
   ];
 
+  # tests are not pick-up automatically by the hook
+  pytestFlagsArray = [ "aiosqlite/tests/*.py" ];
+
   meta = with lib; {
     description = "Asyncio bridge to the standard sqlite3 module";
     homepage = "https://github.com/jreese/aiosqlite";
diff --git a/pkgs/development/python-modules/aiostream/default.nix b/pkgs/development/python-modules/aiostream/default.nix
new file mode 100644
index 000000000000..a48e2ae02401
--- /dev/null
+++ b/pkgs/development/python-modules/aiostream/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, pytestCheckHook
+, pytestcov
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "aiostream";
+  version = "0.4.1";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "vxgmichel";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1wwnjrzkd61k3arxzk7yhg7cc1099bcwr5kz5n91ai6ma5ln139s";
+  };
+
+  checkInputs = [ pytestCheckHook pytestcov pytest-asyncio ];
+
+  meta = with lib; {
+    description = "Generator-based operators for asynchronous iteration";
+    homepage = "https://aiostream.readthedocs.io";
+    license = licenses.gpl3Only;
+    maintainers = [ maintainers.rmcgibbo ];
+  };
+}
diff --git a/pkgs/development/python-modules/airly/default.nix b/pkgs/development/python-modules/airly/default.nix
new file mode 100644
index 000000000000..e75653fb684a
--- /dev/null
+++ b/pkgs/development/python-modules/airly/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, aiohttp
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "airly";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "ak-ambi";
+    repo = "python-airly";
+    rev = "v${version}";
+    sha256 = "0an6nbl0i5pahxm6x4z03s9apzgqrw9zf7srjcs0r3y1ppicb4s6";
+  };
+
+  propagatedBuildInputs = [ aiohttp ];
+
+  checkInputs = [ pytestCheckHook ];
+
+  disabledTests = [
+    "InstallationsLoaderTestCase"
+    "MeasurementsSessionTestCase"
+  ];
+  pythonImportsCheck = [ "airly" ];
+
+  meta = with lib; {
+    description = "Python module for getting air quality data from Airly sensors";
+    homepage = "https://github.com/ak-ambi/python-airly";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/apprise/default.nix b/pkgs/development/python-modules/apprise/default.nix
index 5c260692887a..c3f318503884 100644
--- a/pkgs/development/python-modules/apprise/default.nix
+++ b/pkgs/development/python-modules/apprise/default.nix
@@ -1,27 +1,33 @@
-{ lib, buildPythonPackage, fetchPypi
+{ lib, buildPythonPackage, fetchPypi, installShellFiles
 , Babel, requests, requests_oauthlib, six, click, markdown, pyyaml
-, pytestrunner, coverage, flake8, mock, pytest, pytestcov, tox, gntp, sleekxmpp
+, pytestrunner, coverage, flake8, mock, pytestCheckHook, pytestcov, tox, gntp, sleekxmpp
 }:
 
 buildPythonPackage rec {
   pname = "apprise";
-  version = "0.8.9";
+  version = "0.9.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "024db00c6a80dbc8c9038b2de211c9fd32963046612882f3f54ad78930f3e0f7";
+    sha256 = "bab3563bc1e0c64938c4c7700112797bd99f20eb5d4a3e6038338bc8f060e153";
   };
 
-  nativeBuildInputs = [ Babel ];
+  nativeBuildInputs = [ Babel installShellFiles ];
 
   propagatedBuildInputs = [
     requests requests_oauthlib six click markdown pyyaml
   ];
 
   checkInputs = [
-    pytestrunner coverage flake8 mock pytest pytestcov tox gntp sleekxmpp
+    pytestrunner coverage flake8 mock pytestCheckHook pytestcov tox gntp sleekxmpp
   ];
 
+  disabledTests = [ "test_apprise_cli_nux_env"  ];
+
+  postInstall = ''
+    installManPage packaging/man/apprise.1
+  '';
+
   meta = with lib; {
     homepage = "https://github.com/caronc/apprise";
     description = "Push Notifications that work with just about every platform!";
diff --git a/pkgs/development/python-modules/archinfo/default.nix b/pkgs/development/python-modules/archinfo/default.nix
new file mode 100644
index 000000000000..4506f422f928
--- /dev/null
+++ b/pkgs/development/python-modules/archinfo/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, nose
+}:
+
+buildPythonPackage rec {
+  pname = "archinfo";
+  version = "9.0.5327";
+
+  src = fetchFromGitHub {
+    owner = "angr";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0r7nj2hf51c954ihfxyhpbz1sd9lrc6i9zfkz11s22wpggvp06mz";
+  };
+
+  checkInputs = [
+    nose
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "archinfo" ];
+
+  meta = with lib; {
+    description = "Classes with architecture-specific information";
+    homepage = "https://github.com/angr/archinfo";
+    license = with licenses; [ bsd2 ];
+    maintainers = [ maintainers.fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/asgiref/default.nix b/pkgs/development/python-modules/asgiref/default.nix
index dc7b160b9432..a14c294bf682 100644
--- a/pkgs/development/python-modules/asgiref/default.nix
+++ b/pkgs/development/python-modules/asgiref/default.nix
@@ -5,6 +5,7 @@
 , pytest-asyncio
 , pytestCheckHook
 , pythonOlder
+, lib
 }:
 
 buildPythonPackage rec {
@@ -27,6 +28,10 @@ buildPythonPackage rec {
     pytest-asyncio
   ];
 
+  disabledTests = lib.optionals stdenv.isDarwin [
+    "test_multiprocessing"
+  ];
+
   meta = with stdenv.lib; {
     description = "Reference ASGI adapters and channel layers";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/asysocks/default.nix b/pkgs/development/python-modules/asysocks/default.nix
new file mode 100644
index 000000000000..4ada562557b1
--- /dev/null
+++ b/pkgs/development/python-modules/asysocks/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "asysocks";
+  version = "0.0.10";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1h9awwnn4dr3ppdlnjb4abhyw873n1iddipw6wkwjpw7nnaqqr6i";
+  };
+
+  # Upstream hasn't release the tests yet
+  doCheck = false;
+  pythonImportsCheck = [ "asysocks" ];
+
+  meta = with lib; {
+    description = "Python Socks4/5 client and server library";
+    homepage = "https://github.com/skelsec/asysocks";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/audio-metadata/default.nix b/pkgs/development/python-modules/audio-metadata/default.nix
index 1adee4403b9b..fc3adf2534e7 100644
--- a/pkgs/development/python-modules/audio-metadata/default.nix
+++ b/pkgs/development/python-modules/audio-metadata/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder
+{ lib, buildPythonPackage, fetchPypi
 , attrs
 , bidict
 , bitstruct
@@ -18,9 +18,7 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "bidict>=0.17,<0.18" "bidict" \
-      --replace "more-itertools>=4.0,<8.0" "more-itertools" \
-      --replace "pendulum>=2.0,<=3.0,!=2.0.5,!=2.1.0" "pendulum>=2.0,<=3.0"
+      --replace "'attrs>=18.2,<19.4'" "'attrs'"
   '';
 
   propagatedBuildInputs = [
@@ -35,8 +33,6 @@ buildPythonPackage rec {
   # No tests
   doCheck = false;
 
-  disabled = pythonOlder "3.6";
-
   meta = with lib; {
     homepage = "https://github.com/thebigmunch/audio-metadata";
     description = "A library for reading and, in the future, writing metadata from audio files";
diff --git a/pkgs/development/python-modules/awkward/default.nix b/pkgs/development/python-modules/awkward/default.nix
index 9b9ca52b947b..298074f300d9 100644
--- a/pkgs/development/python-modules/awkward/default.nix
+++ b/pkgs/development/python-modules/awkward/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "awkward";
-  version = "1.0.1";
+  version = "1.0.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d856b4a166ae054363368aed2e4a44338fec069baa4242e7d567c8323ebcc1eb";
+    sha256 = "3468cb80cab51252a1936e5e593c7df4588ea0e18dcb6fb31e3d2913ba883928";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/development/python-modules/backports-datetime-fromisoformat/default.nix b/pkgs/development/python-modules/backports-datetime-fromisoformat/default.nix
new file mode 100644
index 000000000000..7db161b86110
--- /dev/null
+++ b/pkgs/development/python-modules/backports-datetime-fromisoformat/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+  pname = "backports-datetime-fromisoformat";
+  version = "1.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0p0gyhfqq6gssf3prsy0pcfq5w0wx2w3pcjqbwx3imvc92ls4xwm";
+  };
+
+  # no tests in pypi package
+  doCheck = false;
+
+  pythonImportsCheck = [ "backports.datetime_fromisoformat" ];
+
+  meta = with lib; {
+    description = "Backport of Python 3.7's datetime.fromisoformat";
+    homepage = "https://github.com/movermeyer/backports.datetime_fromisoformat";
+    license = licenses.mit;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/bitbox02/default.nix b/pkgs/development/python-modules/bitbox02/default.nix
new file mode 100644
index 000000000000..e9cf4b36a49c
--- /dev/null
+++ b/pkgs/development/python-modules/bitbox02/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi, base58, ecdsa, hidapi, noiseprotocol, protobuf, semver, typing-extensions }:
+
+buildPythonPackage rec {
+  pname = "bitbox02";
+  version = "5.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0hnjjjarr4q22wh03zyyqfhsizzsvg46030kks3qkzbsv29vqqh5";
+  };
+
+  propagatedBuildInputs = [ base58 ecdsa hidapi noiseprotocol protobuf semver typing-extensions ];
+
+  # does not contain tests
+  doCheck = false;
+  pythonImportsCheck = [ "bitbox02" ];
+
+  meta = with lib; {
+    description = "Firmware code of the BitBox02 hardware wallet";
+    homepage = "https://github.com/digitalbitbox/bitbox02-firmware/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/boto3/default.nix b/pkgs/development/python-modules/boto3/default.nix
index f08501e2a0bc..d4bcb9381e82 100644
--- a/pkgs/development/python-modules/boto3/default.nix
+++ b/pkgs/development/python-modules/boto3/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname =  "boto3";
-  version = "1.16.49"; # N.B: if you change this, change botocore too
+  version = "1.16.51"; # N.B: if you change this, change botocore too
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-Tcj3YQmJHZFriUIJhl9Nlo5kqv+kySFH/wJ89NVXrGw=";
+    sha256 = "sha256-EdxJJoLPKk+P85ewoQmDc0Dvk+d8ouZXFc4k7PBDcXw=";
   };
 
   propagatedBuildInputs = [ botocore jmespath s3transfer ] ++ lib.optionals (!isPy3k) [ futures ];
diff --git a/pkgs/development/python-modules/botocore/default.nix b/pkgs/development/python-modules/botocore/default.nix
index 877e52d3a371..8e4812e868e1 100644
--- a/pkgs/development/python-modules/botocore/default.nix
+++ b/pkgs/development/python-modules/botocore/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "botocore";
-  version = "1.19.49"; # N.B: if you change this, change boto3 and awscli to a matching version
+  version = "1.19.51"; # N.B: if you change this, change boto3 and awscli to a matching version
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-7sxhHtOG3sjkfKCH9F5lwTN5RsS1szr3EyXvmkmucN0=";
+    sha256 = "sha256-sgTFtHewQ8f2HLpdtHnGsl9oT3QJtxqOzbWms/V7XLQ=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/cherrypy/default.nix b/pkgs/development/python-modules/cherrypy/default.nix
index f23d06001922..3e9f75795e49 100644
--- a/pkgs/development/python-modules/cherrypy/default.nix
+++ b/pkgs/development/python-modules/cherrypy/default.nix
@@ -45,6 +45,8 @@ buildPythonPackage rec {
         "--deselect=cherrypy/test/test_bus.py::BusMethodTests::test_block"}
   '';
 
+  __darwinAllowLocalNetworking = true;
+
   meta = with stdenv.lib; {
     homepage = "https://www.cherrypy.org";
     description = "A pythonic, object-oriented HTTP framework";
diff --git a/pkgs/development/python-modules/cirq/default.nix b/pkgs/development/python-modules/cirq/default.nix
index 537ffdbaf958..ebc0eb51df43 100644
--- a/pkgs/development/python-modules/cirq/default.nix
+++ b/pkgs/development/python-modules/cirq/default.nix
@@ -5,7 +5,7 @@
 , fetchFromGitHub
 , fetchpatch
 , freezegun
-, google_api_core
+, google-api-core
 , matplotlib
 , networkx
 , numpy
@@ -54,7 +54,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     freezegun
-    google_api_core
+    google-api-core
     numpy
     matplotlib
     networkx
diff --git a/pkgs/development/python-modules/crytic-compile/default.nix b/pkgs/development/python-modules/crytic-compile/default.nix
index b9345e78eab0..936db1081b6a 100644
--- a/pkgs/development/python-modules/crytic-compile/default.nix
+++ b/pkgs/development/python-modules/crytic-compile/default.nix
@@ -2,7 +2,7 @@
 
 buildPythonPackage rec {
   pname = "crytic-compile";
-  version = "0.1.9";
+  version = "0.1.12";
 
   disabled = pythonOlder "3.6";
 
@@ -10,12 +10,13 @@ buildPythonPackage rec {
     owner = "crytic";
     repo = "crytic-compile";
     rev = version;
-    sha256 = "01mis7bqsh0l5vjl6jwibzy99djza35fxmywy56q8k4jbxwmdcna";
+    sha256 = "1q75n84yxv2cb6x7gqyk3vcwkxpq7pni30wgz3d1bk6pmi2pqgw6";
   };
 
   propagatedBuildInputs = [ pysha3 setuptools ];
 
   doCheck = false;
+  pythonImportsCheck = [ "crytic_compile" ];
 
   meta = with lib; {
     description = "Abstraction layer for smart contract build systems";
diff --git a/pkgs/development/python-modules/cupy/default.nix b/pkgs/development/python-modules/cupy/default.nix
index 91fd7ba11d4f..2d2a2be48558 100644
--- a/pkgs/development/python-modules/cupy/default.nix
+++ b/pkgs/development/python-modules/cupy/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "cupy";
-  version = "8.2.0";
+  version = "8.3.0";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8e4bc8428fb14309d73194e19bc4b47e1d6a330678a200e36d9d4b932f1be2e8";
+    sha256 = "db699fddfde7806445908cf6454c6f4985e7a9563b40405ddf97845d808c5f12";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/demjson/default.nix b/pkgs/development/python-modules/demjson/default.nix
index 58f2012aea71..aee130f789e5 100644
--- a/pkgs/development/python-modules/demjson/default.nix
+++ b/pkgs/development/python-modules/demjson/default.nix
@@ -1,15 +1,20 @@
-{ stdenv, buildPythonPackage, fetchPypi, isPy3k }:
+{ stdenv, python, buildPythonPackage, fetchPypi, isPy3k }:
 
 buildPythonPackage rec {
   pname = "demjson";
   version = "2.2.4";
-  disabled = isPy3k;
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "0ygbddpnvp5lby6mr5kz60la3hkvwwzv3wwb3z0w9ngxl0w21pii";
   };
 
+  checkPhase = stdenv.lib.optionalString isPy3k ''
+    ${python.interpreter} -m lib2to3 -w test/test_demjson.py
+  '' + ''
+    ${python.interpreter} test/test_demjson.py
+  '';
+
   meta = with stdenv.lib; {
     description = "Encoder/decoder and lint/validator for JSON (JavaScript Object Notation)";
     homepage = "https://github.com/dmeranda/demjson";
diff --git a/pkgs/development/python-modules/discordpy/default.nix b/pkgs/development/python-modules/discordpy/default.nix
index 4f784642537f..9c30606f75d9 100644
--- a/pkgs/development/python-modules/discordpy/default.nix
+++ b/pkgs/development/python-modules/discordpy/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "discord.py";
-  version = "1.5.1";
+  version = "1.6.0";
   disabled = pythonOlder "3.5.3";
 
   # only distributes wheels on pypi now
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "Rapptz";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1bidyclwv20p1kfphj21r5gm3kr2vxx0zd151wg7fcngbbx7gmza";
+    sha256 = "036prc4iw91qx31zz48hy3b30kn2qnlg68lgrvv2mcvsjxf2gd1l";
   };
 
   propagatedBuildInputs = [ aiohttp websockets ];
diff --git a/pkgs/development/python-modules/djangorestframework/default.nix b/pkgs/development/python-modules/djangorestframework/default.nix
index 8d1055029b7a..20ae1d81b6af 100644
--- a/pkgs/development/python-modules/djangorestframework/default.nix
+++ b/pkgs/development/python-modules/djangorestframework/default.nix
@@ -1,13 +1,15 @@
-{ stdenv, buildPythonPackage, fetchPypi, django, isPy27 }:
+{ stdenv, buildPythonPackage, fetchFromGitHub, django, isPy27 }:
 
 buildPythonPackage rec {
-  version = "3.11.2";
+  version = "3.12.2";
   pname = "djangorestframework";
   disabled = isPy27;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "a5967b68a04e0d97d10f4df228e30f5a2d82ba63b9d03e1759f84993b7bf1b53";
+  src = fetchFromGitHub {
+    owner = "encode";
+    repo = "django-rest-framework";
+    rev = version;
+    sha256 = "y/dw6qIOc6NaNpBWJXDwHX9aFodgKv9rGKWQKS6STlk=";
   };
 
   # Test settings are missing
diff --git a/pkgs/development/python-modules/ds-store/default.nix b/pkgs/development/python-modules/ds-store/default.nix
new file mode 100644
index 000000000000..00d10e749496
--- /dev/null
+++ b/pkgs/development/python-modules/ds-store/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, mac_alias
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "ds_store";
+  version = "1.3.0";
+
+  src = fetchFromGitHub {
+    owner = "al45tair";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1zmhnz110dvisydp5h6s0ry2v9qf4rgr60xhhlak0c66zpvlkkl0";
+  };
+
+  propagatedBuildInputs = [ mac_alias ];
+
+  checkInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "ds_store" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/al45tair/ds_store";
+    description = "Manipulate Finder .DS_Store files from Python";
+    license = licenses.mit;
+    maintainers = with maintainers; [ prusnak ];
+  };
+}
diff --git a/pkgs/development/python-modules/eliot/default.nix b/pkgs/development/python-modules/eliot/default.nix
index 557be014f86c..815167aefb5b 100644
--- a/pkgs/development/python-modules/eliot/default.nix
+++ b/pkgs/development/python-modules/eliot/default.nix
@@ -15,12 +15,12 @@
 
 buildPythonPackage rec {
   pname = "eliot";
-  version = "1.12.0";
+  version = "1.13.0";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0wabv7hk63l12881f4zw02mmj06583qsx2im0yywdjlj8f56vqdn";
+    sha256 = "5760194b308a7ab35514ae1b942d88e9f2359071556d82580383f09ca586fff7";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/eventlet/default.nix b/pkgs/development/python-modules/eventlet/default.nix
index 5eb3efe6009a..93b058859858 100644
--- a/pkgs/development/python-modules/eventlet/default.nix
+++ b/pkgs/development/python-modules/eventlet/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "eventlet";
-  version = "0.29.1";
+  version = "0.30.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9faff63631b01277c463ae91cd4ab3f25a2f0f5abe3219d43a386ef1daa6159a";
+    sha256 = "19d6f3aa9525221ba60d0ec31b570508021af7ad5497fb77f77501fe9a7c34d3";
   };
 
   propagatedBuildInputs = [ dnspython greenlet monotonic six ]
diff --git a/pkgs/development/python-modules/fastapi/default.nix b/pkgs/development/python-modules/fastapi/default.nix
index 32ebd6a0307d..dadfc41c68bc 100644
--- a/pkgs/development/python-modules/fastapi/default.nix
+++ b/pkgs/development/python-modules/fastapi/default.nix
@@ -1,61 +1,58 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, uvicorn
-, starlette
 , pydantic
-, isPy3k
-, pytest
-, pytestcov
-, pyjwt
-, passlib
+, starlette
+, pytestCheckHook
+, pytest-asyncio
 , aiosqlite
-, peewee
+, databases
 , flask
+, httpx
+, passlib
+, peewee
+, python-jose
+, sqlalchemy
 }:
 
 buildPythonPackage rec {
   pname = "fastapi";
-  version = "0.55.1";
+  version = "0.63.0";
   format = "flit";
-  disabled = !isPy3k;
 
   src = fetchFromGitHub {
     owner = "tiangolo";
     repo = "fastapi";
     rev = version;
-    sha256 = "1515nhwari48v0angyl5z3cfpvwn4al2nvqh0cjd9xgxzvm310s8";
+    sha256 = "0l3imrcs42pqf9d6k8c1q15k5sqcnapl5zk71xl52mrxhz49lgpi";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "starlette ==0.13.2" "starlette"
+      --replace "starlette ==0.13.6" "starlette"
   '';
 
   propagatedBuildInputs = [
-    uvicorn
     starlette
     pydantic
   ];
 
   checkInputs = [
-    pytest
-    pytestcov
-    pyjwt
-    passlib
     aiosqlite
-    peewee
+    databases
     flask
+    httpx
+    passlib
+    peewee
+    python-jose
+    pytestCheckHook
+    pytest-asyncio
+    sqlalchemy
   ];
 
-  # test_default_response_class.py: requires orjson, which requires rust toolchain
-  # test_custom_response/test_tutorial001b.py: requires orjson
-  # tests/test_tutorial/test_sql_databases/test_testing_databases.py: just broken, don't know why
-  checkPhase = ''
-    pytest --ignore=tests/test_default_response_class.py \
-           --ignore=tests/test_tutorial/test_custom_response/test_tutorial001b.py \
-           --ignore=tests/test_tutorial/test_sql_databases/test_testing_databases.py
-  '';
+  # disabled tests require orjson which requires rust nightly
+  pytestFlagsArray = [ "--ignore=tests/test_default_response_class.py" ];
+  disabledTests = [ "test_get_custom_response" ];
 
   meta = with lib; {
     homepage = "https://github.com/tiangolo/fastapi";
diff --git a/pkgs/development/python-modules/fastdiff/default.nix b/pkgs/development/python-modules/fastdiff/default.nix
new file mode 100644
index 000000000000..b3e27d7a5e81
--- /dev/null
+++ b/pkgs/development/python-modules/fastdiff/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, pytest-benchmark, wasmer }:
+
+buildPythonPackage rec {
+  pname = "fastdiff";
+  version = "0.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1ai95vjchl4396zjl1b69xfqvn9kn1y7c40d9l0qxdss0pcx6fk2";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace 'pytest-runner' ""
+  '';
+
+  propagatedBuildInputs = [ wasmer ];
+
+  checkInputs = [ pytestCheckHook pytest-benchmark ];
+
+  pythonImportsCheck = [ "fastdiff" ];
+  disabledTests = [ "test_native" ];
+
+  meta = with lib; {
+    description = "A fast native implementation of diff algorithm with a pure Python fallback";
+    homepage = "https://github.com/syrusakbary/fastdiff";
+    license = licenses.mit;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/fixerio/default.nix b/pkgs/development/python-modules/fixerio/default.nix
new file mode 100644
index 000000000000..786681df1c83
--- /dev/null
+++ b/pkgs/development/python-modules/fixerio/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, requests
+, pytestCheckHook
+, httpretty
+}:
+
+buildPythonPackage rec {
+  pname = "fixerio";
+  version = "0.1.1";
+
+  src = fetchFromGitHub {
+    owner = "amatellanes";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1k9ss5jc7sbpkjd2774vbmvljny0wm2lrc8155ha8yk2048jsaxk";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py --replace "requests==2.10.0" "requests"
+  '';
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  checkInputs = [
+    httpretty
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "fixerio" ];
+
+  meta = with lib; {
+    description = "Python client for Fixer.io";
+    longDescription = ''
+      Fixer.io is a free JSON API for current and historical foreign
+      exchange rates published by the European Central Bank.
+    '';
+    homepage = "https://github.com/amatellanes/fixerio";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/flask-cors/default.nix b/pkgs/development/python-modules/flask-cors/default.nix
index da61365e3ae8..1f98794f7045 100644
--- a/pkgs/development/python-modules/flask-cors/default.nix
+++ b/pkgs/development/python-modules/flask-cors/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "Flask-Cors";
-  version = "3.0.9";
+  version = "3.0.10";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6bcfc100288c5d1bcb1dbb854babd59beee622ffd321e444b05f24d6d58466b8";
+    sha256 = "b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de";
   };
 
   checkInputs = [ nose packaging ];
diff --git a/pkgs/development/python-modules/folium/default.nix b/pkgs/development/python-modules/folium/default.nix
index 800ece5261da..c0adaeaa5589 100644
--- a/pkgs/development/python-modules/folium/default.nix
+++ b/pkgs/development/python-modules/folium/default.nix
@@ -14,11 +14,11 @@
 
 buildPythonPackage rec {
   pname = "folium";
-  version = "0.11.0";
+  version = "0.12.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "540789abc21872469e52c59ac3962c61259a8df557feadd6514eb23eb0a64ca7";
+    sha256 = "d45ace0a813ae65f202ce0356eb29c40a5e8fde071e4d6b5be0a89587ebaeab2";
   };
 
   disabled = pythonOlder "3.5";
diff --git a/pkgs/development/python-modules/google_api_core/default.nix b/pkgs/development/python-modules/google-api-core/default.nix
index efe74d478848..6715590dc329 100644
--- a/pkgs/development/python-modules/google_api_core/default.nix
+++ b/pkgs/development/python-modules/google-api-core/default.nix
@@ -1,27 +1,44 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder, google_auth, protobuf
-, googleapis_common_protos, requests, grpcio, mock, pytest, pytest-asyncio, pytestCheckHook }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, google-auth
+, googleapis_common_protos
+, grpcio
+, protobuf
+, pytz
+, requests
+, mock
+, pytest
+, pytest-asyncio
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "google-api-core";
-  version = "1.23.0";
-  disabled = pythonOlder "3.5";
+  version = "1.24.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1bb3c485c38eacded8d685b1759968f6cf47dd9432922d34edb90359eaa391e2";
+    sha256 = "0sflnpgsvk2h1cr1m3mgxx6pzz55xw7sk4y4qdimhs5jdm2fw78g";
   };
 
-  propagatedBuildInputs =
-    [ googleapis_common_protos protobuf google_auth requests grpcio ];
+  propagatedBuildInputs = [
+    googleapis_common_protos
+    google-auth
+    grpcio
+    protobuf
+    pytz
+    requests
+  ];
 
-  checkInputs = [ google_auth mock protobuf pytest-asyncio pytestCheckHook ];
+  checkInputs = [ mock pytest-asyncio pytestCheckHook ];
 
   # prevent google directory from shadowing google imports
   preCheck = ''
     rm -r google
   '';
 
-  pythonImportsCheck = [ "google.auth" "google.protobuf" "google.api" ];
+  pythonImportsCheck = [ "google.api_core" ];
 
   meta = with lib; {
     description = "Core Library for Google Client Libraries";
@@ -33,6 +50,6 @@ buildPythonPackage rec {
     changelog =
       "https://github.com/googleapis/python-api-core/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/google-api-python-client/default.nix b/pkgs/development/python-modules/google-api-python-client/default.nix
index b14276b0a1a2..2f6508c062f7 100644
--- a/pkgs/development/python-modules/google-api-python-client/default.nix
+++ b/pkgs/development/python-modules/google-api-python-client/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchPypi
-, google_auth, google-auth-httplib2, google_api_core
+, google-auth, google-auth-httplib2, google-api-core
 , httplib2, six, uritemplate, oauth2client }:
 
 buildPythonPackage rec {
@@ -15,7 +15,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   propagatedBuildInputs = [
-    google_auth google-auth-httplib2 google_api_core
+    google-auth google-auth-httplib2 google-api-core
     httplib2 six uritemplate oauth2client
   ];
 
diff --git a/pkgs/development/python-modules/google_apputils/default.nix b/pkgs/development/python-modules/google-apputils/default.nix
index c7b386623ef8..b679be9dbf78 100644
--- a/pkgs/development/python-modules/google_apputils/default.nix
+++ b/pkgs/development/python-modules/google-apputils/default.nix
@@ -1,6 +1,7 @@
 { stdenv
 , buildPythonPackage
 , fetchPypi
+, isPy3k
 , pytz
 , gflags
 , dateutil
@@ -11,10 +12,11 @@
 buildPythonPackage rec {
   pname = "google-apputils";
   version = "0.4.2";
+  disabled = isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "47959d0651c32102c10ad919b8a0ffe0ae85f44b8457ddcf2bdc0358fb03dc29";
+    sha256 = "0afw0gxmh0yw5g7xsmw49gs8bbp0zyhbh6fr1b0h48f3a439v5a7";
   };
 
   preConfigure = ''
@@ -34,6 +36,6 @@ buildPythonPackage rec {
     description = "Google Application Utilities for Python";
     homepage = "https://github.com/google/google-apputils";
     license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
-
 }
diff --git a/pkgs/development/python-modules/google-auth-httplib2/default.nix b/pkgs/development/python-modules/google-auth-httplib2/default.nix
index ff5aa3b2bac7..bb7836ef85d1 100644
--- a/pkgs/development/python-modules/google-auth-httplib2/default.nix
+++ b/pkgs/development/python-modules/google-auth-httplib2/default.nix
@@ -3,13 +3,11 @@
 , buildPythonPackage
 , fetchPypi
 , flask
+, google-auth
+, httplib2
 , mock
-, six
-, pytest
+, pytestCheckHook
 , pytest-localserver
-, google_auth
-, httplib2
-
 }:
 
 buildPythonPackage rec {
@@ -18,28 +16,25 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8d092cc60fb16517b12057ec0bba9185a96e3b7169d86ae12eae98e645b7bc39";
+    sha256 = "0fdwnx2yd65f5vhnmn39f4xnxac5j6x0pv2p42qifrdi1z32q2cd";
   };
 
-  checkInputs = [
-    flask mock six pytest pytest-localserver
-  ];
-
   propagatedBuildInputs = [
-    google_auth httplib2
+    google-auth
+    httplib2
   ];
 
-  checkPhase = ''
-    py.test
-  '';
-
-  # ImportError: No module named google.auth
-  doCheck = isPy3k;
+  checkInputs = [
+    flask
+    mock
+    pytestCheckHook
+    pytest-localserver
+  ];
 
-  meta = {
+  meta = with lib; {
     description = "Google Authentication Library: httplib2 transport";
     homepage = "https://github.com/GoogleCloudPlatform/google-auth-library-python-httplib2";
-    license = lib.licenses.asl20;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
-
 }
diff --git a/pkgs/development/python-modules/google-auth-oauthlib/default.nix b/pkgs/development/python-modules/google-auth-oauthlib/default.nix
index bdea58de8999..7fa7200fbbe5 100644
--- a/pkgs/development/python-modules/google-auth-oauthlib/default.nix
+++ b/pkgs/development/python-modules/google-auth-oauthlib/default.nix
@@ -1,44 +1,37 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pythonOlder
-, isPy3k
 , click
 , mock
-, pytest
-, futures
-, google_auth
+, pytestCheckHook
+, google-auth
 , requests_oauthlib
 }:
 
 buildPythonPackage rec {
   pname = "google-auth-oauthlib";
   version = "0.4.2";
-  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "65b65bc39ad8cab15039b35e5898455d3d66296d0584d96fe0e79d67d04c51d9";
+    sha256 = "1nai9k86g7g7w1pxk105dllncgax8nc5hpmk758b3jnqkb1mpdk5";
   };
 
-  checkInputs = [
-    click mock pytest
-  ] ++ lib.optionals (!isPy3k) [ futures ];
-
   propagatedBuildInputs = [
-    google_auth requests_oauthlib
+    google-auth
+    requests_oauthlib
   ];
 
-  doCheck = isPy3k;
-  checkPhase = ''
-    rm -fr tests/__pycache__/ google
-    py.test
-  '';
+  checkInputs = [
+    click
+    mock
+    pytestCheckHook
+  ];
 
   meta = with lib; {
     description = "Google Authentication Library: oauthlib integration";
     homepage = "https://github.com/GoogleCloudPlatform/google-auth-library-python-oauthlib";
     license = licenses.asl20;
-    maintainers = with maintainers; [ terlar ];
+    maintainers = with maintainers; [ SuperSandro2000 terlar ];
   };
 }
diff --git a/pkgs/development/python-modules/google-auth/default.nix b/pkgs/development/python-modules/google-auth/default.nix
new file mode 100644
index 000000000000..abfe3754ccef
--- /dev/null
+++ b/pkgs/development/python-modules/google-auth/default.nix
@@ -0,0 +1,54 @@
+{ stdenv
+, buildPythonPackage
+, fetchpatch
+, fetchPypi
+, pytestCheckHook
+, cachetools
+, flask
+, freezegun
+, mock
+, oauth2client
+, pyasn1-modules
+, pytest-localserver
+, responses
+, rsa
+}:
+
+buildPythonPackage rec {
+  pname = "google-auth";
+  version = "1.24.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0bmdqkyv8k8n6s8dss4zpbcq1cdxwicpb42kwybd02ia85mh43hb";
+  };
+
+  propagatedBuildInputs = [ pyasn1-modules cachetools rsa ];
+
+  checkInputs = [
+    flask
+    freezegun
+    mock
+    oauth2client
+    pytestCheckHook
+    pytest-localserver
+    responses
+  ];
+
+  pythonImportsCheck = [
+    "google.auth"
+    "google.oauth2"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Google Auth Python Library";
+    longDescription = ''
+      This library simplifies using Google’s various server-to-server
+      authentication mechanisms to access Google APIs.
+    '';
+    homepage = "https://github.com/googleapis/google-auth-library-python";
+    changelog = "https://github.com/googleapis/google-auth-library-python/blob/v${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix b/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix
index 01f7bc9ce33e..3f614258a8fb 100644
--- a/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix
+++ b/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder, google_api_core }:
+{ lib, buildPythonPackage, fetchPypi, pythonOlder, google-api-core }:
 
 buildPythonPackage rec {
   pname = "google-cloud-access-context-manager";
@@ -9,19 +9,19 @@ buildPythonPackage rec {
     sha256 = "1qy7wv1xn7g3x5z0vvv0pwmxhin4hw2m9fs9iklnghy00vg37v0b";
   };
 
-  disabled = pythonOlder "3.5";
-
-  propagatedBuildInputs = [ google_api_core ];
+  propagatedBuildInputs = [ google-api-core ];
 
   # No tests in repo
   doCheck = false;
 
-  pythonImportsCheck = [ "google.identity.accesscontextmanager" ];
+  pythonImportsCheck = [
+    "google.identity.accesscontextmanager"
+  ];
 
   meta = with lib; {
     description = "Protobufs for Google Access Context Manager.";
     homepage = "https://github.com/googleapis/python-access-context-manager";
     license = licenses.asl20;
-    maintainers = with maintainers; [ austinbutler ];
+    maintainers = with maintainers; [ austinbutler SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-asset/default.nix b/pkgs/development/python-modules/google-cloud-asset/default.nix
new file mode 100644
index 000000000000..d9baa821fa1e
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-asset/default.nix
@@ -0,0 +1,54 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, grpc_google_iam_v1
+, google-api-core
+, google-cloud-access-context-manager
+, google-cloud-org-policy
+, google-cloud-os-config
+, google-cloud-testutils
+, libcst
+, proto-plus
+, pytest
+, pytest-asyncio
+, pytestCheckHook
+, mock
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-asset";
+  version = "2.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "05q0yaw6b553qmzylr45zin17h8mvi8yyyxhbv3cxa7f0ahviw8w";
+  };
+
+  propagatedBuildInputs = [
+    grpc_google_iam_v1
+    google-api-core
+    google-cloud-access-context-manager
+    google-cloud-org-policy
+    google-cloud-os-config
+    libcst
+    proto-plus
+  ];
+
+  checkInputs = [ google-cloud-testutils mock pytest-asyncio pytestCheckHook ];
+
+  pythonImportsCheck = [
+    "google.cloud.asset"
+    "google.cloud.asset_v1"
+    "google.cloud.asset_v1p1beta1"
+    "google.cloud.asset_v1p2beta1"
+    "google.cloud.asset_v1p4beta1"
+    "google.cloud.asset_v1p5beta1"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Python Client for Google Cloud Asset API";
+    homepage = "https://github.com/googleapis/python-asset";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-automl/default.nix b/pkgs/development/python-modules/google-cloud-automl/default.nix
new file mode 100644
index 000000000000..ce2a9e116cd8
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-automl/default.nix
@@ -0,0 +1,59 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, libcst
+, google-api-core
+, google-cloud-storage
+, google-cloud-testutils
+, pandas
+, proto-plus
+, pytest-asyncio
+, mock
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-automl";
+  version = "2.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "520dfe2ee04d28f3088c9c582fa2a534fc272647d5e2e59acc903c0152e61696";
+  };
+
+  propagatedBuildInputs = [ google-api-core libcst proto-plus ];
+
+  checkInputs = [
+    google-cloud-storage
+    google-cloud-testutils
+    mock
+    pandas
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    # do not shadow imports
+    rm -r google
+    # requires credentials
+    rm tests/system/gapic/v1beta1/test_system_tables_client_v1.py
+  '';
+
+  disabledTests = [
+    # requires credentials
+    "test_prediction_client_client_info"
+  ];
+
+  pythonImportsCheck = [
+    "google.cloud.automl"
+    "google.cloud.automl_v1"
+    "google.cloud.automl_v1beta1"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Cloud AutoML API client library";
+    homepage = "https://github.com/googleapis/python-automl";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix b/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
new file mode 100644
index 000000000000..fde46ab7f12d
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google-api-core
+, libcst
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+, mock
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-bigquery-datatransfer";
+  version = "3.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0hmsqvs2srmqcwmli48vd5vw829zax3pwj63fsxig6sdhjlf6j7j";
+  };
+
+  propagatedBuildInputs = [ google-api-core libcst proto-plus ];
+  checkInputs = [ mock pytestCheckHook pytest-asyncio ];
+
+  pythonImportsCheck = [
+    "google.cloud.bigquery_datatransfer"
+    "google.cloud.bigquery_datatransfer_v1"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "BigQuery Data Transfer API client library";
+    homepage = "https://github.com/googleapis/python-bigquery-datatransfer";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-bigquery/default.nix b/pkgs/development/python-modules/google-cloud-bigquery/default.nix
new file mode 100644
index 000000000000..7206ee43af31
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-bigquery/default.nix
@@ -0,0 +1,58 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, freezegun
+, google-cloud-core
+, google-cloud-testutils
+, google-resumable-media
+, grpcio
+, ipython
+, mock
+, pandas
+, proto-plus
+, pyarrow
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-bigquery";
+  version = "2.6.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1vs4im0fixmszh6p77icys9g7fymwmkfc6va0ng9kpjv1h6gv68z";
+  };
+
+  propagatedBuildInputs = [
+    google-resumable-media
+    google-cloud-core
+    proto-plus
+    pyarrow
+  ];
+
+  checkInputs = [
+    freezegun
+    google-cloud-testutils
+    ipython
+    mock
+    pandas
+    pytestCheckHook
+  ];
+
+  # prevent google directory from shadowing google imports
+  preCheck = ''
+    rm -r google
+  '';
+
+  pythonImportsCheck = [
+    "google.cloud.bigquery"
+    "google.cloud.bigquery_v2"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Google BigQuery API client library";
+    homepage = "https://github.com/googleapis/python-bigquery";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google_cloud_bigtable/default.nix b/pkgs/development/python-modules/google-cloud-bigtable/default.nix
index bd12aa592d50..032a30bb2423 100644
--- a/pkgs/development/python-modules/google_cloud_bigtable/default.nix
+++ b/pkgs/development/python-modules/google-cloud-bigtable/default.nix
@@ -2,8 +2,8 @@
 , buildPythonPackage
 , fetchPypi
 , grpc_google_iam_v1
-, google_api_core
-, google_cloud_core
+, google-api-core
+, google-cloud-core
 , pytest
 , mock
 }:
@@ -18,7 +18,7 @@ buildPythonPackage rec {
   };
 
   checkInputs = [ pytest mock ];
-  propagatedBuildInputs = [ grpc_google_iam_v1 google_api_core google_cloud_core ];
+  propagatedBuildInputs = [ grpc_google_iam_v1 google-api-core google-cloud-core ];
 
   checkPhase = ''
     rm -r google
diff --git a/pkgs/development/python-modules/google-cloud-container/default.nix b/pkgs/development/python-modules/google-cloud-container/default.nix
new file mode 100644
index 000000000000..011bb7b1967e
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-container/default.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google-api-core
+, grpc_google_iam_v1
+, libcst
+, mock
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-container";
+  version = "2.3.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "04f9mx1wxy3l9dvzvvr579fnjp1fdqhgplv5y2gl7h2mvn281k8d";
+  };
+
+  propagatedBuildInputs = [ google-api-core grpc_google_iam_v1 libcst proto-plus ];
+
+  checkInputs = [ mock pytestCheckHook pytest-asyncio ];
+
+  disabledTests = [
+    # requires credentials
+    "test_list_clusters"
+  ];
+
+  pythonImportsCheck = [
+    "google.cloud.container"
+    "google.cloud.container_v1"
+    "google.cloud.container_v1beta1"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Google Container Engine API client library";
+    homepage = "https://github.com/googleapis/python-container";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google_cloud_core/default.nix b/pkgs/development/python-modules/google-cloud-core/default.nix
index 1ad08ea05af4..c22c56a1ba49 100644
--- a/pkgs/development/python-modules/google_cloud_core/default.nix
+++ b/pkgs/development/python-modules/google-cloud-core/default.nix
@@ -1,31 +1,38 @@
-{ stdenv, buildPythonPackage, fetchPypi, pythonOlder, pytestCheckHook, python
-, google_api_core, grpcio, mock }:
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, pytestCheckHook
+, python
+, google-api-core
+, grpcio
+, mock
+}:
 
 buildPythonPackage rec {
   pname = "google-cloud-core";
-  version = "1.4.3";
+  version = "1.5.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "21afb70c1b0bce8eeb8abb5dca63c5fd37fc8aea18f4b6d60e803bd3d27e6b80";
+    sha256 = "01liq4nrd2g3ingg8v0ly4c86db8agnr9h1fiz219c7fz0as0xqj";
   };
 
-  disabled = pythonOlder "3.5";
+  propagatedBuildInputs = [ google-api-core ];
 
-  propagatedBuildInputs = [ google_api_core grpcio ];
-  checkInputs = [ google_api_core mock pytestCheckHook ];
-
-  pythonImportsCheck = [ "google.cloud" ];
+  checkInputs = [ mock pytestCheckHook ];
 
   # prevent google directory from shadowing google imports
   preCheck = ''
     rm -r google
   '';
 
+  pythonImportsCheck = [ "google.cloud" ];
+
   meta = with stdenv.lib; {
     description = "API Client library for Google Cloud: Core Helpers";
     homepage = "https://github.com/googleapis/python-cloud-core";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-dataproc/default.nix b/pkgs/development/python-modules/google-cloud-dataproc/default.nix
new file mode 100644
index 000000000000..f99b2c382fc6
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-dataproc/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google-api-core
+, mock
+, libcst
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-dataproc";
+  version = "2.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "07rv2kgbaqkbd71k5i2zn9kcxasfzkkyai8jnbszhkf92k0lmi41";
+  };
+
+  propagatedBuildInputs = [ google-api-core libcst proto-plus ];
+
+  checkInputs = [ mock pytestCheckHook pytest-asyncio ];
+
+  disabledTests = [
+    # requires credentials
+    "test_list_clusters"
+  ];
+
+  pythonImportsCheck = [
+    "google.cloud.dataproc"
+    "google.cloud.dataproc_v1"
+    "google.cloud.dataproc_v1beta2"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Google Cloud Dataproc API client library";
+    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-datastore/default.nix b/pkgs/development/python-modules/google-cloud-datastore/default.nix
new file mode 100644
index 000000000000..5daa2cdd81eb
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-datastore/default.nix
@@ -0,0 +1,46 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google-api-core
+, google-cloud-core
+, libcst
+, proto-plus
+, mock
+, pytestCheckHook
+, pytest-asyncio
+, google-cloud-testutils
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-datastore";
+  version = "2.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1yyk9ix1jms5q4kk76cfxzy42wzzyl5qladdswjy5l0pg6iypr8i";
+  };
+
+  propagatedBuildInputs = [ google-api-core google-cloud-core libcst proto-plus ];
+
+  checkInputs = [ google-cloud-testutils mock pytestCheckHook pytest-asyncio ];
+
+  preCheck = ''
+    # directory shadows imports
+    rm -r google
+    # requires credentials
+    rm tests/system/test_system.py
+  '';
+
+  pythonImportsCheck = [
+    "google.cloud.datastore"
+    "google.cloud.datastore_admin_v1"
+    "google.cloud.datastore_v1"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Google Cloud Datastore API client library";
+    homepage = "https://github.com/googleapis/python-datastore";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-dlp/default.nix b/pkgs/development/python-modules/google-cloud-dlp/default.nix
new file mode 100644
index 000000000000..e02805c40762
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-dlp/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google-api-core
+, google-cloud-testutils
+, libcst
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+, mock
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-dlp";
+  version = "3.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "09rnzpdlycr1wv8agcfx05v1prn35ylphsbr07486zqdkh5wjk8p";
+  };
+
+  propagatedBuildInputs = [ google-api-core libcst proto-plus ];
+
+  checkInputs = [ google-cloud-testutils mock pytestCheckHook pytest-asyncio ];
+
+  disabledTests = [
+    # requires credentials
+    "test_inspect_content"
+  ];
+
+  pythonImportsCheck = [
+    "google.cloud.dlp"
+    "google.cloud.dlp_v2"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Cloud Data Loss Prevention (DLP) API API client library";
+    homepage = "https://github.com/googleapis/python-dlp";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-dns/default.nix b/pkgs/development/python-modules/google-cloud-dns/default.nix
new file mode 100644
index 000000000000..b6777fccec02
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-dns/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google-api-core
+, google-cloud-core
+, pytestCheckHook
+, mock
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-dns";
+  version = "0.32.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "01l6pvfic0vxcvd97ckbxyc7ccr9vb9ln4lyhpp3amdmcy0far3j";
+  };
+
+  propagatedBuildInputs = [ google-api-core google-cloud-core ];
+
+  checkInputs = [ mock pytestCheckHook ];
+
+  preCheck = ''
+    # don#t shadow python imports
+    rm -r google
+  '';
+
+  disabledTests = [
+    # requires credentials
+    "test_quota"
+  ];
+
+  pythonImportsCheck = [ "google.cloud.dns" ];
+
+  meta = with stdenv.lib; {
+    description = "Google Cloud DNS API client library";
+    homepage = "https://github.com/googleapis/python-dns";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google_cloud_error_reporting/default.nix b/pkgs/development/python-modules/google-cloud-error-reporting/default.nix
index 19f90275ae99..cdd54a291243 100644
--- a/pkgs/development/python-modules/google_cloud_error_reporting/default.nix
+++ b/pkgs/development/python-modules/google-cloud-error-reporting/default.nix
@@ -1,6 +1,14 @@
-{ stdenv, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder
-, google_cloud_logging, google_cloud_testutils, libcst, mock, proto-plus
-, pytest-asyncio }:
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, google-cloud-logging
+, google-cloud-testutils
+, libcst
+, mock
+, proto-plus
+, pytest-asyncio
+}:
 
 buildPythonPackage rec {
   pname = "google-cloud-error-reporting";
@@ -11,13 +19,16 @@ buildPythonPackage rec {
     sha256 = "2fd6fe25343f7017c22e2733a0358c64b3171edc1669d0c8a1e1f07f86a048c4";
   };
 
-  disabled = pythonOlder "3.6";
+  propagatedBuildInputs = [ google-cloud-logging libcst proto-plus ];
 
-  checkInputs = [ google_cloud_testutils mock pytestCheckHook pytest-asyncio ];
-  propagatedBuildInputs = [ google_cloud_logging libcst proto-plus ];
+  checkInputs = [ google-cloud-testutils mock pytestCheckHook pytest-asyncio ];
+
+  disabledTests = [
+    # require credentials
+    "test_report_error_event"
+    "test_report_exception"
+  ];
 
-  # Disable tests that require credentials
-  disabledTests = [ "test_report_error_event" "test_report_exception" ];
   # prevent google directory from shadowing google imports
   preCheck = ''
     rm -r google
@@ -27,6 +38,6 @@ buildPythonPackage rec {
     description = "Stackdriver Error Reporting API client library";
     homepage = "https://github.com/googleapis/python-error-reporting";
     license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-firestore/default.nix b/pkgs/development/python-modules/google-cloud-firestore/default.nix
new file mode 100644
index 000000000000..1de3ea11b37d
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-firestore/default.nix
@@ -0,0 +1,64 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, aiounittest
+, google-api-core
+, google-cloud-testutils
+, google-cloud-core
+, mock
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-firestore";
+  version = "2.0.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1q5s2gpkibnjxal9zrz02jfnazf7rxk0bi0ln5a3di6i47kjnga9";
+  };
+
+  propagatedBuildInputs = [
+    google-api-core
+    google-cloud-core
+    proto-plus
+  ];
+
+  checkInputs = [
+    aiounittest
+    google-cloud-testutils
+    mock
+    pytestCheckHook
+    pytest-asyncio
+  ];
+
+  preCheck = ''
+    # do not shadow imports
+    rm -r google
+  '';
+
+  pytestFlagsArray = [
+    # tests are broken
+    "--ignore=tests/system/test_system.py"
+    "--ignore=tests/system/test_system_async.py"
+  ];
+
+  disabledTests = [
+    # requires credentials
+    "test_collections"
+  ];
+
+  pythonImportsCheck = [
+    "google.cloud.firestore_v1"
+    "google.cloud.firestore_admin_v1"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Google Cloud Firestore API client library";
+    homepage = "https://github.com/googleapis/python-firestore";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-iam/default.nix b/pkgs/development/python-modules/google-cloud-iam/default.nix
index 9d6120629380..f96940f4e67f 100644
--- a/pkgs/development/python-modules/google-cloud-iam/default.nix
+++ b/pkgs/development/python-modules/google-cloud-iam/default.nix
@@ -1,5 +1,14 @@
-{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder
-, google_api_core, libcst, mock, proto-plus, pytest-asyncio }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, pythonOlder
+, google-api-core
+, libcst
+, mock
+, proto-plus
+, pytest-asyncio
+}:
 
 buildPythonPackage rec {
   pname = "google-cloud-iam";
@@ -10,13 +19,19 @@ buildPythonPackage rec {
     sha256 = "1zxsx5avs8njiyw32zvsx2yblmmiwxy771x334hbgmy0aqms4lak";
   };
 
-  propagatedBuildInputs = [ google_api_core libcst proto-plus ];
+  propagatedBuildInputs = [ google-api-core libcst proto-plus ];
+
   checkInputs = [ mock pytestCheckHook pytest-asyncio ];
 
+  pythonImportsCheck = [
+    "google.cloud.iam_credentials"
+    "google.cloud.iam_credentials_v1"
+  ];
+
   meta = with lib; {
-    description = "Google Cloud IAM API client library";
+    description = "IAM Service Account Credentials API client library";
     homepage = "https://github.com/googleapis/python-iam";
     license = licenses.asl20;
-    maintainers = with maintainers; [ austinbutler ];
+    maintainers = with maintainers; [ austinbutler SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-iot/default.nix b/pkgs/development/python-modules/google-cloud-iot/default.nix
new file mode 100644
index 000000000000..7e8a224256d1
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-iot/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, grpc_google_iam_v1
+, google-api-core
+, libcst
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+, mock
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-iot";
+  version = "2.0.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "08spn5g0s386x21dgwb46na8aknbwq5d1sn8bh6kayk9fjfbxwla";
+  };
+
+  propagatedBuildInputs = [ grpc_google_iam_v1 google-api-core libcst proto-plus ];
+
+  checkInputs = [ mock pytestCheckHook pytest-asyncio ];
+
+  disabledTests = [
+    # requires credentials
+    "test_list_device_registries"
+  ];
+
+  pythonImportsCheck = [
+    "google.cloud.iot"
+    "google.cloud.iot_v1"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Cloud IoT API API client library";
+    homepage = "https://github.com/googleapis/python-iot";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google_cloud_kms/default.nix b/pkgs/development/python-modules/google-cloud-kms/default.nix
index a4d2439fb49c..49f088478ee0 100644
--- a/pkgs/development/python-modules/google_cloud_kms/default.nix
+++ b/pkgs/development/python-modules/google-cloud-kms/default.nix
@@ -1,5 +1,13 @@
-{ stdenv, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder
-, grpc_google_iam_v1, google_api_core, libcst, mock, proto-plus, pytest-asyncio
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, grpc_google_iam_v1
+, google-api-core
+, libcst
+, mock
+, proto-plus
+, pytest-asyncio
 }:
 
 buildPythonPackage rec {
@@ -11,19 +19,22 @@ buildPythonPackage rec {
     sha256 = "0f3k2ixp1zsgydpvkj75bs2mb805389snyw30hn41c38qq5ksdga";
   };
 
-  disabled = pythonOlder "3.6";
+  propagatedBuildInputs = [ grpc_google_iam_v1 google-api-core libcst proto-plus ];
 
   checkInputs = [ mock pytestCheckHook pytest-asyncio ];
-  propagatedBuildInputs =
-    [ grpc_google_iam_v1 google_api_core libcst proto-plus ];
 
   # Disable tests that need credentials
   disabledTests = [ "test_list_global_key_rings" ];
 
+  pythonImportsCheck = [
+    "google.cloud.kms"
+    "google.cloud.kms_v1"
+  ];
+
   meta = with stdenv.lib; {
     description = "Cloud Key Management Service (KMS) API API client library";
     homepage = "https://github.com/googleapis/python-kms";
     license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-language/default.nix b/pkgs/development/python-modules/google-cloud-language/default.nix
new file mode 100644
index 000000000000..2074b1edb1d6
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-language/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google-api-core
+, libcst
+, mock
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-language";
+  version = "2.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "123vqfrn7pyn3ia7cmhx8bgafd4gxxlmhf33s3vgspyjck6sprxb";
+  };
+
+  propagatedBuildInputs = [ google-api-core libcst proto-plus ];
+
+  checkInputs = [ mock pytestCheckHook pytest-asyncio ];
+
+  pythonImportsCheck = [
+    "google.cloud.language"
+    "google.cloud.language_v1"
+    "google.cloud.language_v1beta2"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Google Cloud Natural Language API client library";
+    homepage = "https://github.com/googleapis/python-language";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-logging/default.nix b/pkgs/development/python-modules/google-cloud-logging/default.nix
new file mode 100644
index 000000000000..dba00274021f
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-logging/default.nix
@@ -0,0 +1,59 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, django
+, flask
+, google-api-core
+, google-cloud-core
+, google-cloud-testutils
+, mock
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+, webapp2
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-logging";
+  version = "2.0.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0s09vs4rnq4637j8zw7grv3f4j7njqprm744b1knzldj91rg0vmi";
+  };
+
+  propagatedBuildInputs = [ google-api-core google-cloud-core proto-plus ];
+
+  checkInputs = [
+    django
+    flask
+    google-cloud-testutils
+    mock
+    pytestCheckHook
+    pytest-asyncio
+  ];
+
+  disabledTests = [
+    # requires credentials
+    "test_write_log_entries"
+  ];
+
+  preCheck = ''
+    # prevent google directory from shadowing google imports
+    rm -r google
+    # requires credentials
+    rm tests/system/test_system.py tests/unit/test__gapic.py
+  '';
+
+  pythonImortsCheck = [
+    "google.cloud.logging"
+    "google.cloud.logging_v2"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Stackdriver Logging API client library";
+    homepage = "https://github.com/googleapis/python-logging";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-monitoring/default.nix b/pkgs/development/python-modules/google-cloud-monitoring/default.nix
new file mode 100644
index 000000000000..10d7264c5606
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-monitoring/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google-api-core
+, google-cloud-testutils
+, libcst
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+, mock
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-monitoring";
+  version = "2.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "07r0y995fin6cbnqlhmd38fv3pfhhqyw04l7nr38sldrd82gmsqx";
+  };
+
+  propagatedBuildInputs = [ libcst google-api-core proto-plus ];
+
+  checkInputs = [ google-cloud-testutils mock pytestCheckHook pytest-asyncio ];
+
+  disabledTests = [
+    # requires credentials
+    "test_list_monitored_resource_descriptors"
+  ];
+
+  pythonImportsCheck = [
+    "google.cloud.monitoring"
+    "google.cloud.monitoring_v3"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Stackdriver Monitoring API client library";
+    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
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 39cc0dc9c24b..10ee559b8f0b 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, pythonOlder, google_api_core }:
+{ lib, buildPythonPackage, fetchPypi, pythonOlder, google-api-core }:
 
 buildPythonPackage rec {
   pname = "google-cloud-org-policy";
@@ -9,9 +9,7 @@ buildPythonPackage rec {
     sha256 = "0ncgcnbvmgqph54yh2pjx2hh82gnkhsrw5yirp4wlf7jclh6j9xh";
   };
 
-  disabled = pythonOlder "3.5";
-
-  propagatedBuildInputs = [ google_api_core ];
+  propagatedBuildInputs = [ google-api-core ];
 
   # No tests in repo
   doCheck = false;
@@ -22,6 +20,6 @@ buildPythonPackage rec {
     description = "Protobufs for Google Cloud Organization Policy.";
     homepage = "https://github.com/googleapis/python-org-policy";
     license = licenses.asl20;
-    maintainers = with maintainers; [ austinbutler ];
+    maintainers = with maintainers; [ austinbutler SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-os-config/default.nix b/pkgs/development/python-modules/google-cloud-os-config/default.nix
new file mode 100644
index 000000000000..94d8d4738f5c
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-os-config/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonPackage, fetchPypi, google-api-core, libcst, mock, proto-plus, pytestCheckHook, pytest-asyncio }:
+
+buildPythonPackage rec {
+  pname = "google-cloud-os-config";
+  version = "1.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "07zvagy9hwaccwvg1xad5nkalgkria0maa5yxiwqf1yk9f7gbyq1";
+  };
+
+  propagatedBuildInputs = [ google-api-core libcst proto-plus ];
+
+  checkInputs = [ mock pytestCheckHook pytest-asyncio ];
+
+  pythonImportsCheck = [ "google.cloud.osconfig" ];
+
+  disabledTests = [
+    "test_patch_deployment"
+    "test_patch_job"
+  ];
+
+  meta = with lib; {
+    description = "Google Cloud OS Config API client library";
+    homepage = "https://github.com/googleapis/python-os-config";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-pubsub/default.nix b/pkgs/development/python-modules/google-cloud-pubsub/default.nix
new file mode 100644
index 000000000000..e946f74ed3b2
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-pubsub/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, google-api-core
+, google-cloud-testutils
+, grpc_google_iam_v1
+, libcst
+, mock
+, proto-plus
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-pubsub";
+  version = "2.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1rfdbkxbndi00wx9dx733ihp3hmcsk6k23pcjni0ki7m0c4acl5w";
+  };
+
+  propagatedBuildInputs = [ grpc_google_iam_v1 google-api-core libcst proto-plus ];
+
+  checkInputs = [ google-cloud-testutils mock pytestCheckHook pytest-asyncio ];
+
+  preCheck = ''
+    # prevent google directory from shadowing google imports
+    rm -r google
+    # Tests in pubsub_v1 attempt to contact pubsub.googleapis.com
+    rm -r tests/unit/pubsub_v1
+  '';
+
+  pythonImportsCheck = [ "google.cloud.pubsub" ];
+
+  meta = with stdenv.lib; {
+    description = "Google Cloud Pub/Sub API client library";
+    homepage = "https://pypi.org/project/google-cloud-pubsub";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-redis/default.nix b/pkgs/development/python-modules/google-cloud-redis/default.nix
new file mode 100644
index 000000000000..9408c6642d96
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-redis/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google-api-core
+, libcst
+, mock
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-redis";
+  version = "2.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1f67mr473vzv0qgjm4hycfnrjgiqrsv47vqrynwjy9yrca2130y7";
+  };
+
+  propagatedBuildInputs = [ google-api-core libcst proto-plus ];
+
+  checkInputs = [ mock pytestCheckHook pytest-asyncio ];
+
+  pythonImportsCheck = [
+    "google.cloud.redis"
+    "google.cloud.redis_v1"
+    "google.cloud.redis_v1beta1"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Google Cloud Memorystore for Redis API client library";
+    homepage = "https://github.com/googleapis/python-redis";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-resource-manager/default.nix b/pkgs/development/python-modules/google-cloud-resource-manager/default.nix
new file mode 100644
index 000000000000..36e8d0bcc52b
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-resource-manager/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, google-cloud-core
+, google-api-core
+, mock
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-resource-manager";
+  version = "0.30.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1la643vkf6fm2gapz57cm92xzvmhzgpzv3bb6112yz1cizrvnxrm";
+  };
+
+  propagatedBuildInputs = [ google-api-core google-cloud-core ];
+
+  checkInputs = [ mock pytestCheckHook ];
+
+  # prevent google directory from shadowing google imports
+  preCheck = ''
+    rm -r google
+  '';
+
+  pythonImportsCheck = [ "google.cloud.resource_manager" ];
+
+  meta = with stdenv.lib; {
+    description = "Google Cloud Resource Manager API client library";
+    homepage = "https://github.com/googleapis/python-resource-manager";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google_cloud_runtimeconfig/default.nix b/pkgs/development/python-modules/google-cloud-runtimeconfig/default.nix
index d4fb4c59a18c..c4e569b88ad3 100644
--- a/pkgs/development/python-modules/google_cloud_runtimeconfig/default.nix
+++ b/pkgs/development/python-modules/google-cloud-runtimeconfig/default.nix
@@ -1,5 +1,11 @@
-{ stdenv, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder
-, google_api_core, google_cloud_core, mock }:
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google-api-core
+, google-cloud-core
+, mock
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "google-cloud-runtimeconfig";
@@ -7,28 +13,27 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "57143ec3c5ed3e0bee590a98857eec06c68aa2eacbce477403226a0d2e85a8ad";
+    sha256 = "1bd8hlp0ssi20ds4gknbxai8mih6xiz8b60ab7p0ngpdqp1kw52p";
   };
 
-  disabled = pythonOlder "3.5";
+  propagatedBuildInputs = [ google-api-core google-cloud-core ];
 
   checkInputs = [ mock pytestCheckHook ];
-  propagatedBuildInputs = [ google_api_core google_cloud_core ];
 
-  # api_url test broken, fix not yet released
-  # https://github.com/googleapis/python-resource-manager/pull/31
   # Client tests require credentials
-  disabledTests = [ "build_api_url_w_custom_endpoint" "client_options" ];
+  disabledTests = [ "client_options" ];
 
   # prevent google directory from shadowing google imports
   preCheck = ''
     rm -r google
   '';
 
+  pythonImportsCheck = [ "google.cloud.runtimeconfig" ];
+
   meta = with stdenv.lib; {
     description = "Google Cloud RuntimeConfig API client library";
     homepage = "https://pypi.org/project/google-cloud-runtimeconfig";
     license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-secret-manager/default.nix b/pkgs/development/python-modules/google-cloud-secret-manager/default.nix
new file mode 100644
index 000000000000..bb18b72caad6
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-secret-manager/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, google-api-core
+, grpc_google_iam_v1
+, libcst
+, mock
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-secret-manager";
+  version = "2.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0c2w8ny3n84faq1mq86f16lzqgqbk1977q2f5qxn5a5ccj8v821g";
+  };
+
+  propagatedBuildInputs = [
+    google-api-core
+    grpc_google_iam_v1
+    libcst
+    proto-plus
+  ];
+
+  checkInputs = [
+    mock
+    pytestCheckHook
+    pytest-asyncio
+  ];
+
+  pythonImportsCheck = [
+    "google.cloud.secretmanager"
+    "google.cloud.secretmanager_v1"
+    "google.cloud.secretmanager_v1beta1"
+  ];
+
+  meta = with lib; {
+    description = "Secret Manager API API client library";
+    homepage = "https://github.com/googleapis/python-secret-manager";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ siriobalmelli SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-securitycenter/default.nix b/pkgs/development/python-modules/google-cloud-securitycenter/default.nix
new file mode 100644
index 000000000000..4784dbe44739
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-securitycenter/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, grpc_google_iam_v1
+, google-api-core
+, libcst
+, mock
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-securitycenter";
+  version = "1.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1lgz6qpsfv4b7p5ff4sdpjpaddxpbazdvlcrqr1i0c0qil2lkm2i";
+  };
+
+  propagatedBuildInputs = [ grpc_google_iam_v1 google-api-core libcst proto-plus ];
+
+  checkInputs = [ mock pytestCheckHook pytest-asyncio ];
+
+  pythonImportsCheck = [
+    "google.cloud.securitycenter"
+    "google.cloud.securitycenter_v1"
+    "google.cloud.securitycenter_v1beta1"
+    "google.cloud.securitycenter_v1p1beta1"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Cloud Security Command Center API API client library";
+    homepage = "https://github.com/googleapis/python-securitycenter";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-spanner/default.nix b/pkgs/development/python-modules/google-cloud-spanner/default.nix
new file mode 100644
index 000000000000..2591fd9dc689
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-spanner/default.nix
@@ -0,0 +1,54 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, grpc_google_iam_v1
+, google-cloud-core
+, google-cloud-testutils
+, libcst
+, mock
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+, sqlparse
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-spanner";
+  version = "2.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0mkkx6l3cbwfwng12zpisbv6m919fkhdb48xk24ayc19193bi86n";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace '"proto-plus == 1.11.0"' '"proto-plus"'
+  '';
+
+  propagatedBuildInputs = [ google-cloud-core grpc_google_iam_v1 libcst proto-plus sqlparse ];
+
+  checkInputs = [ google-cloud-testutils mock pytestCheckHook pytest-asyncio ];
+
+  preCheck = ''
+    # prevent google directory from shadowing google imports
+    rm -r google
+    # disable tests which require credentials
+    rm tests/system/test_{system,system_dbapi}.py
+    rm tests/unit/spanner_dbapi/test_{connect,connection,cursor}.py
+  '';
+
+  pythonImportsCheck = [
+    "google.cloud.spanner_admin_database_v1"
+    "google.cloud.spanner_admin_instance_v1"
+    "google.cloud.spanner_dbapi"
+    "google.cloud.spanner_v1"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Cloud Spanner API client library";
+    homepage = "https://github.com/googleapis/python-spanner";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-speech/default.nix b/pkgs/development/python-modules/google-cloud-speech/default.nix
new file mode 100644
index 000000000000..a1d6762eafbf
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-speech/default.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google-api-core
+, libcst
+, mock
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-speech";
+  version = "2.0.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0ch85h5xrb15fcml5v0f30s0niw02k4v8gi7i8a40161yj882hm7";
+  };
+
+  propagatedBuildInputs = [ libcst google-api-core proto-plus ];
+
+  checkInputs = [ mock pytestCheckHook pytest-asyncio ];
+
+  pytestFlagsArray = [
+    # requrire credentials
+    "--ignore=tests/system/gapic/v1/test_system_speech_v1.py"
+    "--ignore=tests/system/gapic/v1p1beta1/test_system_speech_v1p1beta1.py"
+  ];
+
+  pythonImportsCheck = [
+    "google.cloud.speech"
+    "google.cloud.speech_v1"
+    "google.cloud.speech_v1p1beta1"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Google Cloud Speech API client library";
+    homepage = "https://github.com/googleapis/python-speech";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-storage/default.nix b/pkgs/development/python-modules/google-cloud-storage/default.nix
new file mode 100644
index 000000000000..cf869d5c8eff
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-storage/default.nix
@@ -0,0 +1,64 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, google-auth
+, google-cloud-iam
+, google-cloud-core
+, google-cloud-kms
+, google-cloud-testutils
+, google-resumable-media
+, mock
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-storage";
+  version = "1.35.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "17kal75wmyjpva7g04cb9yg7qbyrgwfn575z4gqijd4gz2r0sp2m";
+  };
+
+  propagatedBuildInputs = [
+    google-auth
+    google-cloud-core
+    google-resumable-media
+  ];
+
+  checkInputs = [
+    google-cloud-iam
+    google-cloud-kms
+    google-cloud-testutils
+    mock
+    pytestCheckHook
+  ];
+
+  # disable tests which require credentials and network access
+  disabledTests = [
+    "create"
+    "download"
+    "get"
+    "post"
+    "test_build_api_url"
+  ];
+
+  pytestFlagsArray = [
+    "--ignore=tests/unit/test_bucket.py"
+    "--ignore=tests/system/test_system.py"
+  ];
+
+  # prevent google directory from shadowing google imports
+  preCheck = ''
+    rm -r google
+  '';
+
+  pythonImportsCheck = [ "google.cloud.storage" ];
+
+  meta = with lib; {
+    description = "Google Cloud Storage API client library";
+    homepage = "https://github.com/googleapis/python-storage";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-tasks/default.nix b/pkgs/development/python-modules/google-cloud-tasks/default.nix
new file mode 100644
index 000000000000..8f86e71daedc
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-tasks/default.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google-api-core
+, grpc_google_iam_v1
+, libcst
+, mock
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-tasks";
+  version = "2.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1jsf7y88lvln9r08pmx673ibmgw397qmir5drrcfvlmgqvszp7qx";
+  };
+
+  propagatedBuildInputs = [ google-api-core grpc_google_iam_v1 libcst proto-plus ];
+
+  checkInputs = [ mock pytestCheckHook pytest-asyncio ];
+
+  disabledTests = [
+    # requires credentials
+    "test_list_queues"
+  ];
+
+  pythonImportsCheck = [
+    "google.cloud.tasks"
+    "google.cloud.tasks_v2"
+    "google.cloud.tasks_v2beta2"
+    "google.cloud.tasks_v2beta3"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Cloud Tasks API API client library";
+    homepage = "https://github.com/googleapis/python-tasks";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google_cloud_testutils/default.nix b/pkgs/development/python-modules/google-cloud-testutils/default.nix
index dfd6354dcc4b..7358c61f59a0 100644
--- a/pkgs/development/python-modules/google_cloud_testutils/default.nix
+++ b/pkgs/development/python-modules/google-cloud-testutils/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildPythonPackage, fetchPypi, google_auth, pytest, six }:
+{ stdenv, buildPythonPackage, fetchPypi, google-auth, six }:
 
 buildPythonPackage rec {
   pname = "google-cloud-testutils";
@@ -9,15 +9,17 @@ buildPythonPackage rec {
     sha256 = "1bn1pz00lxym3vkl6l45b3nydpmfdvmylwggh2lspldrxwx39a0k";
   };
 
-  propagatedBuildInputs = [ google_auth six ];
+  propagatedBuildInputs = [ google-auth six ];
 
-  # There are no tests
+  # does not contain tests
   doCheck = false;
 
+  pythonImportsCheck = [ "test_utils" ];
+
   meta = with stdenv.lib; {
     description = "System test utilities for google-cloud-python";
     homepage = "https://github.com/googleapis/python-test-utils";
     license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-texttospeech/default.nix b/pkgs/development/python-modules/google-cloud-texttospeech/default.nix
new file mode 100644
index 000000000000..7c8f738f57b7
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-texttospeech/default.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, google-api-core
+, libcst
+, mock
+, proto-plus
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-texttospeech";
+  version = "2.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "17igfwh34369gkvsbrm46j1ii61i6268wg2g2dl9c65nf9z3kgfb";
+  };
+
+  propagatedBuildInputs = [ libcst google-api-core proto-plus ];
+
+  checkInputs = [ mock pytest-asyncio pytestCheckHook ];
+
+  disabledTests = [
+    # Disable tests that require credentials
+    "test_list_voices"
+    "test_synthesize_speech"
+  ];
+
+  pythonImportsCheck = [
+    "google.cloud.texttospeech"
+    "google.cloud.texttospeech_v1"
+    "google.cloud.texttospeech_v1beta1"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Google Cloud Text-to-Speech API client library";
+    homepage = "https://github.com/googleapis/python-texttospeech";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-trace/default.nix b/pkgs/development/python-modules/google-cloud-trace/default.nix
new file mode 100644
index 000000000000..200f3dc1816a
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-trace/default.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google-api-core
+, google-cloud-core
+, google-cloud-testutils
+, mock
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-trace";
+  version = "1.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1lvcm4w1l7hiqg64kdscch3f3bq19q9ii49xj4lljn2a4xffxl8v";
+  };
+
+  propagatedBuildInputs = [ google-api-core google-cloud-core proto-plus ];
+
+  checkInputs = [ google-cloud-testutils mock pytestCheckHook pytest-asyncio ];
+
+  disabledTests = [
+    # require credentials
+    "test_batch_write_spans"
+    "test_list_traces"
+  ];
+
+  pythonImportsCheck = [
+    "google.cloud.trace"
+    "google.cloud.trace_v1"
+    "google.cloud.trace_v2"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Cloud Trace API client library";
+    homepage = "https://github.com/googleapis/python-trace";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-translate/default.nix b/pkgs/development/python-modules/google-cloud-translate/default.nix
new file mode 100644
index 000000000000..41ec5e76fece
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-translate/default.nix
@@ -0,0 +1,46 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, google-api-core
+, google-cloud-core
+, google-cloud-testutils
+, grpcio
+, libcst
+, mock
+, proto-plus
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-translate";
+  version = "3.0.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1s2gvlzfqd2gsrzaz7yl9q8s1k03dlsjahgg95s017vlcn21d0v1";
+  };
+
+  propagatedBuildInputs = [ google-api-core google-cloud-core libcst proto-plus ];
+
+  checkInputs = [ google-cloud-testutils mock pytestCheckHook pytest-asyncio ];
+
+  preCheck = ''
+    # prevent shadowing imports
+    rm -r google
+  '';
+
+  pythonImportsCheck = [
+    "google.cloud.translate"
+    "google.cloud.translate_v2"
+    "google.cloud.translate_v3"
+    "google.cloud.translate_v3beta1"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Google Cloud Translation API client library";
+    homepage = "https://github.com/googleapis/python-translate";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-videointelligence/default.nix b/pkgs/development/python-modules/google-cloud-videointelligence/default.nix
new file mode 100644
index 000000000000..72a7f42e4f59
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-videointelligence/default.nix
@@ -0,0 +1,45 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, mock
+, google-api-core
+, google-cloud-testutils
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-videointelligence";
+  version = "2.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1yhmizig41ymr2dz0i6ccrwszp0ivyykmq11vqxp82l9ncjima82";
+  };
+
+  propagatedBuildInputs = [ google-api-core proto-plus ];
+
+  checkInputs = [ google-cloud-testutils mock pytestCheckHook pytest-asyncio ];
+
+  disabledTests = [
+    # require credentials
+    "test_annotate_video"
+  ];
+
+  pythonImportsCheck = [
+    "google.cloud.videointelligence"
+    "google.cloud.videointelligence_v1"
+    "google.cloud.videointelligence_v1beta2"
+    "google.cloud.videointelligence_v1p1beta1"
+    "google.cloud.videointelligence_v1p2beta1"
+    "google.cloud.videointelligence_v1p3beta1"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Google Cloud Video Intelligence API client library";
+    homepage = "https://github.com/googleapis/python-videointelligence";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-vision/default.nix b/pkgs/development/python-modules/google-cloud-vision/default.nix
new file mode 100644
index 000000000000..42e0aa61f747
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-vision/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, google-api-core
+, libcst
+, mock
+, proto-plus
+, pytestCheckHook
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-vision";
+  version = "2.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0qbwhapmn5ia853c4nfnz1qiksngvr8j0xxjasrykwhxcsd7s1ka";
+  };
+
+  propagatedBuildInputs = [ libcst google-api-core proto-plus];
+
+  checkInputs = [ mock pytestCheckHook pytest-asyncio ];
+
+  pythonImportsCheck = [
+    "google.cloud.vision"
+    "google.cloud.vision_helpers"
+    "google.cloud.vision_v1"
+    "google.cloud.vision_v1p1beta1"
+    "google.cloud.vision_v1p2beta1"
+    "google.cloud.vision_v1p3beta1"
+    "google.cloud.vision_v1p4beta1"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Cloud Vision API API client library";
+    homepage = "https://github.com/googleapis/python-vision";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-websecurityscanner/default.nix b/pkgs/development/python-modules/google-cloud-websecurityscanner/default.nix
new file mode 100644
index 000000000000..c145bf9837d0
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-websecurityscanner/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, google-api-core
+, libcst
+, mock
+, proto-plus
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-websecurityscanner";
+  version = "1.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "14sky9bkl00n65ksig3f6psm31pkmkvlcprlk6s9if470j40zrhx";
+  };
+
+  propagatedBuildInputs = [ google-api-core libcst proto-plus ];
+
+  checkInputs = [ mock pytest-asyncio pytestCheckHook ];
+
+  pythonImportsCheck = [
+    "google.cloud.websecurityscanner_v1alpha"
+    "google.cloud.websecurityscanner_v1beta"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Google Cloud Web Security Scanner API client library";
+    homepage = "https://github.com/googleapis/python-websecurityscanner";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-crc32c/default.nix b/pkgs/development/python-modules/google-crc32c/default.nix
index fbed406cebce..aaf16d9e7c82 100644
--- a/pkgs/development/python-modules/google-crc32c/default.nix
+++ b/pkgs/development/python-modules/google-crc32c/default.nix
@@ -1,31 +1,31 @@
-{ lib, buildPythonPackage, isPy3k, fetchFromGitHub, cffi, crc32c, pytestCheckHook }:
+{ lib, buildPythonPackage, fetchFromGitHub, cffi, crc32c, pytestCheckHook }:
 
 buildPythonPackage rec {
   pname = "google-crc32c";
-  version = "1.0.0";
-
-  disabled = !isPy3k;
+  version = "1.1.0";
 
   src = fetchFromGitHub {
     owner = "googleapis";
     repo = "python-crc32c";
     rev = "v${version}";
-    sha256 = "0n3ggsxmk1fhq0kz6p5rcj4gypfb05i26fcn7lsawakgl7fzxqyl";
+    sha256 = "0vbidg9yrv9k8xvk8rl43lsf4cg3dci4a9k4srwwrchbxivz1gr6";
   };
 
-  buildInputs = [ crc32c  ];
+  buildInputs = [ crc32c ];
+
   propagatedBuildInputs = [ cffi ];
 
   LDFLAGS = "-L${crc32c}/lib";
   CFLAGS = "-I${crc32c}/include";
 
   checkInputs = [ pytestCheckHook crc32c ];
+
   pythonImportsCheck = [ "google_crc32c" ];
 
   meta = with lib; {
     homepage = "https://github.com/googleapis/python-crc32c";
     description = "Wrapper the google/crc32c hardware-based implementation of the CRC32C hashing algorithm";
     license = with licenses; [ asl20 ];
-    maintainers = with maintainers; [ freezeboy ];
+    maintainers = with maintainers; [ freezeboy SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/google-i18n-address/default.nix b/pkgs/development/python-modules/google-i18n-address/default.nix
index 56a77258c8aa..590962590e5f 100644
--- a/pkgs/development/python-modules/google-i18n-address/default.nix
+++ b/pkgs/development/python-modules/google-i18n-address/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, fetchPypi, lib, requests, pytest, pytestcov, mock }:
+{ buildPythonPackage, fetchPypi, lib, requests, pytestCheckHook, mock }:
 
 buildPythonPackage rec {
   pname = "google-i18n-address";
@@ -11,12 +11,12 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ requests ];
 
-  checkInputs = [ pytest pytestcov mock ];
+  checkInputs = [ pytestCheckHook mock ];
 
   meta = with lib; {
     description = "Google's i18n address data packaged for Python";
     homepage = "https://pypi.org/project/google-i18n-address/";
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ SuperSandro2000 ];
     license = licenses.bsd3;
   };
 }
diff --git a/pkgs/development/python-modules/google-music-proto/default.nix b/pkgs/development/python-modules/google-music-proto/default.nix
index 16363192c81b..a883f707bdf1 100644
--- a/pkgs/development/python-modules/google-music-proto/default.nix
+++ b/pkgs/development/python-modules/google-music-proto/default.nix
@@ -1,4 +1,7 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
 , attrs
 , audio-metadata
 , importlib-metadata
@@ -10,7 +13,6 @@
 buildPythonPackage rec {
   pname = "google-music-proto";
   version = "2.10.0";
-  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
@@ -20,7 +22,7 @@ buildPythonPackage rec {
   postPatch = ''
     sed -i -e "/audio-metadata/c\'audio-metadata'," -e "/marshmallow/c\'marshmallow'," setup.py
     substituteInPlace setup.py \
-      --replace "pendulum>=2.0,<=3.0,!=2.0.5,!=2.1.0" "pendulum>=2.0,<=3.0"
+      --replace "'attrs>=18.2,<19.4'" "'attrs'"
   '';
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/google-music-utils/default.nix b/pkgs/development/python-modules/google-music-utils/default.nix
index b7fd2738e048..801b4b78a178 100644
--- a/pkgs/development/python-modules/google-music-utils/default.nix
+++ b/pkgs/development/python-modules/google-music-utils/default.nix
@@ -1,30 +1,35 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder
-, audio-metadata, multidict, wrapt
-, pytest
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, audio-metadata
+, multidict
+, poetry
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "google-music-utils";
-  version = "2.1.0";
+  version = "2.5.0";
 
   # Pypi tarball doesn't contain tests
   src = fetchFromGitHub {
     owner = "thebigmunch";
     repo = "google-music-utils";
     rev = version;
-    sha256 = "0fn4zp0gf1wx2x06dbc840qcq21j4p3ajghxp7646w2n6n9gxhh7";
+    sha256 = "0vwbrgakk23fypjspmscz4gllnb3dksv2njy4j4bm8vyr6fwbi5f";
   };
+  format = "pyproject";
 
-  propagatedBuildInputs = [
-    audio-metadata multidict wrapt
-  ];
-
-  checkInputs = [ pytest ];
-  checkPhase = ''
-    pytest
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'multidict = "^4.0"' 'multidict = ">4.0"'
   '';
 
-  disabled = pythonOlder "3.6";
+  nativeBuildInputs = [ poetry ];
+
+  propagatedBuildInputs = [ audio-metadata multidict ];
+
+  checkInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     homepage = "https://github.com/thebigmunch/google-music-utils";
diff --git a/pkgs/development/python-modules/google-music/default.nix b/pkgs/development/python-modules/google-music/default.nix
index 9d2f0def99b2..e5b42c5310f7 100644
--- a/pkgs/development/python-modules/google-music/default.nix
+++ b/pkgs/development/python-modules/google-music/default.nix
@@ -1,4 +1,6 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder
+{ lib
+, buildPythonPackage
+, fetchPypi
 , appdirs
 , audio-metadata
 , google-music-proto
@@ -14,7 +16,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b79956cc0df86345c74436ae6213b700345403c91d51947288806b174322573b";
+    sha256 = "0fsp491ifsw0i1r98l8xr41m8d00nw9n5bin8k3laqzq1p65d6dp";
   };
 
   postPatch = ''
@@ -35,8 +37,6 @@ buildPythonPackage rec {
   # No tests
   doCheck = false;
 
-  disabled = pythonOlder "3.6";
-
   meta = with lib; {
     homepage = "https://github.com/thebigmunch/google-music";
     description = "A Google Music API wrapper";
diff --git a/pkgs/development/python-modules/google-resumable-media/default.nix b/pkgs/development/python-modules/google-resumable-media/default.nix
new file mode 100644
index 000000000000..531dc1a28603
--- /dev/null
+++ b/pkgs/development/python-modules/google-resumable-media/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, google-auth
+, google-cloud-testutils
+, google-crc32c
+, mock
+, pytestCheckHook
+, pytest-asyncio
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "google-resumable-media";
+  version = "1.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0hwxdgsqh6933kp4jkv6hwwdcqs7bgjn9j08ga399njv3s9b367f";
+  };
+
+  propagatedBuildInputs = [ google-auth google-crc32c requests ];
+
+  checkInputs = [ google-auth google-cloud-testutils mock pytestCheckHook pytest-asyncio ];
+
+  preCheck = ''
+    # prevent shadowing imports
+    rm -r google
+    # fixture 'authorized_transport' not found
+    rm tests/system/requests/test_upload.py
+    # requires network
+    rm tests/system/requests/test_download.py
+  '';
+
+  pythonImportsCheck = [
+    "google._async_resumable_media"
+    "google.resumable_media"
+  ];
+
+  meta = with lib; {
+    description = "Utilities for Google Media Downloads and Resumable Uploads";
+    homepage = "https://github.com/GoogleCloudPlatform/google-resumable-media-python";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google_auth/default.nix b/pkgs/development/python-modules/google_auth/default.nix
deleted file mode 100644
index 3f47a366fba8..000000000000
--- a/pkgs/development/python-modules/google_auth/default.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ stdenv, buildPythonPackage, fetchpatch, fetchPypi, pythonOlder
-, pytestCheckHook, cachetools, flask, freezegun, mock, oauth2client
-, pyasn1-modules, pytest, pytest-localserver, requests, responses, rsa
-, setuptools, six, urllib3 }:
-
-buildPythonPackage rec {
-  pname = "google-auth";
-  version = "1.23.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "5176db85f1e7e837a646cd9cede72c3c404ccf2e3373d9ee14b2db88febad440";
-  };
-
-  disabled = pythonOlder "3.5";
-
-  propagatedBuildInputs = [ six pyasn1-modules cachetools rsa setuptools ];
-
-  checkInputs = [
-    flask
-    freezegun
-    mock
-    oauth2client
-    pytestCheckHook
-    pytest-localserver
-    requests
-    responses
-    urllib3
-  ];
-
-  meta = with stdenv.lib; {
-    description = "Google Auth Python Library";
-    longDescription = ''
-      This library simplifies using Google’s various server-to-server
-      authentication mechanisms to access Google APIs.
-    '';
-    homepage = "https://github.com/googleapis/google-auth-library-python";
-    changelog =
-      "https://github.com/googleapis/google-auth-library-python/blob/v${version}/CHANGELOG.md";
-    # Documentation: https://googleapis.dev/python/google-auth/latest/index.html
-    license = licenses.asl20;
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_asset/default.nix b/pkgs/development/python-modules/google_cloud_asset/default.nix
deleted file mode 100644
index 87b1fdf8fc9d..000000000000
--- a/pkgs/development/python-modules/google_cloud_asset/default.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi, pythonOlder, grpc_google_iam_v1
-, google_api_core, google-cloud-access-context-manager, google-cloud-org-policy
-, libcst, proto-plus, pytest, pytest-asyncio, pytestCheckHook, mock }:
-
-buildPythonPackage rec {
-  pname = "google-cloud-asset";
-  version = "2.2.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1cf1b8a102eea8cec65eb07bef51dc15c1136cfc8564ea7fc5a39465b8f20017";
-  };
-
-  disabled = pythonOlder "3.6";
-
-  checkInputs = [ mock pytest-asyncio pytestCheckHook ];
-  disabledTests = [ "asset_service_transport_auth_adc" ];
-  propagatedBuildInputs = [
-    grpc_google_iam_v1
-    google_api_core
-    google-cloud-access-context-manager
-    google-cloud-org-policy
-    libcst
-    proto-plus
-  ];
-
-  # Remove tests intended to be run in VPC
-  preCheck = ''
-    rm -rf tests/system
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Python Client for Google Cloud Asset API";
-    homepage = "https://github.com/googleapis/python-asset";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_automl/default.nix b/pkgs/development/python-modules/google_cloud_automl/default.nix
deleted file mode 100644
index 3ad8dcb12fb3..000000000000
--- a/pkgs/development/python-modules/google_cloud_automl/default.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi, pythonOlder, pytestCheckHook, libcst
-, google_api_core, google_cloud_storage, google_cloud_testutils, pandas
-, proto-plus, pytest-asyncio, mock }:
-
-buildPythonPackage rec {
-  pname = "google-cloud-automl";
-  version = "2.1.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "520dfe2ee04d28f3088c9c582fa2a534fc272647d5e2e59acc903c0152e61696";
-  };
-
-  disabled = pythonOlder "3.6";
-
-  checkInputs = [
-    google_cloud_storage
-    google_cloud_testutils
-    mock
-    pandas
-    pytest-asyncio
-    pytestCheckHook
-  ];
-  propagatedBuildInputs = [ google_api_core libcst proto-plus ];
-
-  # ignore tests which need credentials
-  disabledTests = [ "test_prediction_client_client_info" ];
-  preCheck = ''
-    rm -r google
-    rm tests/system/gapic/v1beta1/test_system_tables_client_v1.py
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Cloud AutoML API client library";
-    homepage = "https://github.com/googleapis/python-automl";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_bigquery/default.nix b/pkgs/development/python-modules/google_cloud_bigquery/default.nix
deleted file mode 100644
index 3255475fbf51..000000000000
--- a/pkgs/development/python-modules/google_cloud_bigquery/default.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder, freezegun
-, google_api_core, google_cloud_core, google_cloud_testutils
-, google_resumable_media, grpcio, ipython, mock, pandas, proto-plus, pyarrow }:
-
-buildPythonPackage rec {
-  pname = "google-cloud-bigquery";
-  version = "2.6.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1f99fd0c0c5bde999e056a1be666e5d5bbf392f62c9e730dfcbaf6e8408d44ef";
-  };
-
-  disabled = pythonOlder "3.6";
-
-  checkInputs =
-    [ freezegun google_cloud_testutils ipython mock pytestCheckHook ];
-  propagatedBuildInputs = [
-    google_resumable_media
-    google_api_core
-    google_cloud_core
-    pandas
-    proto-plus
-    pyarrow
-  ];
-
-  # prevent google directory from shadowing google imports
-  # test_magics requires modifying sys.path
-  preCheck = ''
-    rm -r google
-    rm tests/unit/test_magics.py
-  '';
-
-  # call_api_applying_custom_retry_on_timeout requires credentials
-  # to_dataframe_timestamp_out_of_pyarrow_bounds has inconsistent results
-  disabledTests = [
-    "call_api_applying_custom_retry_on_timeout"
-    "to_dataframe_timestamp_out_of_pyarrow_bounds"
-  ];
-
-  meta = with stdenv.lib; {
-    description = "Google BigQuery API client library";
-    homepage = "https://pypi.org/project/google-cloud-bigquery";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_bigquery_datatransfer/default.nix b/pkgs/development/python-modules/google_cloud_bigquery_datatransfer/default.nix
deleted file mode 100644
index 8c71ac92c994..000000000000
--- a/pkgs/development/python-modules/google_cloud_bigquery_datatransfer/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, google_api_core
-, pytest
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "google-cloud-bigquery-datatransfer";
-  version = "2.1.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0cca79f6ee312159ec3f3b7fea218c3dd51408d39c429ecbea037982e91cc827";
-  };
-
-  checkInputs = [ pytest mock ];
-  propagatedBuildInputs = [ google_api_core ];
-
-  checkPhase = ''
-    pytest tests/unit
-  '';
-
-  meta = with stdenv.lib; {
-    description = "BigQuery Data Transfer API client library";
-    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_container/default.nix b/pkgs/development/python-modules/google_cloud_container/default.nix
deleted file mode 100644
index c5415b84ba1f..000000000000
--- a/pkgs/development/python-modules/google_cloud_container/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi, pythonOlder, google_api_core
-, grpc_google_iam_v1, libcst, mock, proto-plus, pytest, pytest-asyncio }:
-
-buildPythonPackage rec {
-  pname = "google-cloud-container";
-  version = "2.3.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0dcd8084dd55c0439ff065d3fb206e2e5c695d3a25effd774b74f8ce43afc911";
-  };
-
-  disabled = pythonOlder "3.6";
-
-  checkInputs = [ mock pytest pytest-asyncio ];
-  propagatedBuildInputs =
-    [ google_api_core grpc_google_iam_v1 libcst proto-plus ];
-
-  checkPhase = ''
-    pytest tests/unit
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Google Container Engine API client library";
-    homepage = "https://github.com/googleapis/python-container";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_dataproc/default.nix b/pkgs/development/python-modules/google_cloud_dataproc/default.nix
deleted file mode 100644
index b0067d4316da..000000000000
--- a/pkgs/development/python-modules/google_cloud_dataproc/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, google_api_core
-, pytest
-, mock
-, libcst
-, proto-plus
-}:
-
-buildPythonPackage rec {
-  pname = "google-cloud-dataproc";
-  version = "2.2.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "81c44ac114c94df8f5b21245e5e7fc4eabce66b25fc432c3696b62b5de143b1f";
-  };
-
-  checkInputs = [ pytest mock ];
-  propagatedBuildInputs = [ google_api_core libcst proto-plus ];
-
-  checkPhase = ''
-    pytest tests/unit
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Google Cloud Dataproc API client library";
-    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_datastore/default.nix b/pkgs/development/python-modules/google_cloud_datastore/default.nix
deleted file mode 100644
index 07c6cd87237f..000000000000
--- a/pkgs/development/python-modules/google_cloud_datastore/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, google_api_core
-, google_cloud_core
-, pytest
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "google-cloud-datastore";
-  version = "2.0.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0ebf3b0bcb483e066dfe73679e019e2d7b8c1652e26984702cf5e3f020592f6a";
-  };
-
-  checkInputs = [ pytest mock ];
-  propagatedBuildInputs = [ google_api_core google_cloud_core ];
-
-  checkPhase = ''
-    rm -r google
-    pytest tests/unit
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Google Cloud Datastore API client library";
-    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_dlp/default.nix b/pkgs/development/python-modules/google_cloud_dlp/default.nix
deleted file mode 100644
index a5a602dbeadb..000000000000
--- a/pkgs/development/python-modules/google_cloud_dlp/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, enum34
-, google_api_core
-, pytest
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "google-cloud-dlp";
-  version = "2.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "112c8a46979eebd60c3651037e62572fed413977ff2811901aa925c7b7ab9a5a";
-  };
-
-  checkInputs = [ pytest mock ];
-  propagatedBuildInputs = [ enum34 google_api_core ];
-
-  checkPhase = ''
-    pytest tests/unit
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Cloud Data Loss Prevention (DLP) API API client library";
-    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_dns/default.nix b/pkgs/development/python-modules/google_cloud_dns/default.nix
deleted file mode 100644
index d488b7ad5632..000000000000
--- a/pkgs/development/python-modules/google_cloud_dns/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, google_api_core
-, google_cloud_core
-, pytest
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "google-cloud-dns";
-  version = "0.32.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "7264e58067b55535ee859e124bd3da29337698ef6bb293da667d0316ddbe8606";
-  };
-
-  checkInputs = [ pytest mock ];
-  propagatedBuildInputs = [ google_api_core google_cloud_core ];
-
-  checkPhase = ''
-    rm -r google
-    pytest tests/unit
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Google Cloud DNS API client library";
-    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_firestore/default.nix b/pkgs/development/python-modules/google_cloud_firestore/default.nix
deleted file mode 100644
index 4f819bbf9bfa..000000000000
--- a/pkgs/development/python-modules/google_cloud_firestore/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, google_api_core
-, google_cloud_core
-, pytest
-}:
-
-buildPythonPackage rec {
-  pname = "google-cloud-firestore";
-  version = "2.0.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "ae1f58d9174a6fb2c9fd2758c6d4fd237fb4f0decc632b80c217bfbceda38eb6";
-  };
-
-  checkInputs = [ pytest ];
-  propagatedBuildInputs = [ google_api_core google_cloud_core ];
-
-  # tests were not included with release
-  # See issue https://github.com/googleapis/google-cloud-python/issues/6380
-  doCheck = false;
-
-  checkPhase = ''
-    pytest tests/unit
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Google Cloud Firestore API client library";
-    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_iot/default.nix b/pkgs/development/python-modules/google_cloud_iot/default.nix
deleted file mode 100644
index 96364cfd7029..000000000000
--- a/pkgs/development/python-modules/google_cloud_iot/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, enum34
-, grpc_google_iam_v1
-, google_api_core
-, pytest
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "google-cloud-iot";
-  version = "2.0.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "8af2be9c74697a350d5cc8ead00ae6cb4e85943564f1d782e8060d0d5eb15723";
-  };
-
-  checkInputs = [ pytest mock ];
-  propagatedBuildInputs = [ enum34 grpc_google_iam_v1 google_api_core ];
-
-  checkPhase = ''
-    pytest tests/unit
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Cloud IoT API API client library";
-    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
-    license = licenses.asl20;
-    # maintainers = [ maintainers. ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_language/default.nix b/pkgs/development/python-modules/google_cloud_language/default.nix
deleted file mode 100644
index 4f3defb4e4b9..000000000000
--- a/pkgs/development/python-modules/google_cloud_language/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, enum34
-, google_api_core
-, pytest
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "google-cloud-language";
-  version = "2.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "abe7abcd64d25ffdf6d063385869ef8f34a7de421d5676541cd6df63b3c37b88";
-  };
-
-  checkInputs = [ pytest mock ];
-  propagatedBuildInputs = [ enum34 google_api_core ];
-
-  checkPhase = ''
-    pytest tests/unit
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Google Cloud Natural Language API client library";
-    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_logging/default.nix b/pkgs/development/python-modules/google_cloud_logging/default.nix
deleted file mode 100644
index 96473edd583b..000000000000
--- a/pkgs/development/python-modules/google_cloud_logging/default.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder, django
-, flask, google_api_core, google_cloud_core, google_cloud_testutils, mock
-, webapp2 }:
-
-buildPythonPackage rec {
-  pname = "google-cloud-logging";
-  version = "2.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "c8e4869ec22aa7958ff937c1acbd34d7a2a8a446af9a09ce442f24128eee063c";
-  };
-
-  disabled = pythonOlder "3.5";
-
-  checkInputs =
-    [ django flask google_cloud_testutils mock pytestCheckHook webapp2 ];
-  propagatedBuildInputs = [ google_api_core google_cloud_core ];
-
-  # api_url test broken, fix not yet released
-  # https://github.com/googleapis/python-logging/pull/66
-  disabledTests =
-    [ "test_build_api_url_w_custom_endpoint" "test_write_log_entries" ];
-
-  # prevent google directory from shadowing google imports
-  # remove system integration tests
-  preCheck = ''
-    rm -r google
-    rm tests/system/test_system.py
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Stackdriver Logging API client library";
-    homepage = "https://github.com/googleapis/python-logging";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_monitoring/default.nix b/pkgs/development/python-modules/google_cloud_monitoring/default.nix
deleted file mode 100644
index 99557565e63a..000000000000
--- a/pkgs/development/python-modules/google_cloud_monitoring/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, google_api_core
-, pandas
-, pytest
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "google-cloud-monitoring";
-  version = "2.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1debfa046ab9518d46b68712c03d86d0ddb11d1aad428aed62c6465752f2201f";
-  };
-
-  checkInputs = [ pytest mock ];
-  propagatedBuildInputs = [ google_api_core pandas ];
-
-  checkPhase = ''
-    pytest tests/unit
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Stackdriver Monitoring API client library";
-    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_pubsub/default.nix b/pkgs/development/python-modules/google_cloud_pubsub/default.nix
deleted file mode 100644
index b7b810370f98..000000000000
--- a/pkgs/development/python-modules/google_cloud_pubsub/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi, pythonOlder, pytestCheckHook
-, google_api_core, google_cloud_testutils, grpc_google_iam_v1, libcst, mock
-, proto-plus, pytest-asyncio }:
-
-buildPythonPackage rec {
-  pname = "google-cloud-pubsub";
-  version = "2.2.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "bc50a60803f5c409a295ec0e31cdd4acc271611ce3f4963a072036bbfa5ccde5";
-  };
-
-  disabled = pythonOlder "3.6";
-
-  checkInputs = [ google_cloud_testutils mock pytestCheckHook pytest-asyncio ];
-  propagatedBuildInputs =
-    [ grpc_google_iam_v1 google_api_core libcst proto-plus ];
-
-  # prevent google directory from shadowing google imports
-  # Tests in pubsub_v1 attempt to contact pubsub.googleapis.com
-  preCheck = ''
-    rm -r google
-    rm -r tests/unit/pubsub_v1
-  '';
-
-  pythonImportsCheck = [ "google.cloud.pubsub" ];
-
-  meta = with stdenv.lib; {
-    description = "Google Cloud Pub/Sub API client library";
-    homepage = "https://pypi.org/project/google-cloud-pubsub";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_redis/default.nix b/pkgs/development/python-modules/google_cloud_redis/default.nix
deleted file mode 100644
index 3337d9f3c55b..000000000000
--- a/pkgs/development/python-modules/google_cloud_redis/default.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, enum34
-, google_api_core
-, pytest
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "google-cloud-redis";
-  version = "2.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "c783118462d9272fb9f519ef43b6ce383e99ad631e922a1f06fbef7148aec7b8";
-  };
-
-  checkInputs = [ pytest mock ];
-  propagatedBuildInputs = [ enum34 google_api_core ];
-
-  # requires old version of google-api-core (override)
-  preBuild = ''
-    sed -i "s/'google-api-core\[grpc\] >= 0.1.0, < 0.2.0dev'/'google-api-core'/g" setup.py
-    sed -i "s/google-api-core\[grpc\]<0.2.0dev,>=0.1.0/google-api-core/g" google_cloud_redis.egg-info/requires.txt
-  '';
-
-  checkPhase = ''
-    pytest tests/unit
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Google Cloud Memorystore for Redis API client library";
-    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_resource_manager/default.nix b/pkgs/development/python-modules/google_cloud_resource_manager/default.nix
deleted file mode 100644
index 815ecc118f9b..000000000000
--- a/pkgs/development/python-modules/google_cloud_resource_manager/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder
-, google_cloud_core, google_api_core, mock, pytest }:
-
-buildPythonPackage rec {
-  pname = "google-cloud-resource-manager";
-  version = "0.30.3";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "3577bbf38f2c7c2f42306b8dfdeffbb0eedf45aaec947fd513d51937f72046d1";
-  };
-
-  disabled = pythonOlder "3.5";
-
-  checkInputs = [ mock pytestCheckHook ];
-  propagatedBuildInputs = [ google_api_core google_cloud_core ];
-
-  # api_url test broken, fix not yet released
-  # https://github.com/googleapis/python-resource-manager/pull/31
-  disabledTests =
-    [ "api_url_no_extra_query_param" "api_url_w_custom_endpoint" ];
-
-  # prevent google directory from shadowing google imports
-  preCheck = ''
-    rm -r google
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Google Cloud Resource Manager API client library";
-    homepage = "https://github.com/googleapis/python-resource-manager";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_secret_manager/default.nix b/pkgs/development/python-modules/google_cloud_secret_manager/default.nix
deleted file mode 100644
index c744701c7789..000000000000
--- a/pkgs/development/python-modules/google_cloud_secret_manager/default.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi
-, grpc_google_iam_v1, google_api_core, libcst, proto-plus
-, pytest, mock
-}:
-
-buildPythonPackage rec {
-  pname = "google-cloud-secret-manager";
-  version = "2.1.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "2f08b49164aca8623b2e4ee07352980b3ffca909ce205c03568e203bbc455c30";
-  };
-
-  propagatedBuildInputs = [
-    google_api_core
-    grpc_google_iam_v1
-    libcst
-    proto-plus
-  ];
-
-  checkInputs = [
-    mock
-    pytest
-  ];
-  checkPhase = ''
-    pytest
-  '';
-
-  meta = with lib; {
-    description = "Secret Manager API: Stores, manages, and secures access to application secrets";
-    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ siriobalmelli ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_securitycenter/default.nix b/pkgs/development/python-modules/google_cloud_securitycenter/default.nix
deleted file mode 100644
index cad4b0799c28..000000000000
--- a/pkgs/development/python-modules/google_cloud_securitycenter/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, enum34
-, grpc_google_iam_v1
-, google_api_core
-, pytest
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "google-cloud-securitycenter";
-  version = "1.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "45d47a4389f2f19958a9db8e5c2f169c9b9385e74338fef0a4e49160153df7f7";
-  };
-
-  checkInputs = [ pytest mock ];
-  propagatedBuildInputs = [ enum34 grpc_google_iam_v1 google_api_core ];
-
-  checkPhase = ''
-    pytest tests/unit
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Cloud Security Command Center API API client library";
-    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_spanner/default.nix b/pkgs/development/python-modules/google_cloud_spanner/default.nix
deleted file mode 100644
index 38bd65aa091d..000000000000
--- a/pkgs/development/python-modules/google_cloud_spanner/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder
-, grpc_google_iam_v1, grpcio-gcp, google_api_core, google_cloud_core
-, google_cloud_testutils, mock, pytest }:
-
-buildPythonPackage rec {
-  pname = "google-cloud-spanner";
-  version = "2.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "edac9d86ea2d8e87c048423f610cd3e5dbb6f9db7f1f9353ff133014689e97c6";
-  };
-
-  disabled = pythonOlder "3.5";
-
-  checkInputs = [ google_cloud_testutils mock pytestCheckHook ];
-  propagatedBuildInputs =
-    [ grpcio-gcp grpc_google_iam_v1 google_api_core google_cloud_core ];
-
-  # prevent google directory from shadowing google imports
-  # remove tests that require credentials
-  preCheck = ''
-    rm -r google
-    rm tests/system/test_system.py
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Cloud Spanner API client library";
-    homepage = "https://pypi.org/project/google-cloud-spanner";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_speech/default.nix b/pkgs/development/python-modules/google_cloud_speech/default.nix
deleted file mode 100644
index 57b2efb9ebbc..000000000000
--- a/pkgs/development/python-modules/google_cloud_speech/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi
-, google_api_core, pytest, mock }:
-
-buildPythonPackage rec {
-  pname = "google-cloud-speech";
-  version = "2.0.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "a7428190f4c10440148a273eb4c91480470b34180eec422b7325acdc0b2c0832";
-  };
-
-  propagatedBuildInputs = [ google_api_core ];
-  checkInputs = [ pytest mock ];
-
-  checkPhase = ''
-    pytest tests/unit
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Cloud Speech API enables integration of Google speech recognition into applications.";
-    homepage = "https://github.com/googleapis/google-cloud-python/tree/master/speech";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_storage/default.nix b/pkgs/development/python-modules/google_cloud_storage/default.nix
deleted file mode 100644
index a1b572db11e5..000000000000
--- a/pkgs/development/python-modules/google_cloud_storage/default.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder
-, google_api_core, google_auth, google-cloud-iam, google_cloud_core
-, google_cloud_kms, google_cloud_testutils, google_resumable_media, mock
-, requests }:
-
-buildPythonPackage rec {
-  pname = "google-cloud-storage";
-  version = "1.33.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "900ba027bdee6b97f21cd22d1db3d1a6233ede5de2db4754db860438bdad72d2";
-  };
-
-  disabled = pythonOlder "3.5";
-
-  propagatedBuildInputs = [
-    google_api_core
-    google_auth
-    google_cloud_core
-    google_resumable_media
-    requests
-  ];
-  checkInputs = [
-    google-cloud-iam
-    google_cloud_kms
-    google_cloud_testutils
-    mock
-    pytestCheckHook
-  ];
-
-  # disable tests which require credentials
-  disabledTests = [ "create" "get" "post" "test_build_api_url" ];
-
-  # prevent google directory from shadowing google imports
-  # remove tests which require credentials
-  preCheck = ''
-    rm -r google
-    rm tests/system/test_system.py tests/unit/test_client.py
-  '';
-
-  meta = with lib; {
-    description = "Google Cloud Storage API client library";
-    homepage = "https://github.com/googleapis/python-storage";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_tasks/default.nix b/pkgs/development/python-modules/google_cloud_tasks/default.nix
deleted file mode 100644
index ca252b2c5edb..000000000000
--- a/pkgs/development/python-modules/google_cloud_tasks/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, enum34
-, grpc_google_iam_v1
-, google_api_core
-, pytest
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "google-cloud-tasks";
-  version = "2.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "a9dd004057fc441eee8c18bb2dc3bb20ba7b85f353d66894c61e42aeb8764e76";
-  };
-
-  checkInputs = [ pytest mock ];
-  propagatedBuildInputs = [ enum34 grpc_google_iam_v1 google_api_core ];
-
-  checkPhase = ''
-    pytest tests/unit
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Cloud Tasks API API client library";
-    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_texttospeech/default.nix b/pkgs/development/python-modules/google_cloud_texttospeech/default.nix
deleted file mode 100644
index 32e8fa223a88..000000000000
--- a/pkgs/development/python-modules/google_cloud_texttospeech/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder
-, google_api_core, libcst, mock, proto-plus, pytest-asyncio, }:
-
-buildPythonPackage rec {
-  pname = "google-cloud-texttospeech";
-  version = "2.2.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "cbbd397e72b6189668134f3c8e8c303198188334a4e6a5f77cc90c3220772f9e";
-  };
-
-  disabled = pythonOlder "3.5";
-
-  checkInputs = [ mock pytest-asyncio pytestCheckHook ];
-  propagatedBuildInputs = [ google_api_core libcst proto-plus ];
-
-  # Disable tests that require credentials
-  disabledTests = ["test_synthesize_speech" "test_list_voices"];
-
-  meta = with stdenv.lib; {
-    description = "Google Cloud Text-to-Speech API client library";
-    homepage = "https://github.com/googleapis/python-texttospeech";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_trace/default.nix b/pkgs/development/python-modules/google_cloud_trace/default.nix
deleted file mode 100644
index b0efb65d0d2f..000000000000
--- a/pkgs/development/python-modules/google_cloud_trace/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, google_api_core
-, google_cloud_core
-, pytest
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "google-cloud-trace";
-  version = "1.1.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1bd1ee5c274a584929913d9118134e01afe106644cb749ccc3111e1a38a96cd3";
-  };
-
-  checkInputs = [ pytest mock ];
-  propagatedBuildInputs = [ google_api_core google_cloud_core ];
-
-  checkPhase = ''
-    pytest tests/unit
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Stackdriver Trace API client library";
-    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_translate/default.nix b/pkgs/development/python-modules/google_cloud_translate/default.nix
deleted file mode 100644
index 1049895bda1b..000000000000
--- a/pkgs/development/python-modules/google_cloud_translate/default.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder
-, google_api_core, google_cloud_core, google_cloud_testutils, grpcio, libcst
-, mock, proto-plus, pytest-asyncio }:
-
-buildPythonPackage rec {
-  pname = "google-cloud-translate";
-  version = "3.0.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "6183168465749f007449ef4125356d03cca0114ed49faf7ed64f34ec3edd4fe8";
-  };
-
-  disabled = pythonOlder "3.6";
-
-  # google_cloud_core[grpc] -> grpcio
-  propagatedBuildInputs =
-    [ google_api_core google_cloud_core grpcio libcst proto-plus ];
-
-  checkInputs = [ google_cloud_testutils mock pytest-asyncio pytestCheckHook ];
-
-  # test_http.py broken, fix not yet released
-  # https://github.com/googleapis/python-translate/pull/69
-  disabledTests = [
-    "test_build_api_url_w_extra_query_params"
-    "test_build_api_url_no_extra_query_params"
-    "test_build_api_url_w_custom_endpoint"
-  ];
-
-  preCheck = ''
-    rm -r google
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Google Cloud Translation API client library";
-    homepage = "https://github.com/googleapis/python-translate";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_videointelligence/default.nix b/pkgs/development/python-modules/google_cloud_videointelligence/default.nix
deleted file mode 100644
index b823e105b843..000000000000
--- a/pkgs/development/python-modules/google_cloud_videointelligence/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, google_api_core
-, pytest
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "google-cloud-videointelligence";
-  version = "2.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "02a91a25b3890a743bde21e03abddf11dcaf7966cc44f09bc8d507f2e28f15fa";
-  };
-
-  checkInputs = [ pytest mock ];
-  propagatedBuildInputs = [ google_api_core ];
-
-  checkPhase = ''
-    pytest tests/unit
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Google Cloud Video Intelligence API client library";
-    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_vision/default.nix b/pkgs/development/python-modules/google_cloud_vision/default.nix
deleted file mode 100644
index fd738a522661..000000000000
--- a/pkgs/development/python-modules/google_cloud_vision/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, enum34
-, google_api_core
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "google-cloud-vision";
-  version = "2.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "6a067d9a661df2e9b356b2772051decfea1971f8d659c246412a165baf827c61";
-  };
-
-  checkInputs = [ mock ];
-  propagatedBuildInputs = [ enum34 google_api_core ];
-
-  # pytest seems to pick up some file which overrides PYTHONPATH
-  checkPhase = ''
-    cd tests/unit
-    python -m unittest discover
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Cloud Vision API API client library";
-    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_cloud_websecurityscanner/default.nix b/pkgs/development/python-modules/google_cloud_websecurityscanner/default.nix
deleted file mode 100644
index 356759f9bcb5..000000000000
--- a/pkgs/development/python-modules/google_cloud_websecurityscanner/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder
-, google_api_core, libcst, mock, proto-plus, pytest-asyncio }:
-
-buildPythonPackage rec {
-  pname = "google-cloud-websecurityscanner";
-  version = "1.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1de60f880487b898b499345f46f7acf38651f5356ebca8673116003a57f25393";
-  };
-
-  disabled = pythonOlder "3.6";
-
-  checkInputs = [ mock pytest-asyncio pytestCheckHook ];
-  propagatedBuildInputs = [ google_api_core libcst proto-plus ];
-
-  meta = with stdenv.lib; {
-    description = "Google Cloud Web Security Scanner API client library";
-    homepage = "https://github.com/googleapis/python-websecurityscanner";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/google_resumable_media/default.nix b/pkgs/development/python-modules/google_resumable_media/default.nix
deleted file mode 100644
index 37bfbfc481ba..000000000000
--- a/pkgs/development/python-modules/google_resumable_media/default.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ lib
-, buildPythonPackage
-, isPy3k
-, fetchPypi
-, six
-, requests
-, setuptools
-, pytest
-, mock
-, crcmod
-, google-crc32c
-}:
-
-buildPythonPackage rec {
-  pname = "google-resumable-media";
-  version = "1.1.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "dcdab13e95bc534d268f87d5293e482cce5bc86dfce6ca0f2e2e89cbb73ef38c";
-  };
-
-  checkInputs = [ pytest mock ];
-  propagatedBuildInputs = [ requests setuptools six ]
-    ++ lib.optional isPy3k google-crc32c
-    ++ lib.optional (!isPy3k) crcmod;
-
-  checkPhase = ''
-    py.test tests/unit
-  '';
-
-  meta = with lib; {
-    description = "Utilities for Google Media Downloads and Resumable Uploads";
-    homepage = "https://github.com/GoogleCloudPlatform/google-resumable-media-python";
-    license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/googleapis_common_protos/default.nix b/pkgs/development/python-modules/googleapis_common_protos/default.nix
index 507c3ba229a6..ea49beee30bb 100644
--- a/pkgs/development/python-modules/googleapis_common_protos/default.nix
+++ b/pkgs/development/python-modules/googleapis_common_protos/default.nix
@@ -1,5 +1,10 @@
-{ stdenv, buildPythonPackage, fetchPypi
-, protobuf, pytest, setuptools }:
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, grpc
+, protobuf
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "googleapis-common-protos";
@@ -7,18 +12,26 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "560716c807117394da12cecb0a54da5a451b5cf9866f1d37e9a5e2329a665351";
+    sha256 = "0lakcsd35qm5x4visvw6z5f1niasv9a0mjyf2bd98wqi0z41c1sn";
   };
 
-  propagatedBuildInputs = [ protobuf setuptools ];
-  checkInputs = [ pytest ];
+  propagatedBuildInputs = [ grpc protobuf ];
 
-  doCheck = false;  # there are no tests
+  # does not contain tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "google.api"
+    "google.logging"
+    "google.longrunning"
+    "google.rpc"
+    "google.type"
+  ];
 
   meta = with stdenv.lib; {
     description = "Common protobufs used in Google APIs";
-    homepage = "https://github.com/googleapis/googleapis";
+    homepage = "https://github.com/googleapis/python-api-common-protos";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/googlemaps/default.nix b/pkgs/development/python-modules/googlemaps/default.nix
index 7e13aedec475..39219000bfdd 100644
--- a/pkgs/development/python-modules/googlemaps/default.nix
+++ b/pkgs/development/python-modules/googlemaps/default.nix
@@ -1,6 +1,11 @@
-{ stdenv, buildPythonPackage, fetchFromGitHub
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
 , requests
-, responses, pytestCheckHook, pytest, pytestcov, isPy27
+, responses
+, pytestCheckHook
+, pytestcov
+, isPy27
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/googletrans/default.nix b/pkgs/development/python-modules/googletrans/default.nix
index 06d008200059..32b839ab11c2 100644
--- a/pkgs/development/python-modules/googletrans/default.nix
+++ b/pkgs/development/python-modules/googletrans/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, requests, pytest, coveralls }:
+{ lib, buildPythonPackage, fetchFromGitHub, requests }:
 
 buildPythonPackage rec {
   pname = "googletrans";
@@ -11,17 +11,10 @@ buildPythonPackage rec {
     sha256 = "0wzzinn0k9rfv9z1gmfk9l4kljyd4n6kizsjw4wjxv91kfhj92hz";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
-
-  checkInputs = [ pytest coveralls ];
+  propagatedBuildInputs = [ requests ];
 
   # majority of tests just try to ping Google's Translate API endpoint
   doCheck = false;
-  checkPhase = ''
-    pytest
-  '';
 
   pythonImportsCheck = [ "googletrans" ];
 
diff --git a/pkgs/development/python-modules/graphene/default.nix b/pkgs/development/python-modules/graphene/default.nix
new file mode 100644
index 000000000000..860bb504cf1a
--- /dev/null
+++ b/pkgs/development/python-modules/graphene/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, aniso8601
+, iso8601
+, graphql-core
+, graphql-relay
+, pytestCheckHook
+, pytest-asyncio
+, pytest-benchmark
+, pytest-mock
+, pytz
+, snapshottest
+}:
+
+buildPythonPackage rec {
+  pname = "graphene";
+  version = "3.0.0b6";
+
+  src = fetchFromGitHub {
+    owner = "graphql-python";
+    repo = "graphene";
+    rev = "v${version}";
+    sha256 = "1q6qmyc4jbi9cws4d98x7bgi7gppd09dmzijkb19fwbh4giy938r";
+  };
+
+  propagatedBuildInputs = [
+    aniso8601
+    graphql-core
+    graphql-relay
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    pytest-asyncio
+    pytest-benchmark
+    pytest-mock
+    pytz
+    snapshottest
+  ];
+
+  pythonImportsCheck = [ "graphene" ];
+
+  meta = with lib; {
+    description = "GraphQL Framework for Python";
+    homepage = "https://github.com/graphql-python/graphene";
+    license = licenses.mit;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/graphql-relay/default.nix b/pkgs/development/python-modules/graphql-relay/default.nix
new file mode 100644
index 000000000000..fa6a9ec60a73
--- /dev/null
+++ b/pkgs/development/python-modules/graphql-relay/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi, graphql-core, pytestCheckHook }:
+
+buildPythonPackage rec {
+  pname = "graphql-relay";
+  version = "3.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0mjmpf4abrxfyln0ykxq4xa6lp7xwgqr8631qp011hv0nfl6jgxd";
+  };
+
+  propagatedBuildInputs = [ graphql-core ];
+
+  checkInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "graphql_relay" ];
+
+  meta = with lib; {
+    description = "A library to help construct a graphql-py server supporting react-relay";
+    homepage = "https://github.com/graphql-python/graphql-relay-py/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/grpcio/default.nix b/pkgs/development/python-modules/grpcio/default.nix
index 55d569c90547..e50f63fe37ac 100644
--- a/pkgs/development/python-modules/grpcio/default.nix
+++ b/pkgs/development/python-modules/grpcio/default.nix
@@ -1,6 +1,18 @@
-{ stdenv, buildPythonPackage, darwin, grpc
-, six, protobuf, enum34, futures, isPy27, pkgconfig
-, cython, c-ares, openssl, zlib }:
+{ stdenv
+, buildPythonPackage
+, darwin
+, grpc
+, six
+, protobuf
+, enum34
+, futures
+, isPy27
+, pkg-config
+, cython
+, c-ares
+, openssl
+, zlib
+}:
 
 buildPythonPackage rec {
   inherit (grpc) src version;
@@ -8,12 +20,12 @@ buildPythonPackage rec {
 
   outputs = [ "out" "dev" ];
 
-  nativeBuildInputs = [ cython pkgconfig ]
-                    ++ stdenv.lib.optional stdenv.isDarwin darwin.cctools;
+  nativeBuildInputs = [ cython pkg-config ]
+    ++ stdenv.lib.optional stdenv.isDarwin darwin.cctools;
 
   buildInputs = [ c-ares openssl zlib ];
   propagatedBuildInputs = [ six protobuf ]
-                        ++ stdenv.lib.optionals (isPy27) [ enum34 futures ];
+    ++ stdenv.lib.optionals (isPy27) [ enum34 futures ];
 
   preBuild = stdenv.lib.optionalString stdenv.isDarwin "unset AR";
 
@@ -22,10 +34,15 @@ buildPythonPackage rec {
   GRPC_PYTHON_BUILD_SYSTEM_ZLIB = 1;
   GRPC_PYTHON_BUILD_SYSTEM_CARES = 1;
 
+  # does not contain any tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "grpc" ];
+
   meta = with stdenv.lib; {
     description = "HTTP/2-based RPC framework";
     license = licenses.asl20;
     homepage = "https://grpc.io/grpc/python/";
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/gspread/default.nix b/pkgs/development/python-modules/gspread/default.nix
index 5fd73541dd42..9ad1d0c685dc 100644
--- a/pkgs/development/python-modules/gspread/default.nix
+++ b/pkgs/development/python-modules/gspread/default.nix
@@ -2,7 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , requests
-, google_auth
+, google-auth
 , google-auth-oauthlib
 }:
 
@@ -15,7 +15,7 @@ buildPythonPackage rec {
     sha256 = "e04f1a6267b3929fc1600424c5ec83906d439672cafdd61a9d5b916a139f841c";
   };
 
-  propagatedBuildInputs = [ requests google_auth google-auth-oauthlib ];
+  propagatedBuildInputs = [ requests google-auth google-auth-oauthlib ];
 
   meta = with stdenv.lib; {
     description = "Google Spreadsheets client library";
diff --git a/pkgs/development/python-modules/h11/default.nix b/pkgs/development/python-modules/h11/default.nix
index 28461311021f..f3d37dacfa3c 100644
--- a/pkgs/development/python-modules/h11/default.nix
+++ b/pkgs/development/python-modules/h11/default.nix
@@ -1,33 +1,26 @@
-{ lib, buildPythonPackage, fetchPypi, pytest, fetchpatch }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "h11";
-  version = "0.9.0";
+  version = "0.12.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1qfad70h59hya21vrzz8dqyyaiqhac0anl2dx3s3k80gpskvrm1k";
+    sha256 = "0hk0nll6qazsambp3kl8cxxsbl4gv5y9252qadyk0jky0sv2q8j7";
   };
 
-  patches = [
-    # pytest5 compatability
-    (fetchpatch {
-      url = "https://github.com/python-hyper/h11/commit/241e220493a511a5f5a5d472cb88d72661a92ab1.patch";
-      sha256 = "1s3ipf9s41m1lksws3xv3j133q7jnjdqvmgk4sfnm8q7li2dww39";
-    })
-  ];
-
-  checkInputs = [ pytest ];
-
-  checkPhase = ''
-    py.test
-  '';
+  checkInputs = [ pytestCheckHook ];
 
   # Some of the tests use localhost networking.
   __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
     description = "Pure-Python, bring-your-own-I/O implementation of HTTP/1.1";
+    homepage = "https://github.com/python-hyper/h11";
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/httpx/default.nix b/pkgs/development/python-modules/httpx/default.nix
index 1f527b47ec08..6e81cc92193c 100644
--- a/pkgs/development/python-modules/httpx/default.nix
+++ b/pkgs/development/python-modules/httpx/default.nix
@@ -56,6 +56,8 @@ buildPythonPackage rec {
     "test_sync_proxy_close"
   ];
 
+  __darwinAllowLocalNetworking = true;
+
   meta = with lib; {
     description = "The next generation HTTP client";
     homepage = "https://github.com/encode/httpx";
diff --git a/pkgs/development/python-modules/hwi/default.nix b/pkgs/development/python-modules/hwi/default.nix
index 6431791d65e6..7c34235a190b 100644
--- a/pkgs/development/python-modules/hwi/default.nix
+++ b/pkgs/development/python-modules/hwi/default.nix
@@ -1,46 +1,47 @@
 { lib
 , buildPythonPackage
-, fetchPypi
-, mnemonic
+, fetchFromGitHub
+, bitbox02
 , ecdsa
-, typing-extensions
 , hidapi
 , libusb1
+, mnemonic
 , pyaes
-, trezor
-, btchip
-, ckcc-protocol
+, pythonAtLeast
 }:
 
 buildPythonPackage rec {
   pname = "hwi";
   version = "1.2.1";
+  disabled = pythonAtLeast "3.9";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "d0d220a4967d7f106b828b12a98b78c220d609d7cc6c811898e24fcf1a6f04f3";
+  src = fetchFromGitHub {
+    owner = "bitcoin-core";
+    repo = "HWI";
+    rev = version;
+    sha256 = "0fs3152lw7y5l9ssr5as8gd739m9lb7wxpv1vc5m77k5nw7l8ax5";
   };
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "'ecdsa>=0.13.0,<0.14.0'" "'ecdsa'" \
+      --replace "'hidapi>=0.7.99,<0.8.0'" "'hidapi'" \
+      --replace "'mnemonic>=0.18.0,<0.19.0'" "'mnemonic'"
+  '';
+
   propagatedBuildInputs = [
-    mnemonic
+    bitbox02
     ecdsa
-    typing-extensions
     hidapi
     libusb1
+    mnemonic
     pyaes
-    trezor
-    btchip
-    ckcc-protocol
   ];
 
-  patches = [ ./relax-deps.patch ];
-
-  # tests are not packaged in the released tarball
+  # tests require to clone quite a few firmwares
   doCheck = false;
 
-  pythonImportsCheck = [
-    "hwilib"
-  ];
+  pythonImportsCheck = [ "hwilib" ];
 
   meta = {
     description = "Bitcoin Hardware Wallet Interface";
diff --git a/pkgs/development/python-modules/hwi/relax-deps.patch b/pkgs/development/python-modules/hwi/relax-deps.patch
deleted file mode 100644
index ff6c6b9768f6..000000000000
--- a/pkgs/development/python-modules/hwi/relax-deps.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- a/setup.py
-+++ b/setup.py
-@@ -98,10 +98,10 @@ package_data = \
- modules = \
- ['hwi', 'hwi-qt']
- install_requires = \
--['ecdsa>=0.13.0,<0.14.0',
-- 'hidapi>=0.7.99,<0.8.0',
-+['ecdsa',
-+ 'hidapi',
-  'libusb1>=1.7,<2.0',
-+ 'mnemonic',
-- 'mnemonic>=0.18.0,<0.19.0',
-  'pyaes>=1.6,<2.0',
-  'typing-extensions>=3.7,<4.0']
- 
diff --git a/pkgs/development/python-modules/itemloaders/default.nix b/pkgs/development/python-modules/itemloaders/default.nix
index 08c7e50e95e9..107585f0416c 100644
--- a/pkgs/development/python-modules/itemloaders/default.nix
+++ b/pkgs/development/python-modules/itemloaders/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "itemloaders";
-  version = "1.0.3";
+  version = "1.0.4";
 
   disabled = isPy27;
 
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "scrapy";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1s8c2il7jyfixpb7h5zq0lf4s07pqwia4ycpf3slb8whcp0h8bfm";
+    sha256 = "0j68xgx2z63sc1nc9clw6744036vfbijdsghvjv6pk674d5lgyam";
   };
 
   propagatedBuildInputs = [ w3lib parsel jmespath itemadapter ];
diff --git a/pkgs/development/python-modules/jc/default.nix b/pkgs/development/python-modules/jc/default.nix
index ba96f8ccfb94..0bccd38f152b 100644
--- a/pkgs/development/python-modules/jc/default.nix
+++ b/pkgs/development/python-modules/jc/default.nix
@@ -5,22 +5,25 @@
 , xmltodict
 , pygments
 , isPy27
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "jc";
-  version = "1.14.0";
+  version = "1.14.1";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "kellyjonbrazil";
     repo = "jc";
     rev = "v${version}";
-    sha256 = "0js3mqp6xxg45qsz8wnyyqf4m0wj1kz67bkmvirhdy7s01zhd5hq";
+    sha256 = "1vzzz7dlg6apxhcl0qkfdpp2v9d0q6jyafpfmklkcbjs31zvwcsw";
   };
 
   propagatedBuildInputs = [ ruamel_yaml xmltodict pygments ];
 
+  checkInputs = [ pytestCheckHook ];
+
   meta = with stdenv.lib; {
     description = "This tool serializes the output of popular command line tools and filetypes to structured JSON output";
     homepage = "https://github.com/kellyjonbrazil/jc";
diff --git a/pkgs/development/python-modules/keepkey_agent/default.nix b/pkgs/development/python-modules/keepkey_agent/default.nix
index fec2d198fdd9..279cc50d174f 100644
--- a/pkgs/development/python-modules/keepkey_agent/default.nix
+++ b/pkgs/development/python-modules/keepkey_agent/default.nix
@@ -20,6 +20,9 @@ buildPythonPackage rec {
     keepkey libagent setuptools wheel
   ];
 
+  doCheck = false;
+  pythonImportsChecks = [ "keepkey_agent" ];
+
   meta = with stdenv.lib; {
     description = "Using KeepKey as hardware-based SSH/PGP agent";
     homepage = "https://github.com/romanz/trezor-agent";
diff --git a/pkgs/development/python-modules/kubernetes/default.nix b/pkgs/development/python-modules/kubernetes/default.nix
index 2679c81de0f0..0be1ae0353f8 100644
--- a/pkgs/development/python-modules/kubernetes/default.nix
+++ b/pkgs/development/python-modules/kubernetes/default.nix
@@ -1,5 +1,5 @@
 { stdenv, buildPythonPackage, fetchPypi, pythonAtLeast,
-  ipaddress, websocket_client, urllib3, pyyaml, requests_oauthlib, python-dateutil, google_auth, adal,
+  ipaddress, websocket_client, urllib3, pyyaml, requests_oauthlib, python-dateutil, google-auth, adal,
   isort, pytest, coverage, mock, sphinx, autopep8, pep8, codecov, recommonmark, nose }:
 
 buildPythonPackage rec {
@@ -28,7 +28,7 @@ buildPythonPackage rec {
   };
 
   checkInputs = [ isort coverage pytest mock sphinx autopep8 pep8 codecov recommonmark nose ];
-  propagatedBuildInputs = [ ipaddress websocket_client urllib3 pyyaml requests_oauthlib python-dateutil google_auth adal ];
+  propagatedBuildInputs = [ ipaddress websocket_client urllib3 pyyaml requests_oauthlib python-dateutil google-auth adal ];
 
   meta = with stdenv.lib; {
     description = "Kubernetes python client";
diff --git a/pkgs/development/python-modules/labelbox/default.nix b/pkgs/development/python-modules/labelbox/default.nix
index 0556411ee47e..1efe01092124 100644
--- a/pkgs/development/python-modules/labelbox/default.nix
+++ b/pkgs/development/python-modules/labelbox/default.nix
@@ -8,7 +8,8 @@
 , shapely
 , ndjson
 , backoff
-, google_api_core
+, google-api-core
+, backports-datetime-fromisoformat
 }:
 
 buildPythonPackage rec {
@@ -22,12 +23,11 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     jinja2 requests pillow rasterio shapely ndjson backoff
-    google_api_core
+    google-api-core backports-datetime-fromisoformat
   ];
 
   # Test cases are not running on pypi or GitHub
   doCheck = false;
-
   pythonImportsCheck = [ "labelbox" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/ldappool/default.nix b/pkgs/development/python-modules/ldappool/default.nix
index d1b9da15cc5f..bc08633da8b4 100644
--- a/pkgs/development/python-modules/ldappool/default.nix
+++ b/pkgs/development/python-modules/ldappool/default.nix
@@ -14,6 +14,8 @@ buildPythonPackage rec {
   postPatch = ''
     # Tests run without most of the dependencies
     echo "" > test-requirements.txt
+    # PrettyTable is now maintained again
+    substituteInPlace requirements.txt --replace "PrettyTable<0.8,>=0.7.2" "PrettyTable"
   '';
 
   nativeBuildInputs = [ pbr ];
@@ -24,7 +26,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "A simple connector pool for python-ldap";
-    homepage = "https://git.openstack.org/cgit/openstack/ldappool";
-    license = licenses.mpl20;
+    homepage = "https://opendev.org/openstack/ldappool/";
+    license = with licenses; [ mpl11 lgpl21Plus gpl2Plus ];
   };
 }
diff --git a/pkgs/development/python-modules/ledger_agent/default.nix b/pkgs/development/python-modules/ledger_agent/default.nix
index 605fbed98a19..2f3404fa921b 100644
--- a/pkgs/development/python-modules/ledger_agent/default.nix
+++ b/pkgs/development/python-modules/ledger_agent/default.nix
@@ -20,6 +20,9 @@ buildPythonPackage rec {
     ledgerblue libagent setuptools wheel
   ];
 
+  # no tests
+  doCheck = false;
+
   meta = with stdenv.lib; {
     description = "Using Ledger as hardware-based SSH/PGP agent";
     homepage = "https://github.com/romanz/trezor-agent";
diff --git a/pkgs/development/python-modules/libcst/default.nix b/pkgs/development/python-modules/libcst/default.nix
index e0ea0e332af6..f064c34e1586 100644
--- a/pkgs/development/python-modules/libcst/default.nix
+++ b/pkgs/development/python-modules/libcst/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchFromGitHub, pythonOlder, black, isort
-, pytestCheckHook, pyyaml, typing-extensions, typing-inspect }:
+, pytestCheckHook, pyyaml, typing-extensions, typing-inspect, dataclasses }:
 
 buildPythonPackage rec {
   pname = "libcst";
@@ -16,7 +16,8 @@ buildPythonPackage rec {
 
   disabled = pythonOlder "3.6";
 
-  propagatedBuildInputs = [ pyyaml typing-inspect ];
+  propagatedBuildInputs = [ pyyaml typing-inspect ]
+    ++ lib.optional (pythonOlder "3.7") dataclasses;
 
   checkInputs = [ black isort pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/liquidctl/default.nix b/pkgs/development/python-modules/liquidctl/default.nix
index 888f09dba95b..97d80fbbbda7 100644
--- a/pkgs/development/python-modules/liquidctl/default.nix
+++ b/pkgs/development/python-modules/liquidctl/default.nix
@@ -27,6 +27,10 @@ buildPythonPackage rec {
     smbus-cffi
   ];
 
+  # does not contain tests
+  doCheck = false;
+  pythonImportsCheck = [ "liquidctl" ];
+
   meta = with lib; {
     description = "Cross-platform CLI and Python drivers for AIO liquid coolers and other devices";
     homepage    = "https://github.com/liquidctl/liquidctl";
diff --git a/pkgs/development/python-modules/lmdb/default.nix b/pkgs/development/python-modules/lmdb/default.nix
index 76cd2acd7435..3dc2fec4b744 100644
--- a/pkgs/development/python-modules/lmdb/default.nix
+++ b/pkgs/development/python-modules/lmdb/default.nix
@@ -1,8 +1,10 @@
 { stdenv
 , buildPythonPackage
 , fetchPypi
-, pytest
+, pytestCheckHook
 , cffi
+, lmdb
+, ludios_wpull
 }:
 
 buildPythonPackage rec {
@@ -14,10 +16,13 @@ buildPythonPackage rec {
     sha256 = "4136ffdf0aad61da86d1402808029d002a771b2a9ccc9b39c6bcafa7847c21b6";
   };
 
-  checkInputs = [ pytest cffi ];
-  checkPhase = ''
-    py.test
-  '';
+  buildInputs = [ lmdb ];
+
+  propogatedBuildInputs = [ ludios_wpull ];
+
+  checkInputs = [ cffi pytestCheckHook ];
+
+  LMDB_FORCE_SYSTEM=1;
 
   meta = with stdenv.lib; {
     description = "Universal Python binding for the LMDB 'Lightning' Database";
@@ -25,5 +30,4 @@ buildPythonPackage rec {
     license = licenses.openldap;
     maintainers = with maintainers; [ copumpkin ivan ];
   };
-
 }
diff --git a/pkgs/development/python-modules/marionette-harness/mozdevice.nix b/pkgs/development/python-modules/marionette-harness/mozdevice.nix
index 03187c00bef9..56c8fc5254d2 100644
--- a/pkgs/development/python-modules/marionette-harness/mozdevice.nix
+++ b/pkgs/development/python-modules/marionette-harness/mozdevice.nix
@@ -12,9 +12,8 @@ buildPythonPackage rec {
   format = "wheel";
 
   src = fetchPypi {
-    inherit pname version;
+    inherit pname version format;
     sha256 = "1n7l3drdh3rm3320v98c9hhh37ljk9l861hyw18psca7jdd717n5";
-    format = "wheel";
   };
 
   propagatedBuildInputs = [ mozlog moznetwork mozprocess ];
diff --git a/pkgs/development/python-modules/minidump/default.nix b/pkgs/development/python-modules/minidump/default.nix
new file mode 100644
index 000000000000..346430d23926
--- /dev/null
+++ b/pkgs/development/python-modules/minidump/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "minidump";
+  version = "0.0.13";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1w93yh2dz7llxjgv0jn7gf9praz7d5952is7idgh0lsyj67ri2ms";
+  };
+
+  # Upstream doesn't have tests
+  doCheck = false;
+  pythonImportsCheck = [ "minidump" ];
+
+  meta = with lib; {
+    description = "Python library to parse and read Microsoft minidump file format";
+    homepage = "https://github.com/skelsec/minidump";
+    license = with licenses; [ mit ];
+    maintainers = [ maintainers.fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/minikerberos/default.nix b/pkgs/development/python-modules/minikerberos/default.nix
new file mode 100644
index 000000000000..7537fb2e1577
--- /dev/null
+++ b/pkgs/development/python-modules/minikerberos/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, asn1crypto
+, asysocks
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "minikerberos";
+  version = "0.2.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "08ngf55pbnzyqkgffzxix6ldal9l38d2jjn9rvxkg88ygxsalfvm";
+  };
+
+  propagatedBuildInputs = [
+    asn1crypto
+    asysocks
+  ];
+
+  # no tests are published: https://github.com/skelsec/minikerberos/pull/5
+  doCheck = false;
+  pythonImportsCheck = [ "minikerberos" ];
+
+  meta = with lib; {
+    description = "Kerberos manipulation library in Python";
+    homepage = "https://github.com/skelsec/minikerberos";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/msal/default.nix b/pkgs/development/python-modules/msal/default.nix
index 6bbdc6f5e5f9..37266df5f216 100644
--- a/pkgs/development/python-modules/msal/default.nix
+++ b/pkgs/development/python-modules/msal/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "msal";
-  version = "1.6.0";
+  version = "1.8.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "15mx1fakz9c5qrrspsckd3yr3l5lac0pbjq8v65r26n3203xx5f9";
+    sha256 = "1dcc737ca517df53438bc9a3fae97f17d93d7a93fa1389e6bc44e82eee81ab83";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/nitime/default.nix b/pkgs/development/python-modules/nitime/default.nix
index 8fa40465c10d..68eeab46afc4 100644
--- a/pkgs/development/python-modules/nitime/default.nix
+++ b/pkgs/development/python-modules/nitime/default.nix
@@ -2,7 +2,7 @@
 , buildPythonPackage
 , python
 , fetchPypi
-, pytest
+, pytestCheckHook
 , cython
 , numpy
 , scipy
@@ -21,11 +21,11 @@ buildPythonPackage rec {
     sha256 = "0hb3x5196z2zaawb8s7lhja0vd3n983ncaynqfl9qg315x9ax7i6";
   };
 
-  checkInputs = [ pytest ];
   buildInputs = [ cython ];
+
   propagatedBuildInputs = [ numpy scipy matplotlib networkx nibabel ];
 
-  checkPhase = "pytest nitime/tests";
+  checkInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     homepage = "https://nipy.org/nitime";
diff --git a/pkgs/development/python-modules/noiseprotocol/default.nix b/pkgs/development/python-modules/noiseprotocol/default.nix
new file mode 100644
index 000000000000..76ed1b1fc2a0
--- /dev/null
+++ b/pkgs/development/python-modules/noiseprotocol/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchFromGitHub, cryptography, pytestCheckHook }:
+
+buildPythonPackage rec {
+  pname = "noiseprotocol";
+  version = "0.3.1";
+
+  src = fetchFromGitHub {
+    owner = "plizonczyk";
+    repo = "noiseprotocol";
+    rev = "v${version}";
+    sha256 = "1mk0rqpjifdv3v1cjwkdnjbrfmzzjm9f3qqs1r8vii4j2wvhm6am";
+  };
+
+  propagatedBuildInputs = [ cryptography ];
+
+  checkInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "noise" ];
+
+  meta = with lib; {
+    description = "Noise Protocol Framework";
+    homepage = "https://github.com/plizonczyk/noiseprotocol/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/openwebifpy/default.nix b/pkgs/development/python-modules/openwebifpy/default.nix
index 5cf070d610fb..60f94072681d 100644
--- a/pkgs/development/python-modules/openwebifpy/default.nix
+++ b/pkgs/development/python-modules/openwebifpy/default.nix
@@ -4,12 +4,12 @@
 
 buildPythonPackage rec {
   pname = "openwebifpy";
-  version = "3.1.1";
+  version = "3.2.7";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0zqa74i54ww9qjciiv8s58mxbs6vxq06cq5k4pxfarc0l75l4gh2";
+    sha256 = "0n9vi6b0y8b41fd7m9p361y3qb5m3b9p9d8g4fasqi7yy4mw2hns";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/orm/default.nix b/pkgs/development/python-modules/orm/default.nix
index dece359b0c0f..872a54076125 100644
--- a/pkgs/development/python-modules/orm/default.nix
+++ b/pkgs/development/python-modules/orm/default.nix
@@ -4,8 +4,9 @@
 , databases
 , typesystem
 , aiosqlite
-, pytest
+, pytestCheckHook
 , pytestcov
+, typing-extensions
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,12 @@ buildPythonPackage rec {
 
   checkInputs = [
     aiosqlite
-    pytest
+    pytestCheckHook
     pytestcov
+    typing-extensions
   ];
 
-  checkPhase = ''
-    PYTHONPATH=$PYTHONPATH:. pytest
-  '';
+  pythonImportsCheck = [ "orm" ];
 
   meta = with lib; {
     description = "An async ORM";
diff --git a/pkgs/development/python-modules/pgpy/default.nix b/pkgs/development/python-modules/pgpy/default.nix
index 9067817a3ba9..2c527d87d186 100644
--- a/pkgs/development/python-modules/pgpy/default.nix
+++ b/pkgs/development/python-modules/pgpy/default.nix
@@ -1,7 +1,6 @@
 { lib, isPy3k, fetchFromGitHub, buildPythonPackage
 , six, enum34, pyasn1, cryptography, singledispatch
-, fetchPypi
-, gpgme, flake8, pytest, pytestcov, pep8-naming, pytest-ordering }:
+, fetchPypi, pytestCheckHook }:
 
 buildPythonPackage rec {
   pname = "pgpy";
@@ -22,17 +21,10 @@ buildPythonPackage rec {
   ] ++ lib.optional (!isPy3k) enum34;
 
   checkInputs = [
-    gpgme
-    flake8
-    pytest
-    pytestcov
-    pep8-naming
-    pytest-ordering
+    pytestCheckHook
   ];
 
-  checkPhase = ''
-    pytest
-  '';
+  disabledTests = [ "test_sign_string" "test_verify_string" ];
 
   meta = with lib; {
     homepage = "https://github.com/SecurityInnovation/PGPy";
diff --git a/pkgs/development/python-modules/poster3/default.nix b/pkgs/development/python-modules/poster3/default.nix
index 269995717aa4..09e8055bdd91 100644
--- a/pkgs/development/python-modules/poster3/default.nix
+++ b/pkgs/development/python-modules/poster3/default.nix
@@ -15,8 +15,7 @@ buildPythonPackage rec {
   disabled = !isPy3k;
 
   src = fetchPypi {
-    inherit pname version;
-    format = "wheel";
+    inherit pname version format;
     python = "py3";
     sha256 = "1b27d7d63e3191e5d7238631fc828e4493590e94dcea034e386c079d853cce14";
   };
diff --git a/pkgs/development/python-modules/proto-plus/default.nix b/pkgs/development/python-modules/proto-plus/default.nix
index 4a36b625298d..71949d0d4e09 100644
--- a/pkgs/development/python-modules/proto-plus/default.nix
+++ b/pkgs/development/python-modules/proto-plus/default.nix
@@ -3,28 +3,31 @@
 , fetchPypi
 , isPy3k
 , protobuf
-, google_api_core
+, googleapis_common_protos
 , pytestCheckHook
+, pytz
 }:
 
 buildPythonPackage rec {
   pname = "proto-plus";
-  version = "1.11.0";
+  version = "1.13.0";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "416a0f13987789333cd8760a0ee998f8eccd6d7165ee9f283d64ca2de3e8774d";
+    sha256 = "1i5jjnwpd288378h37zads08h695iwmhxm0sxbr3ln6aax97rdb1";
   };
 
   propagatedBuildInputs = [ protobuf ];
 
-  checkInputs = [ pytestCheckHook google_api_core ];
+  checkInputs = [ pytestCheckHook pytz googleapis_common_protos ];
+
+  pythonImportsCheck = [ "proto" ];
 
   meta = with stdenv.lib; {
     description = "Beautiful, idiomatic protocol buffers in Python";
     homepage = "https://github.com/googleapis/proto-plus-python";
     license = licenses.asl20;
-    maintainers = [ maintainers.ruuda ];
+    maintainers = with maintainers; [ ruuda SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/protobuf/default.nix b/pkgs/development/python-modules/protobuf/default.nix
index ab95eeb51f91..4925c3dfd02f 100644
--- a/pkgs/development/python-modules/protobuf/default.nix
+++ b/pkgs/development/python-modules/protobuf/default.nix
@@ -1,6 +1,18 @@
-{ buildPackages, stdenv, fetchpatch, python, buildPythonPackage, isPy37
-, protobuf, google_apputils, pyext, libcxx, isPy27
-, disabled, doCheck ? true }:
+{ buildPackages
+, stdenv
+, fetchpatch
+, python
+, buildPythonPackage
+, isPy37
+, protobuf
+, google-apputils
+, six
+, pyext
+, libcxx
+, isPy27
+, disabled
+, doCheck ? true
+}:
 
 with stdenv.lib;
 
@@ -17,9 +29,9 @@ buildPythonPackage {
 
   outputs = [ "out" "dev" ];
 
-  propagatedBuildInputs = [ google_apputils ];
-  propagatedNativeBuildInputs = [ buildPackages.protobuf ];  # For protoc.
-  nativeBuildInputs = [ google_apputils pyext ];
+  propagatedBuildInputs = [ six ] ++ optionals isPy27 [ google-apputils ];
+  propagatedNativeBuildInputs = [ buildPackages.protobuf ]; # For protoc.
+  nativeBuildInputs = [ pyext ] ++ optionals isPy27 [ google-apputils ];
   buildInputs = [ protobuf ];
 
   patches = optional (isPy37 && (versionOlder protobuf.version "3.6.1.2"))
diff --git a/pkgs/development/python-modules/pyairvisual/default.nix b/pkgs/development/python-modules/pyairvisual/default.nix
index 084852fa5371..2e9aa97f1f23 100644
--- a/pkgs/development/python-modules/pyairvisual/default.nix
+++ b/pkgs/development/python-modules/pyairvisual/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "pyairvisual";
-  version = "5.0.4";
+  version = "5.0.5";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "0z769xrb6w6bhqcq02sjryl1qyvk9dc1xfn06fc3mdqnrbr0xxj3";
+    sha256 = "0jjvng3py5g97gvx6rdbk5zxbn5rw8gq1ki4qi4vfsypchxbpz2q";
   };
 
   nativeBuildInputs = [ poetry ];
@@ -43,13 +43,15 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "tests"
-  ];
+  # Ignore the examples as they are prefixed with test_
+  pytestFlagsArray = [ "--ignore examples/" ];
+  pythonImportsCheck = [ "pyairvisual" ];
 
   meta = with lib; {
-    description = "A simple, clean, well-tested Python library for interacting with AirVisual©";
-    license = licenses.mit;
+    description = "Python library for interacting with AirVisual";
     homepage = "https://github.com/bachya/pyairvisual";
+    changelog = "https://github.com/bachya/pyairvisual/releases/tag/${version}";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pyarlo/default.nix b/pkgs/development/python-modules/pyarlo/default.nix
new file mode 100644
index 000000000000..76fe9bc0a108
--- /dev/null
+++ b/pkgs/development/python-modules/pyarlo/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, mock
+, pytestCheckHook
+, requests
+, requests-mock
+, sseclient-py
+}:
+
+buildPythonPackage rec {
+  pname = "pyarlo";
+  version = "0.2.4";
+
+  src = fetchFromGitHub {
+    owner = "tchellomello";
+    repo = "python-arlo";
+    rev = version;
+    sha256 = "0pp7y2llk4xnf6zh57j5xas0gw5zqm42qaqssd8p4qa3g5rds8k3";
+  };
+
+  propagatedBuildInputs = [
+    requests
+    sseclient-py
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    mock
+    requests-mock
+  ];
+
+  pythonImportsCheck = [ "pyarlo" ];
+
+  meta = with lib; {
+    description = "Python library to work with Netgear Arlo cameras";
+    homepage = "https://github.com/tchellomello/python-arlo";
+    license = with licenses; [ lgpl3Plus ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyatv/default.nix b/pkgs/development/python-modules/pyatv/default.nix
index 647866b143fb..cbb61b21b10d 100644
--- a/pkgs/development/python-modules/pyatv/default.nix
+++ b/pkgs/development/python-modules/pyatv/default.nix
@@ -46,6 +46,8 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  __darwinAllowLocalNetworking = true;
+
   meta = with stdenv.lib; {
     description = "A python client library for the Apple TV";
     homepage = "https://github.com/postlund/pyatv";
diff --git a/pkgs/development/python-modules/pychromecast/default.nix b/pkgs/development/python-modules/pychromecast/default.nix
index 6e45eb2a626f..fecf3f09ca7c 100644
--- a/pkgs/development/python-modules/pychromecast/default.nix
+++ b/pkgs/development/python-modules/pychromecast/default.nix
@@ -2,17 +2,19 @@
 
 buildPythonPackage rec {
   pname = "PyChromecast";
-  version = "7.7.1";
+  version = "7.7.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "09mdz1y1bfwkszxsawffwy1mr7lc1j2rma571qkb60sk76107zfn";
+    sha256 = "1w7jayb0z529bh1ybb16pfm0m08qqi4px1q0qwlvcxlcrd2v3m5a";
   };
 
   disabled = !isPy3k;
 
   propagatedBuildInputs = [ requests zeroconf protobuf casttube ];
 
+  # no tests available
+  doCheck = false;
   pythonImportsCheck = [ "pychromecast" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/pydexcom/default.nix b/pkgs/development/python-modules/pydexcom/default.nix
new file mode 100644
index 000000000000..f83d3cbf1102
--- /dev/null
+++ b/pkgs/development/python-modules/pydexcom/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "pydexcom";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "gagebenne";
+    repo = pname;
+    rev = version;
+    sha256 = "19h7r0qbsqd6k6g4nz6z3k9kdmk0sx5zpsrgxwnhsff5fqi0y2ls";
+  };
+
+  propagatedBuildInputs = [ requests ];
+
+  # tests are interacting with the Dexcom API
+  doCheck = false;
+  pythonImportsCheck = [ "pydexcom" ];
+
+  meta = with lib; {
+    description = "Python API to interact with Dexcom Share service";
+    homepage = "https://github.com/gagebenne/pydexcom";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pygobject/default.nix b/pkgs/development/python-modules/pygobject/default.nix
index a7b25e57a336..0b72561e870b 100644
--- a/pkgs/development/python-modules/pygobject/default.nix
+++ b/pkgs/development/python-modules/pygobject/default.nix
@@ -1,9 +1,10 @@
-{ stdenv, fetchurl, python, buildPythonPackage, pkgconfig, glib, isPy3k }:
+{ stdenv, fetchurl, python, buildPythonPackage, pkgconfig, glib, isPy3k, pythonAtLeast }:
 
 buildPythonPackage rec {
   pname = "pygobject";
   version = "2.28.7";
   format = "other";
+  disabled = pythonAtLeast "3.9";
 
   src = fetchurl {
     url = "mirror://gnome/sources/pygobject/2.28/${pname}-${version}.tar.xz";
diff --git a/pkgs/development/python-modules/pylacrosse/default.nix b/pkgs/development/python-modules/pylacrosse/default.nix
new file mode 100644
index 000000000000..74b244f52965
--- /dev/null
+++ b/pkgs/development/python-modules/pylacrosse/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, mock
+, nose
+, pyserial
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "pylacrosse";
+  version = "0.4";
+
+  src = fetchFromGitHub {
+    owner = "hthiery";
+    repo = "python-lacrosse";
+    rev = version;
+    sha256 = "0g5hqm8lq0gsnvhcydjk54rjf7lpxzph8k7w1nnvnqfbhf31xfcf";
+  };
+
+  propagatedBuildInputs = [ pyserial ];
+
+  checkInputs = [
+    mock
+    nose
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "pylacrosse" ];
+
+  meta = with lib; {
+    description = "Python library for Jeelink LaCrosse";
+    homepage = "https://github.com/hthiery/python-lacrosse";
+    license = with licenses; [ lgpl2Plus ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pymodbus/default.nix b/pkgs/development/python-modules/pymodbus/default.nix
new file mode 100644
index 000000000000..76f2e9a9338b
--- /dev/null
+++ b/pkgs/development/python-modules/pymodbus/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, asynctest
+, buildPythonPackage
+, fetchFromGitHub
+, mock
+, pyserial
+, pyserial-asyncio
+, pytestCheckHook
+, pythonOlder
+, redis
+, sqlalchemy
+, tornado
+, twisted
+}:
+
+buildPythonPackage rec {
+  pname = "pymodbus";
+  version = "2.4.0";
+
+  src = fetchFromGitHub {
+    owner = "riptideio";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0x0dv02shcc2yxxm9kvcbhip111sna74dvcfssxdzzy967vnq76v";
+  };
+
+  # Twisted asynchronous version is not supported due to a missing dependency
+  propagatedBuildInputs = [
+    pyserial
+    pyserial-asyncio
+    tornado
+  ];
+
+  checkInputs = [
+    asynctest
+    mock
+    pyserial-asyncio
+    pytestCheckHook
+    redis
+    sqlalchemy
+    tornado
+    twisted
+  ];
+
+  pythonImportsCheck = [ "pymodbus" ];
+
+  meta = with lib; {
+    description = "Python implementation of the Modbus protocol";
+    longDescription = ''
+      Pymodbus is a full Modbus protocol implementation using twisted,
+      torndo or asyncio for its asynchronous communications core. It can
+      also be used without any third party dependencies if a more
+      lightweight project is needed.
+    '';
+    homepage = "https://github.com/riptideio/pymodbus";
+    license = with licenses; [ bsd3 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyosmium/default.nix b/pkgs/development/python-modules/pyosmium/default.nix
index ffcd3569e0a3..577f00fd1114 100644
--- a/pkgs/development/python-modules/pyosmium/default.nix
+++ b/pkgs/development/python-modules/pyosmium/default.nix
@@ -4,7 +4,7 @@
 
 buildPythonPackage rec {
   pname = "pyosmium";
-  version = "3.0.1";
+  version = "3.1.0";
 
   disabled = pythonOlder "3.4" || isPyPy;
 
@@ -12,7 +12,7 @@ buildPythonPackage rec {
     owner = "osmcode";
     repo = pname;
     rev = "v${version}";
-    sha256 = "06jngbmmmswhyi5q5bjph6gwss28d2azn5414zf0arik5bcvz128";
+    sha256 = "0m11hdgiysdhyi5yn6nj8a8ycjzx5hpjy7n1c4j6q5caifj7rf7h";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/development/python-modules/pytest-snapshot/default.nix b/pkgs/development/python-modules/pytest-snapshot/default.nix
new file mode 100644
index 000000000000..42f399bb67f9
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-snapshot/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, fetchPypi, packaging, pytest, setuptools-scm }:
+
+buildPythonPackage rec {
+  pname = "pytest-snapshot";
+  version = "0.4.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1p33fcplfykwf5mdwg25n8hjgzxpx8w1iprjnfzibpxclfrxmy5i";
+  };
+
+  nativeBuildInputs = [ setuptools-scm ];
+
+  propagatedBuildInputs = [ packaging pytest ];
+
+  # pypi does not contain tests and GitHub archive is not supported because setuptools-scm can't detect the version
+  doCheck = false;
+  pythonImportsCheck = [ "pytest_snapshot" ];
+
+  meta = with lib; {
+    description = "A plugin to enable snapshot testing with pytest";
+    homepage = "https://github.com/joseph-roitman/pytest-snapshot/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/pytile/default.nix b/pkgs/development/python-modules/pytile/default.nix
new file mode 100644
index 000000000000..d2fd99f6d166
--- /dev/null
+++ b/pkgs/development/python-modules/pytile/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, aiohttp
+, async-timeout
+, aresponses
+, buildPythonPackage
+, fetchFromGitHub
+, poetry
+, pylint
+, pytest-aiohttp
+, pytest-asyncio
+, pytestCheckHook
+, pythonAtLeast
+}:
+buildPythonPackage rec {
+  pname = "pytile";
+  version = "5.1.0";
+  disabled = pythonAtLeast "3.9";
+
+  src = fetchFromGitHub {
+    owner = "bachya";
+    repo = pname;
+    rev = version;
+    sha256 = "0hdyb8ca4ihqf7yfkr3hbpkwz7g182ycra151y5dxn0319fillc3";
+  };
+
+  format = "pyproject";
+
+  nativeBuildInputs = [ poetry ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    pylint
+  ];
+
+  checkInputs = [
+    aresponses
+    pytest-aiohttp
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  # Ignore the examples as they are prefixed with test_
+  pytestFlagsArray = [ "--ignore examples/" ];
+  pythonImportsCheck = [ "pytile" ];
+
+  meta = with lib; {
+    description = " Python API for Tile Bluetooth trackers";
+    longDescription = ''
+      pytile is a simple Python library for retrieving information on Tile
+      Bluetooth trackers (including last location and more).
+    '';
+    homepage = "https://github.com/bachya/pytile";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/r2pipe/default.nix b/pkgs/development/python-modules/r2pipe/default.nix
index 341d3f9660c5..7c1bb88bcaae 100644
--- a/pkgs/development/python-modules/r2pipe/default.nix
+++ b/pkgs/development/python-modules/r2pipe/default.nix
@@ -18,10 +18,10 @@ buildPythonPackage rec {
   ''
     # Fix find_library, can be removed after
     # https://github.com/NixOS/nixpkgs/issues/7307 is resolved.
-    substituteInPlace r2pipe/native.py --replace "find_library('r_core')" "'${libr_core}'"
+    substituteInPlace r2pipe/native.py --replace 'find_library("r_core")' "'${libr_core}'"
 
     # Fix the default r2 executable
-    substituteInPlace r2pipe/open_sync.py --replace "r2e = 'radare2'" "r2e = '${radare2}/bin/radare2'"
+    substituteInPlace r2pipe/open_sync.py --replace 'r2e = "radare2"' "r2e = '${radare2}/bin/radare2'"
     substituteInPlace r2pipe/open_base.py --replace 'which("radare2")' "'${radare2}/bin/radare2'"
   '';
 
diff --git a/pkgs/development/python-modules/rfc3986/default.nix b/pkgs/development/python-modules/rfc3986/default.nix
index 3af6d2f022be..859b2cc3e1af 100644
--- a/pkgs/development/python-modules/rfc3986/default.nix
+++ b/pkgs/development/python-modules/rfc3986/default.nix
@@ -1,5 +1,4 @@
-{ stdenv, buildPythonPackage, fetchPypi,
-  pytest }:
+{ stdenv, buildPythonPackage, fetchPypi, idna, pytestCheckHook }:
 
 buildPythonPackage rec {
   pname = "rfc3986";
@@ -10,14 +9,14 @@ buildPythonPackage rec {
     sha256 = "17dvx15m3r49bmif5zlli8kzjd6bys6psixzbp14sd5367d9h8qi";
   };
 
-  checkInputs = [ pytest ];
-  checkPhase = ''
-    pytest
-  '';
+  propagatedBuildInputs = [ idna ];
+
+  checkInputs = [ pytestCheckHook ];
 
   meta = with stdenv.lib; {
+    description = "Validating URI References per RFC 3986";
     homepage = "https://rfc3986.readthedocs.org";
     license = licenses.asl20;
-    description = "Validating URI References per RFC 3986";
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/rpy2/default.nix b/pkgs/development/python-modules/rpy2/default.nix
index 055341dfd1d3..0b042288fb75 100644
--- a/pkgs/development/python-modules/rpy2/default.nix
+++ b/pkgs/development/python-modules/rpy2/default.nix
@@ -1,4 +1,5 @@
-{ lib
+{ stdenv
+, lib
 , python
 , buildPythonPackage
 , fetchpatch
@@ -20,30 +21,37 @@
 , cffi
 , tzlocal
 , simplegeneric
-, pytest
+, pytestCheckHook
 , extraRPackages ? []
 }:
 
 buildPythonPackage rec {
-    version = "3.3.6";
+    version = "3.4.1";
     pname = "rpy2";
 
     disabled = isPyPy;
     src = fetchPypi {
       inherit version pname;
-      sha256 = "0xvfkxvh01r5ibd5mpisp8bz385hgpn27b988y8v65z7hqr3y1nf";
+      sha256 = "1qnjjlgh6i31z45jykwd29n1336gq678fn9zw7gh0rv5d6sn0hv4";
     };
 
+    patches = [
+      # R_LIBS_SITE is used by the nix r package to point to the installed R libraries.
+      # This patch sets R_LIBS_SITE when rpy2 is imported.
+      ./rpy2-3.x-r-libs-site.patch
+    ];
+
+    postPatch = ''
+      substituteInPlace 'rpy2/rinterface_lib/embedded.py' --replace '@NIX_R_LIBS_SITE@' "$R_LIBS_SITE"
+      substituteInPlace 'requirements.txt' --replace 'pytest' ""
+    '';
+
     buildInputs = [
-      R
       pcre
       lzma
       bzip2
       zlib
       icu
-
-      # is in the upstream `requires` although it shouldn't be -- this is easier than patching it away
-      pytest
     ] ++ (with rPackages; [
       # packages expected by the test framework
       ggplot2
@@ -58,23 +66,10 @@ buildPythonPackage rec {
       tidyr
     ]) ++ extraRPackages ++ rWrapper.recommendedPackages;
 
-    checkPhase = ''
-      pytest
-    '';
-
     nativeBuildInputs = [
       R # needed at setup time to detect R_HOME (alternatively set R_HOME explicitly)
     ];
 
-    patches = [
-      # R_LIBS_SITE is used by the nix r package to point to the installed R libraries.
-      # This patch sets R_LIBS_SITE when rpy2 is imported.
-      ./rpy2-3.x-r-libs-site.patch
-    ];
-    postPatch = ''
-      substituteInPlace 'rpy2/rinterface_lib/embedded.py' --replace '@NIX_R_LIBS_SITE@' "$R_LIBS_SITE"
-    '';
-
     propagatedBuildInputs = [
       ipython
       jinja2
@@ -86,8 +81,10 @@ buildPythonPackage rec {
       simplegeneric
     ];
 
+    doCheck = !stdenv.isDarwin;
+
     checkInputs = [
-      pytest
+      pytestCheckHook
     ];
 
     meta = {
diff --git a/pkgs/development/python-modules/salmon-mail/default.nix b/pkgs/development/python-modules/salmon-mail/default.nix
index a33bec431d68..187f526b72f4 100644
--- a/pkgs/development/python-modules/salmon-mail/default.nix
+++ b/pkgs/development/python-modules/salmon-mail/default.nix
@@ -20,6 +20,8 @@ buildPythonPackage rec {
   # The tests use salmon executable installed by salmon itself so we need to add
   # that to PATH
   checkPhase = ''
+    # tests fail and pytest is not supported
+    rm tests/server_tests.py
     PATH=$out/bin:$PATH python setup.py test
   '';
 
diff --git a/pkgs/development/python-modules/sanic-auth/default.nix b/pkgs/development/python-modules/sanic-auth/default.nix
index 4642b69f7d2e..c78b6f13d152 100644
--- a/pkgs/development/python-modules/sanic-auth/default.nix
+++ b/pkgs/development/python-modules/sanic-auth/default.nix
@@ -1,21 +1,19 @@
-{ lib, buildPythonPackage, fetchPypi, pytest, sanic }:
+{ lib, buildPythonPackage, fetchPypi, sanic, pytestCheckHook }:
 
 buildPythonPackage rec {
   pname = "Sanic-Auth";
-  version = "0.2.0";
+  version = "0.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b7cb9e93296c035ada0aa1ebfb33f9f7b62f7774c519e374b7fe703ff73589cb";
+    sha256 = "0dc24ynqjraqwgvyk0g9bj87zgpq4xnssl24hnsn7l5vlkmk8198";
   };
 
   propagatedBuildInputs = [ sanic ];
 
-  checkInputs = [ pytest ];
+  checkInputs = [ pytestCheckHook ];
 
-  checkPhase = ''
-    pytest tests
-  '';
+  pythonImportsCheck = [ "sanic_auth" ];
 
   meta = with lib; {
     description = "Simple Authentication for Sanic";
diff --git a/pkgs/development/python-modules/sanic/default.nix b/pkgs/development/python-modules/sanic/default.nix
index aaedaa5ef8c5..f503b0b85561 100644
--- a/pkgs/development/python-modules/sanic/default.nix
+++ b/pkgs/development/python-modules/sanic/default.nix
@@ -36,6 +36,8 @@ buildPythonPackage rec {
     "test_zero_downtime" # No "examples.delayed_response.app" module in pypi distribution.
   ];
 
+  __darwinAllowLocalNetworking = true;
+
   meta = with lib; {
     description = "A microframework based on uvloop, httptools, and learnings of flask";
     homepage = "http://github.com/channelcat/sanic/";
diff --git a/pkgs/development/python-modules/sentry-sdk/default.nix b/pkgs/development/python-modules/sentry-sdk/default.nix
index 9df9453b2b4d..5f640d44b1ca 100644
--- a/pkgs/development/python-modules/sentry-sdk/default.nix
+++ b/pkgs/development/python-modules/sentry-sdk/default.nix
@@ -42,12 +42,6 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ urllib3 certifi ];
 
-  meta = with stdenv.lib; {
-    homepage = "https://github.com/getsentry/sentry-python";
-    description = "New Python SDK for Sentry.io";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ gebner ];
-  };
 
   # The Sentry tests need access to `/etc/protocols` (the tests call
   # `socket.getprotobyname('tcp')`, which reads from this file). Normally
@@ -57,5 +51,17 @@ buildPythonPackage rec {
     export NIX_REDIRECTS=/etc/protocols=${iana-etc}/etc/protocols
     export LD_PRELOAD=${libredirect}/lib/libredirect.so
   '';
+
   postCheck = "unset NIX_REDIRECTS LD_PRELOAD";
+
+  # no tests
+  doCheck = false;
+  pythonImportsCheck = [ "sentry_sdk" ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/getsentry/sentry-python";
+    description = "New Python SDK for Sentry.io";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ gebner ];
+  };
 }
diff --git a/pkgs/development/python-modules/slither-analyzer/default.nix b/pkgs/development/python-modules/slither-analyzer/default.nix
index 19677a71eca3..deb12817a7bd 100644
--- a/pkgs/development/python-modules/slither-analyzer/default.nix
+++ b/pkgs/development/python-modules/slither-analyzer/default.nix
@@ -4,7 +4,7 @@
 
 buildPythonPackage rec {
   pname = "slither-analyzer";
-  version = "0.6.14";
+  version = "0.7.0";
 
   disabled = pythonOlder "3.6";
 
@@ -13,7 +13,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "79f5098d27c149ca9cce2b8008ed29e2e0c8cee8fa3414c7e5455cb73c90a9a8";
+    sha256 = "10r479xidgxvas4wb0z6injp59jrn7rfq8d7bxlcalc2dy4mawr0";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/development/python-modules/smbus-cffi/default.nix b/pkgs/development/python-modules/smbus-cffi/default.nix
index b762730914b5..6715cfd60d95 100644
--- a/pkgs/development/python-modules/smbus-cffi/default.nix
+++ b/pkgs/development/python-modules/smbus-cffi/default.nix
@@ -42,5 +42,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/bivab/smbus-cffi";
     license = licenses.gpl2;
     maintainers = with maintainers; [ mic92 ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/snapshottest/default.nix b/pkgs/development/python-modules/snapshottest/default.nix
new file mode 100644
index 000000000000..b20f9afff9e6
--- /dev/null
+++ b/pkgs/development/python-modules/snapshottest/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fastdiff
+, six
+, termcolor
+, pytestCheckHook
+, pytest-cov
+, django
+}:
+
+buildPythonPackage rec {
+  pname = "snapshottest";
+  version = "0.6.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0g35ggqw4jd9zmazw55kj6gfjdghv49qx4jw5q231qyqj8fzijmv";
+  };
+
+  propagatedBuildInputs = [ fastdiff six termcolor ];
+
+  checkInputs = [ django pytestCheckHook pytest-cov ];
+
+  pythonImportsCheck = [ "snapshottest" ];
+
+  meta = with lib; {
+    description = "Snapshot testing for pytest, unittest, Django, and Nose";
+    homepage = "https://github.com/syrusakbary/snapshottest";
+    license = licenses.mit;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/starlette/default.nix b/pkgs/development/python-modules/starlette/default.nix
index ff8a93d335ea..d802a2300035 100644
--- a/pkgs/development/python-modules/starlette/default.nix
+++ b/pkgs/development/python-modules/starlette/default.nix
@@ -2,25 +2,26 @@
 , stdenv
 , buildPythonPackage
 , fetchFromGitHub
+, isPy27
 , aiofiles
 , graphene
 , itsdangerous
 , jinja2
+, python-multipart
 , pyyaml
 , requests
 , ujson
-, python-multipart
-, pytest
-, uvicorn
-, isPy27
-, darwin
-, databases
 , aiosqlite
+, databases
+, pytestCheckHook
+, pytest-asyncio
+, pytestcov
+, typing-extensions
+, ApplicationServices
 }:
 
 buildPythonPackage rec {
   pname = "starlette";
-
   version = "0.13.8";
   disabled = isPy27;
 
@@ -36,22 +37,21 @@ buildPythonPackage rec {
     graphene
     itsdangerous
     jinja2
+    python-multipart
     pyyaml
     requests
     ujson
-    uvicorn
-    python-multipart
-    databases
-  ] ++ stdenv.lib.optional stdenv.isDarwin [ darwin.apple_sdk.frameworks.ApplicationServices ];
+  ] ++ lib.optional stdenv.isDarwin [ ApplicationServices ];
 
   checkInputs = [
-    pytest
     aiosqlite
+    databases
+    pytestCheckHook
+    typing-extensions
   ];
 
-  checkPhase = ''
-    pytest --ignore=tests/test_graphql.py
-  '';
+  pytestFlagsArray = [ "--ignore=tests/test_graphql.py" ];
+
   pythonImportsCheck = [ "starlette" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/tbm-utils/default.nix b/pkgs/development/python-modules/tbm-utils/default.nix
index 2d0efeceda04..bcc5cbbef946 100644
--- a/pkgs/development/python-modules/tbm-utils/default.nix
+++ b/pkgs/development/python-modules/tbm-utils/default.nix
@@ -5,17 +5,15 @@
 , pendulum
 , pprintpp
 , wrapt
-, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "tbm-utils";
   version = "2.6.0";
-  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "235748cceeb22c042e32d2fdfd4d710021bac9b938c4f2c35e1fce1cfd58f7ec";
+    sha256 = "1v7pb3yirkhzbv1z5i1qp74vl880f56zvzfj68p08b5jxv64hmr3";
   };
 
   propagatedBuildInputs = [ attrs pendulum pprintpp wrapt ];
@@ -24,7 +22,7 @@ buildPythonPackage rec {
   # issues with package failing to build from source, but nixpkgs is better
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "pendulum>=2.0,<=3.0,!=2.0.5,!=2.1.0" "pendulum>=2.0,<=3.0"
+      --replace "'attrs>=18.2,<19.4'" "'attrs'"
   '';
 
   # No tests in archive.
diff --git a/pkgs/development/python-modules/tensorflow-estimator/1/default.nix b/pkgs/development/python-modules/tensorflow-estimator/1/default.nix
deleted file mode 100644
index c34d6948d89e..000000000000
--- a/pkgs/development/python-modules/tensorflow-estimator/1/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ stdenv, fetchPypi, buildPythonPackage
-, numpy
-, absl-py
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "tensorflow-estimator";
-  # This is effectively 1.15.0. Upstream tagged 1.15.0 by mistake before
-  # actually updating the version in setup.py, which is why this tag is called
-  # 1.15.1.
-  version = "1.15.1";
-  format = "wheel";
-
-  src = fetchPypi {
-    pname = "tensorflow_estimator";
-    inherit version format;
-    sha256 = "1fc61wmc0w22frs79j2x4g6wnv5g21xc6rix1g4bsvy9qfvvylw8";
-  };
-
-  propagatedBuildInputs = [ mock numpy absl-py ];
-
-  meta = with stdenv.lib; {
-    description = "TensorFlow Estimator is a high-level API that encapsulates model training, evaluation, prediction, and exporting.";
-    homepage = "http://tensorflow.org";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ jyp ];
-  };
-}
-
diff --git a/pkgs/development/python-modules/tensorflow-estimator/2/default.nix b/pkgs/development/python-modules/tensorflow-estimator/default.nix
index 750ef6e8a907..750ef6e8a907 100644
--- a/pkgs/development/python-modules/tensorflow-estimator/2/default.nix
+++ b/pkgs/development/python-modules/tensorflow-estimator/default.nix
diff --git a/pkgs/development/python-modules/tensorflow-tensorboard/1/default.nix b/pkgs/development/python-modules/tensorflow-tensorboard/1/default.nix
index 6cc3636b7f30..f58b1a207719 100644
--- a/pkgs/development/python-modules/tensorflow-tensorboard/1/default.nix
+++ b/pkgs/development/python-modules/tensorflow-tensorboard/1/default.nix
@@ -20,8 +20,7 @@ buildPythonPackage rec {
 
   src = fetchPypi ({
     pname = "tensorboard";
-    inherit version;
-    format = "wheel";
+    inherit version format;
   } // (if isPy3k then {
     python = "py3";
     sha256 = "1g62i3nrgp8q9wfsyqqjkkfnsz7x2k018c26kdh527h1yrjjrbac";
diff --git a/pkgs/development/python-modules/tensorflow-tensorboard/2/default.nix b/pkgs/development/python-modules/tensorflow-tensorboard/default.nix
index 945896dda018..d0cf7f28f4d6 100644
--- a/pkgs/development/python-modules/tensorflow-tensorboard/2/default.nix
+++ b/pkgs/development/python-modules/tensorflow-tensorboard/default.nix
@@ -21,8 +21,7 @@ buildPythonPackage rec {
 
   src = fetchPypi ({
     pname = "tensorboard";
-    inherit version;
-    format = "wheel";
+    inherit version format;
   } // (if isPy3k then {
     python = "py3";
     sha256 = "1wpjdzhjpcdkyaahzd4bl71k4l30z5c55280ndiwj32hw70lxrp6";
diff --git a/pkgs/development/python-modules/tensorflow/1/bin.nix b/pkgs/development/python-modules/tensorflow/1/bin.nix
deleted file mode 100644
index 5c93e957f7c1..000000000000
--- a/pkgs/development/python-modules/tensorflow/1/bin.nix
+++ /dev/null
@@ -1,120 +0,0 @@
-{ stdenv
-, lib
-, fetchurl
-, buildPythonPackage
-, isPy3k, pythonOlder, pythonAtLeast
-, astor
-, gast
-, google-pasta
-, wrapt
-, numpy
-, six
-, termcolor
-, protobuf
-, absl-py
-, grpcio
-, mock
-, backports_weakref
-, tensorflow-estimator_1
-, tensorflow-tensorboard
-, cudaSupport ? false
-, cudatoolkit ? null
-, cudnn ? null
-, nvidia_x11 ? null
-, zlib
-, python
-, symlinkJoin
-, keras-applications
-, keras-preprocessing
-, addOpenGLRunpath
-}:
-
-# We keep this binary build for two reasons:
-# - the source build doesn't work on Darwin.
-# - the source build is currently brittle and not easy to maintain
-
-assert cudaSupport -> cudatoolkit != null
-                   && cudnn != null
-                   && nvidia_x11 != null;
-
-# unsupported combination
-assert ! (stdenv.isDarwin && cudaSupport);
-
-let
-  packages = import ./binary-hashes.nix;
-
-  variant = if cudaSupport then "-gpu" else "";
-  pname = "tensorflow${variant}";
-
-in buildPythonPackage {
-  inherit pname;
-  inherit (packages) version;
-  format = "wheel";
-  disabled = pythonAtLeast "3.8";
-
-  src = let
-    pyVerNoDot = lib.strings.stringAsChars (x: if x == "." then "" else x) python.pythonVersion;
-    pyver = if stdenv.isDarwin then builtins.substring 0 1 pyVerNoDot else pyVerNoDot;
-    platform = if stdenv.isDarwin then "mac" else "linux";
-    unit = if cudaSupport then "gpu" else "cpu";
-    key = "${platform}_py_${pyver}_${unit}";
-  in fetchurl packages.${key};
-
-  propagatedBuildInputs = [
-    protobuf
-    numpy
-    termcolor
-    grpcio
-    six
-    astor
-    absl-py
-    gast
-    google-pasta
-    wrapt
-    tensorflow-estimator_1
-    tensorflow-tensorboard
-    keras-applications
-    keras-preprocessing
-  ] ++ lib.optional (!isPy3k) mock
-    ++ lib.optionals (pythonOlder "3.4") [ backports_weakref ];
-
-  nativeBuildInputs = lib.optional cudaSupport addOpenGLRunpath;
-
-  # Upstream has a pip hack that results in bin/tensorboard being in both tensorflow
-  # and the propageted input tensorflow-tensorboard which causes environment collisions.
-  # another possibility would be to have tensorboard only in the buildInputs
-  # https://github.com/tensorflow/tensorflow/blob/v1.7.1/tensorflow/tools/pip_package/setup.py#L79
-  postInstall = ''
-    rm $out/bin/tensorboard
-  '';
-
-  # Note that we need to run *after* the fixup phase because the
-  # libraries are loaded at runtime. If we run in preFixup then
-  # patchelf --shrink-rpath will remove the cuda libraries.
-  postFixup = let
-    rpath = stdenv.lib.makeLibraryPath
-      ([ stdenv.cc.cc.lib zlib ] ++ lib.optionals cudaSupport [ cudatoolkit.out cudatoolkit.lib cudnn nvidia_x11 ]);
-  in
-  lib.optionalString stdenv.isLinux ''
-    rrPath="$out/${python.sitePackages}/tensorflow/:$out/${python.sitePackages}/tensorflow/contrib/tensor_forest/:${rpath}"
-    internalLibPath="$out/${python.sitePackages}/tensorflow/python/_pywrap_tensorflow_internal.so"
-    find $out -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do
-      patchelf --set-rpath "$rrPath" "$lib"
-      ${lib.optionalString cudaSupport ''
-        addOpenGLRunpath "$lib"
-      ''}
-    done
-  '';
-
-
-  meta = with stdenv.lib; {
-    description = "Computation using data flow graphs for scalable machine learning";
-    homepage = "http://tensorflow.org";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ jyp abbradar ];
-    platforms = [ "x86_64-linux" "x86_64-darwin" ];
-    # Python 2.7 build uses different string encoding.
-    # See https://github.com/NixOS/nixpkgs/pull/37044#issuecomment-373452253
-    broken = stdenv.isDarwin && !isPy3k;
-  };
-}
diff --git a/pkgs/development/python-modules/tensorflow/1/binary-hashes.nix b/pkgs/development/python-modules/tensorflow/1/binary-hashes.nix
deleted file mode 100644
index fa4809dc3f19..000000000000
--- a/pkgs/development/python-modules/tensorflow/1/binary-hashes.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-version = "1.14.0";
-linux_py_27_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.14.0-cp27-none-linux_x86_64.whl";
-  sha256 = "0yywdrfk97dh1bxhibspg0raz70fx9lcczj6xlimqy4xb60clx7k";
-};
-linux_py_35_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.14.0-cp35-cp35m-linux_x86_64.whl";
-  sha256 = "1xvyb6xcrjhlwvrmrhn5vs9xy7g98smqmpv4i3hhpry4qyasphhj";
-};
-linux_py_36_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.14.0-cp36-cp36m-linux_x86_64.whl";
-  sha256 = "1psd9vyxz9f39dwj77nvrg373sxv3p5vdp9fnz81dpsm0b0mwl44";
-};
-linux_py_37_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.14.0-cp37-cp37m-linux_x86_64.whl";
-  sha256 = "0bg2sb1n2ag27r7ww695kg5hb0mjrw4kc5893krmixx2j71860c5";
-};
-linux_py_27_gpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.14.0-cp27-none-linux_x86_64.whl";
-  sha256 = "0y1x91gayg6pjddgl8ndcm63wfzhyv4s5khgl7ffzsgni1ivaqw5";
-};
-linux_py_35_gpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.14.0-cp35-cp35m-linux_x86_64.whl";
-  sha256 = "03piggpbz1jx8m2b95spq3jrdff4w6xx63ji07am7hyw2nsgx3mx";
-};
-linux_py_36_gpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.14.0-cp36-cp36m-linux_x86_64.whl";
-  sha256 = "0ypkp8cfhharsyyikb1qgf44cfm6284km9xswzvzymjzz75vg3gd";
-};
-linux_py_37_gpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.14.0-cp37-cp37m-linux_x86_64.whl";
-  sha256 = "0virp8nn2ysx4855hq29kas6fm6b3dsiybwzdxy9nnb9n2d8qlm2";
-};
-mac_py_2_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.14.0-py2-none-any.whl";
-  sha256 = "14f86k3pgq7z6i4s4im55zpp38f0drnm7xlclavsgcc0nxnj3z26";
-};
-mac_py_3_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.14.0-py3-none-any.whl";
-  sha256 = "0f3swpcjfgqhj6h5wnx8snc0xjkx4hnkqx83fmlrwpncs8c131d3";
-};
-}
diff --git a/pkgs/development/python-modules/tensorflow/1/default.nix b/pkgs/development/python-modules/tensorflow/1/default.nix
deleted file mode 100644
index 4dd30e4687ad..000000000000
--- a/pkgs/development/python-modules/tensorflow/1/default.nix
+++ /dev/null
@@ -1,456 +0,0 @@
-{ stdenv, pkgs, bazel_0_26, buildBazelPackage, lib, fetchFromGitHub, fetchpatch, symlinkJoin
-, addOpenGLRunpath
-# Python deps
-, buildPythonPackage, isPy3k, isPy27, pythonOlder, pythonAtLeast, python
-# Python libraries
-, numpy, tensorflow-tensorboard_1, backports_weakref, mock, enum34, absl-py
-, future, setuptools, wheel, keras-preprocessing, keras-applications, google-pasta
-, functools32
-, opt-einsum
-, termcolor, grpcio, six, wrapt, protobuf, tensorflow-estimator_1
-# Common deps
-, git, swig, which, binutils, glibcLocales, cython
-# Common libraries
-, jemalloc, openmpi, astor, gast, grpc, sqlite, openssl, jsoncpp, re2
-, curl, snappy, flatbuffers, icu, double-conversion, libpng, libjpeg, giflib
-# Upsteam by default includes cuda support since tensorflow 1.15. We could do
-# that in nix as well. It would make some things easier and less confusing, but
-# it would also make the default tensorflow package unfree. See
-# https://groups.google.com/a/tensorflow.org/forum/#!topic/developers/iRCt5m4qUz0
-, cudaSupport ? false, nvidia_x11 ? null, cudatoolkit ? null, cudnn ? null, nccl ? null
-, mklSupport ? false, mkl ? null
-# XLA without CUDA is broken
-, xlaSupport ? cudaSupport
-# Default from ./configure script
-, cudaCapabilities ? [ "3.5" "5.2" ]
-, sse42Support ? stdenv.hostPlatform.sse4_2Support
-, avx2Support  ? stdenv.hostPlatform.avx2Support
-, fmaSupport   ? stdenv.hostPlatform.fmaSupport
-# Darwin deps
-, Foundation, Security
-}:
-
-assert cudaSupport -> nvidia_x11 != null
-                   && cudatoolkit != null
-                   && cudnn != null;
-
-# unsupported combination
-assert ! (stdenv.isDarwin && cudaSupport);
-
-assert mklSupport -> mkl != null;
-
-let
-  withTensorboard = pythonOlder "3.6";
-
-  cudatoolkit_joined = symlinkJoin {
-    name = "${cudatoolkit.name}-merged";
-    paths = [
-      cudatoolkit.lib
-      cudatoolkit.out
-      # for some reason some of the required libs are in the targets/x86_64-linux
-      # directory; not sure why but this works around it
-      "${cudatoolkit}/targets/${stdenv.system}"
-    ];
-  };
-
-  cudatoolkit_cc_joined = symlinkJoin {
-    name = "${cudatoolkit.cc.name}-merged";
-    paths = [
-      cudatoolkit.cc
-      binutils.bintools # for ar, dwp, nm, objcopy, objdump, strip
-    ];
-  };
-
-  # Needed for _some_ system libraries, grep INCLUDEDIR.
-  includes_joined = symlinkJoin {
-    name = "tensorflow-deps-merged";
-    paths = [
-      pkgs.protobuf
-      jsoncpp
-    ];
-  };
-
-  tfFeature = x: if x then "1" else "0";
-
-  version = "1.15.4";
-  variant = if cudaSupport then "-gpu" else "";
-  pname = "tensorflow${variant}";
-
-  pythonEnv = python.withPackages (_:
-    [ # python deps needed during wheel build time (not runtime, see the buildPythonPackage part for that)
-      numpy
-      keras-preprocessing
-      protobuf
-      wrapt
-      gast
-      astor
-      absl-py
-      termcolor
-      keras-applications
-      setuptools
-      wheel
-  ] ++ lib.optionals (!isPy3k)
-  [ future
-    functools32
-    mock
-  ]);
-
-  bazel-build = buildBazelPackage {
-    name = "${pname}-${version}";
-    bazel = bazel_0_26;
-
-    src = fetchFromGitHub {
-      owner = "tensorflow";
-      repo = "tensorflow";
-      rev = "v${version}";
-      sha256 = "0lg8ahyr2k7dmp0yfypk8ivl9a0xcg3j0f0dakmn5ljk8nsji0bj";
-    };
-
-    patches = [
-      # Work around https://github.com/tensorflow/tensorflow/issues/24752
-      ../no-saved-proto.patch
-      # Fixes for NixOS jsoncpp
-      ../system-jsoncpp.patch
-
-      # https://github.com/tensorflow/tensorflow/pull/29673
-      (fetchpatch {
-        name = "fix-compile-with-cuda-and-mpi.patch";
-        url = "https://github.com/tensorflow/tensorflow/pull/29673/commits/498e35a3bfe38dd75cf1416a1a23c07c3b59e6af.patch";
-        sha256 = "1m2qmwv1ysqa61z6255xggwbq6mnxbig749bdvrhnch4zydxb4di";
-      })
-      (fetchpatch {
-        name = "backport-pr-18950.patch";
-        url = "https://github.com/tensorflow/tensorflow/commit/73640aaec2ab0234d9fff138e3c9833695570c0a.patch";
-        sha256 = "1n9ypbrx36fc1kc9cz5b3p9qhg15xxhq4nz6ap3hwqba535nakfz";
-      })
-
-      (fetchpatch {
-        # be compatible with gast >0.2 instead of only gast 0.2.2
-        name = "gast-update.patch";
-        url = "https://github.com/tensorflow/tensorflow/commit/85751ad6c7f5fd12c6c79545d96896cba92fa8b4.patch";
-        sha256 = "077cpj0kzyqxzdya1dwh8df17zfzhqn7c685hx6iskvw2979zg2n";
-      })
-      ./lift-gast-restriction.patch
-
-      (fetchpatch {
-        # fix compilation with numpy >= 1.19
-        name = "add-const-overload.patch";
-        url = "https://github.com/tensorflow/tensorflow/commit/75ea0b31477d6ba9e990e296bbbd8ca4e7eebadf.patch";
-        sha256 = "1xp1icacig0xm0nmb05sbrf4nw4xbln9fhc308birrv8286zx7wv";
-      })
-
-      # cuda 10.2 does not have "-bin2c-path" option anymore
-      # https://github.com/tensorflow/tensorflow/issues/34429
-      ../cuda-10.2-no-bin2c-path.patch
-    ];
-
-    # On update, it can be useful to steal the changes from gentoo
-    # https://gitweb.gentoo.org/repo/gentoo.git/tree/sci-libs/tensorflow
-
-    nativeBuildInputs = [
-      swig which pythonEnv
-    ] ++ lib.optional cudaSupport addOpenGLRunpath;
-
-    buildInputs = [
-      jemalloc
-      openmpi
-      glibcLocales
-      git
-
-      # libs taken from system through the TF_SYS_LIBS mechanism
-      # grpc
-      sqlite
-      openssl
-      jsoncpp
-      pkgs.protobuf
-      curl
-      snappy
-      flatbuffers
-      icu
-      double-conversion
-      libpng
-      libjpeg
-      giflib
-      re2
-      pkgs.lmdb
-    ] ++ lib.optionals cudaSupport [
-      cudatoolkit
-      cudnn
-      nvidia_x11
-    ] ++ lib.optionals mklSupport [
-      mkl
-    ] ++ lib.optionals stdenv.isDarwin [
-      Foundation
-      Security
-    ];
-
-    # arbitrarily set to the current latest bazel version, overly careful
-    TF_IGNORE_MAX_BAZEL_VERSION = true;
-
-    # Take as many libraries from the system as possible. Keep in sync with
-    # list of valid syslibs in
-    # https://github.com/tensorflow/tensorflow/blob/master/third_party/systemlibs/syslibs_configure.bzl
-    TF_SYSTEM_LIBS = lib.concatStringsSep "," [
-      "absl_py"
-      "astor_archive"
-      "boringssl"
-      # Not packaged in nixpkgs
-      # "com_github_googleapis_googleapis"
-      # "com_github_googlecloudplatform_google_cloud_cpp"
-      "com_google_protobuf"
-      "com_googlesource_code_re2"
-      "curl"
-      "cython"
-      "double_conversion"
-      "flatbuffers"
-      "gast_archive"
-      "gif_archive"
-      # Lots of errors, requires an older version
-      # "grpc"
-      "hwloc"
-      "icu"
-      "jpeg"
-      "jsoncpp_git"
-      "keras_applications_archive"
-      "lmdb"
-      "nasm"
-      # "nsync" # not packaged in nixpkgs
-      "opt_einsum_archive"
-      "org_sqlite"
-      "pasta"
-      "pcre"
-      "png_archive"
-      "six_archive"
-      "snappy"
-      "swig"
-      "termcolor_archive"
-      "wrapt"
-      "zlib_archive"
-    ];
-
-    INCLUDEDIR = "${includes_joined}/include";
-
-    PYTHON_BIN_PATH = pythonEnv.interpreter;
-
-    TF_NEED_GCP = true;
-    TF_NEED_HDFS = true;
-    TF_ENABLE_XLA = tfFeature xlaSupport;
-
-    CC_OPT_FLAGS = " ";
-
-    # https://github.com/tensorflow/tensorflow/issues/14454
-    TF_NEED_MPI = tfFeature cudaSupport;
-
-    TF_NEED_CUDA = tfFeature cudaSupport;
-    TF_CUDA_PATHS = lib.optionalString cudaSupport "${cudatoolkit_joined},${cudnn},${nccl}";
-    GCC_HOST_COMPILER_PREFIX = lib.optionalString cudaSupport "${cudatoolkit_cc_joined}/bin";
-    GCC_HOST_COMPILER_PATH = lib.optionalString cudaSupport "${cudatoolkit_cc_joined}/bin/gcc";
-    TF_CUDA_COMPUTE_CAPABILITIES = lib.concatStringsSep "," cudaCapabilities;
-
-    postPatch = ''
-      # https://github.com/tensorflow/tensorflow/issues/20919
-      sed -i '/androidndk/d' tensorflow/lite/kernels/internal/BUILD
-
-      # Tensorboard pulls in a bunch of dependencies, some of which may
-      # include security vulnerabilities. So we make it optional.
-      # https://github.com/tensorflow/tensorflow/issues/20280#issuecomment-400230560
-      sed -i '/tensorboard >=/d' tensorflow/tools/pip_package/setup.py
-
-      substituteInPlace tensorflow/tools/pip_package/setup.py \
-        --replace "numpy >= 1.16.0, < 1.19.0" "numpy >= 1.16.0"
-
-      # glibc 2.31+ does not have sys/sysctl.h
-      # see https://github.com/tensorflow/tensorflow/issues/45861
-      substituteInPlace third_party/hwloc/BUILD.bazel\
-        --replace "#define HAVE_SYS_SYSCTL_H 1" "#undef HAVE_SYS_SYSCTL_H"
-    '';
-
-    preConfigure = let
-      opt_flags = []
-        ++ lib.optionals sse42Support ["-msse4.2"]
-        ++ lib.optionals avx2Support ["-mavx2"]
-        ++ lib.optionals fmaSupport ["-mfma"];
-    in ''
-      patchShebangs configure
-
-      # dummy ldconfig
-      mkdir dummy-ldconfig
-      echo "#!${stdenv.shell}" > dummy-ldconfig/ldconfig
-      chmod +x dummy-ldconfig/ldconfig
-      export PATH="$PWD/dummy-ldconfig:$PATH"
-
-      export PYTHON_LIB_PATH="$NIX_BUILD_TOP/site-packages"
-      export CC_OPT_FLAGS="${lib.concatStringsSep " " opt_flags}"
-      mkdir -p "$PYTHON_LIB_PATH"
-
-      # To avoid mixing Python 2 and Python 3
-      unset PYTHONPATH
-    '';
-
-    configurePhase = ''
-      runHook preConfigure
-      ./configure
-      runHook postConfigure
-    '';
-
-    # FIXME: Tensorflow uses dlopen() for CUDA libraries.
-    NIX_LDFLAGS = lib.optionalString cudaSupport "-lcudart -lcublas -lcufft -lcurand -lcusolver -lcusparse -lcudnn";
-
-    hardeningDisable = [ "format" ];
-
-    bazelFlags = [
-      # temporary fixes to make the build work with bazel 0.27
-      "--incompatible_no_support_tools_in_action_inputs=false"
-    ];
-    bazelBuildFlags = [
-      "--config=opt" # optimize using the flags set in the configure phase
-    ]
-    ++ lib.optionals (mklSupport) [ "--config=mkl" ];
-
-    bazelTarget = "//tensorflow/tools/pip_package:build_pip_package //tensorflow/tools/lib_package:libtensorflow";
-
-    fetchAttrs = {
-      # So that checksums don't depend on these.
-      TF_SYSTEM_LIBS = null;
-
-      # cudaSupport causes fetch of ncclArchive, resulting in different hashes
-      sha256 = if cudaSupport then
-        "1bi6aydidgi943hiqj0d279jbz2g173hvafdqla1ifw2qdsm73pb"
-      else
-        "0l5510fr8n22c4hx9llr0vqqhx9wlgkyxl55fxbixhssd0ai05r4";
-    };
-
-    buildAttrs = {
-      outputs = [ "out" "python" ];
-
-      preBuild = ''
-        patchShebangs .
-      '';
-
-      installPhase = ''
-        mkdir -p "$out"
-        tar -xf bazel-bin/tensorflow/tools/lib_package/libtensorflow.tar.gz -C "$out"
-        # Write pkgconfig file.
-        mkdir "$out/lib/pkgconfig"
-        cat > "$out/lib/pkgconfig/tensorflow.pc" << EOF
-        Name: TensorFlow
-        Version: ${version}
-        Description: Library for computation using data flow graphs for scalable machine learning
-        Requires:
-        Libs: -L$out/lib -ltensorflow
-        Cflags: -I$out/include/tensorflow
-        EOF
-
-        # build the source code, then copy it to $python (build_pip_package
-        # actually builds a symlink farm so we must dereference them).
-        bazel-bin/tensorflow/tools/pip_package/build_pip_package --src "$PWD/dist"
-        cp -Lr "$PWD/dist" "$python"
-      '';
-
-      postFixup = lib.optionalString cudaSupport ''
-        find $out -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do
-          addOpenGLRunpath "$lib"
-        done
-      '';
-    };
-
-    meta = with stdenv.lib; {
-      description = "Computation using data flow graphs for scalable machine learning";
-      homepage = "http://tensorflow.org";
-      license = licenses.asl20;
-      maintainers = with maintainers; [ jyp abbradar ];
-      platforms = with platforms; linux ++ darwin;
-      # The py2 build fails due to some issue importing protobuf. Possibly related to the fix in
-      # https://github.com/akesandgren/easybuild-easyblocks/commit/1f2e517ddfd1b00a342c6abb55aef3fd93671a2b
-      broken = !(xlaSupport -> cudaSupport) || !isPy3k;
-    };
-  };
-
-in buildPythonPackage {
-  inherit version pname;
-  disabled = isPy27 || (pythonAtLeast "3.8");
-
-  src = bazel-build.python;
-
-  # Upstream has a pip hack that results in bin/tensorboard being in both tensorflow
-  # and the propagated input tensorflow-tensorboard, which causes environment collisions.
-  # Another possibility would be to have tensorboard only in the buildInputs
-  # https://github.com/tensorflow/tensorflow/blob/v1.7.1/tensorflow/tools/pip_package/setup.py#L79
-  postInstall = ''
-    rm $out/bin/tensorboard
-  '';
-
-  setupPyGlobalFlags = [ "--project_name ${pname}" ];
-
-  # tensorflow/tools/pip_package/setup.py
-  propagatedBuildInputs = [
-    absl-py
-    astor
-    gast
-    google-pasta
-    keras-applications
-    keras-preprocessing
-    numpy
-    six
-    protobuf
-    tensorflow-estimator_1
-    termcolor
-    wrapt
-    grpcio
-    opt-einsum
-  ] ++ lib.optionals (!isPy3k) [
-    mock
-    future
-    functools32
-  ] ++ lib.optionals (pythonOlder "3.4") [
-    backports_weakref enum34
-  ] ++ lib.optionals withTensorboard [
-    tensorflow-tensorboard_1
-  ];
-
-  nativeBuildInputs = lib.optional cudaSupport addOpenGLRunpath;
-
-  postFixup = lib.optionalString cudaSupport ''
-    find $out -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do
-      addOpenGLRunpath "$lib"
-    done
-  '';
-
-  # Actual tests are slow and impure.
-  # TODO try to run them anyway
-  # TODO better test (files in tensorflow/tools/ci_build/builds/*test)
-  checkPhase = ''
-    ${python.interpreter} <<EOF
-    # A simple "Hello world"
-    import tensorflow as tf
-    hello = tf.constant("Hello, world!")
-    sess = tf.Session()
-    sess.run(hello)
-
-    # Fit a simple model to random data
-    import numpy as np
-    np.random.seed(0)
-    tf.random.set_random_seed(0)
-    model = tf.keras.models.Sequential([
-        tf.keras.layers.Dense(1, activation="linear")
-    ])
-    model.compile(optimizer="sgd", loss="mse")
-
-    x = np.random.uniform(size=(1,1))
-    y = np.random.uniform(size=(1,))
-    model.fit(x, y, epochs=1)
-
-    # regression test for #77626
-    from tensorflow.contrib import tensor_forest
-    EOF
-  '';
-
-  passthru = {
-    deps = bazel-build.deps;
-    libtensorflow = bazel-build.out;
-  };
-
-  meta = bazel-build.meta // {
-    broken = gast.version != "0.3.2";
-  };
-}
diff --git a/pkgs/development/python-modules/tensorflow/1/lift-gast-restriction.patch b/pkgs/development/python-modules/tensorflow/1/lift-gast-restriction.patch
deleted file mode 100644
index 30861d923417..000000000000
--- a/pkgs/development/python-modules/tensorflow/1/lift-gast-restriction.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/tensorflow/tools/pip_package/setup.py b/tensorflow/tools/pip_package/setup.py
-index 992f2eae22..d9386f9b13 100644
---- a/tensorflow/tools/pip_package/setup.py
-+++ b/tensorflow/tools/pip_package/setup.py
-@@ -54,7 +54,7 @@ REQUIRED_PACKAGES = [
-     'enum34 >= 1.1.6;python_version<"3.4"',
-     # functools comes with python3, need to install the backport for python2
-     'functools32 >= 3.2.3;python_version<"3"',
--    'gast == 0.2.2',
-+    'gast >= 0.2.2',
-     'google_pasta >= 0.1.6',
-     'keras_applications >= 1.0.8',
-     'keras_preprocessing >= 1.0.5',
diff --git a/pkgs/development/python-modules/tensorflow/1/prefetcher.sh b/pkgs/development/python-modules/tensorflow/1/prefetcher.sh
deleted file mode 100755
index d590fb0f1732..000000000000
--- a/pkgs/development/python-modules/tensorflow/1/prefetcher.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env bash
-
-version=1.14.0
-hashfile=binary-hashes.nix
-rm -f $hashfile
-echo "{" >> $hashfile
-echo "version = \"$version\";" >> $hashfile
-for sys in "linux" "mac"; do
-    for tfpref in "cpu/tensorflow" "gpu/tensorflow_gpu"; do
-        for pykind in "py2-none-any" "py3-none-any" "cp27-none-linux_x86_64" "cp35-cp35m-linux_x86_64" "cp36-cp36m-linux_x86_64" "cp37-cp37m-linux_x86_64"; do
-            if [ $sys == "mac" ]; then
-               [[ $pykind =~ py.* ]] && [[ $tfpref =~ cpu.* ]]
-               result=$?
-               pyver=${pykind:2:1}
-               flavour=cpu
-            else
-               [[ $pykind =~ .*linux.* ]]
-               result=$?
-               pyver=${pykind:2:2}
-               flavour=${tfpref:0:3}
-            fi
-            if [ $result == 0 ]; then
-                url=https://storage.googleapis.com/tensorflow/$sys/$tfpref-$version-$pykind.whl
-                hash=$(nix-prefetch-url $url)
-                echo "${sys}_py_${pyver}_${flavour} = {" >> $hashfile
-                echo "  url = \"$url\";" >> $hashfile
-                echo "  sha256 = \"$hash\";" >> $hashfile
-                echo "};" >> $hashfile
-            fi
-        done
-    done
-done
-echo "}" >> $hashfile
diff --git a/pkgs/development/python-modules/tensorflow/2/bin.nix b/pkgs/development/python-modules/tensorflow/bin.nix
index 8dd282666a75..8dd282666a75 100644
--- a/pkgs/development/python-modules/tensorflow/2/bin.nix
+++ b/pkgs/development/python-modules/tensorflow/bin.nix
diff --git a/pkgs/development/python-modules/tensorflow/2/binary-hashes.nix b/pkgs/development/python-modules/tensorflow/binary-hashes.nix
index 90848e93273f..90848e93273f 100644
--- a/pkgs/development/python-modules/tensorflow/2/binary-hashes.nix
+++ b/pkgs/development/python-modules/tensorflow/binary-hashes.nix
diff --git a/pkgs/development/python-modules/tensorflow/cuda-10.2-no-bin2c-path.patch b/pkgs/development/python-modules/tensorflow/cuda-10.2-no-bin2c-path.patch
deleted file mode 100644
index 25f1ba7a5518..000000000000
--- a/pkgs/development/python-modules/tensorflow/cuda-10.2-no-bin2c-path.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/third_party/nccl/build_defs.bzl.tpl
-+++ b/third_party/nccl/build_defs.bzl.tpl
-@@ -113,7 +113,6 @@ def _device_link_impl(ctx):
-             "--cmdline=--compile-only",
-             "--link",
-             "--compress-all",
--            "--bin2c-path=%s" % bin2c.dirname,
-             "--create=%s" % tmp_fatbin.path,
-             "--embedded-fatbin=%s" % fatbin_h.path,
-         ] + images,
diff --git a/pkgs/development/python-modules/tensorflow/2/default.nix b/pkgs/development/python-modules/tensorflow/default.nix
index 68c983c05941..8d859920c792 100644
--- a/pkgs/development/python-modules/tensorflow/2/default.nix
+++ b/pkgs/development/python-modules/tensorflow/default.nix
@@ -72,7 +72,7 @@ let
 
   tfFeature = x: if x then "1" else "0";
 
-  version = "2.3.1";
+  version = "2.3.2";
   variant = if cudaSupport then "-gpu" else "";
   pname = "tensorflow${variant}";
 
@@ -103,12 +103,12 @@ let
       owner = "tensorflow";
       repo = "tensorflow";
       rev = "v${version}";
-      sha256 = "1lvmrqfnwzh24fl5rdkksiqfv2bn0ld5gvzq1z57rphfkf0zg996";
+      sha256 = "sha256-ncwIkqLDqrB33pB9/FTlBklsIJUEvnDUmyAeUfufCFs=";
     };
 
     patches = [
       # Fixes for NixOS jsoncpp
-      ../system-jsoncpp.patch
+      ./system-jsoncpp.patch
 
       ./relax-dependencies.patch
 
@@ -236,6 +236,9 @@ let
       rm -f .bazelversion
     '';
 
+    # https://github.com/tensorflow/tensorflow/pull/39470
+    NIX_CFLAGS_COMPILE = [ "-Wno-stringop-truncation" ];
+
     preConfigure = let
       opt_flags = []
         ++ lib.optionals sse42Support ["-msse4.2"]
@@ -281,9 +284,9 @@ let
 
       # cudaSupport causes fetch of ncclArchive, resulting in different hashes
       sha256 = if cudaSupport then
-        "11blnw3ghp1kdi9hh9pdqa4qni9ysc3nk9iqqk9bg4dlr9zl1yld"
+        "sha256-lEdPA9vhYO6vd5FgPMbFp2PkRvDBurPidYsxtJLXcbQ="
       else
-        "1kkghhwhl8frs68kv28r408lps7mpgq1xvq6hc3k0j35asv1g2kc";
+        "sha256-ZEY/bWo5M3Juw1x3CwhXYXZHD4q5LzWDlhgXnh4P95U=";
     };
 
     buildAttrs = {
diff --git a/pkgs/development/python-modules/tensorflow/no-saved-proto.patch b/pkgs/development/python-modules/tensorflow/no-saved-proto.patch
deleted file mode 100644
index ead112f8ddd6..000000000000
--- a/pkgs/development/python-modules/tensorflow/no-saved-proto.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/tensorflow/cc/saved_model/BUILD b/tensorflow/cc/saved_model/BUILD
-index 8626ed0087..27deb34387 100644
---- a/tensorflow/cc/saved_model/BUILD
-+++ b/tensorflow/cc/saved_model/BUILD
-@@ -49,9 +49,6 @@ cc_library(
-         # tf_lib depending on the build platform.
-         "//tensorflow/core:lib",
-         "//tensorflow/core:protos_all_cc",
--    ]) + if_mobile([
--        # Mobile-friendly SavedModel proto. See go/portable-proto for more info.
--        "//tensorflow/core:saved_model_portable_proto",
-     ]) + if_android([
-         "//tensorflow/core:android_tensorflow_lib",
-     ]) + if_ios([
diff --git a/pkgs/development/python-modules/tensorflow/2/prefetcher.sh b/pkgs/development/python-modules/tensorflow/prefetcher.sh
index abb0faac2834..abb0faac2834 100755
--- a/pkgs/development/python-modules/tensorflow/2/prefetcher.sh
+++ b/pkgs/development/python-modules/tensorflow/prefetcher.sh
diff --git a/pkgs/development/python-modules/tensorflow/2/relax-dependencies.patch b/pkgs/development/python-modules/tensorflow/relax-dependencies.patch
index fc11a04cbdc5..fc11a04cbdc5 100644
--- a/pkgs/development/python-modules/tensorflow/2/relax-dependencies.patch
+++ b/pkgs/development/python-modules/tensorflow/relax-dependencies.patch
diff --git a/pkgs/development/python-modules/trezor_agent/default.nix b/pkgs/development/python-modules/trezor_agent/default.nix
index 82cb14b31cb1..fa9c11e95def 100644
--- a/pkgs/development/python-modules/trezor_agent/default.nix
+++ b/pkgs/development/python-modules/trezor_agent/default.nix
@@ -24,6 +24,9 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ setuptools trezor libagent ecdsa ed25519 mnemonic keepkey semver wheel pinentry ];
 
+  doCheck = false;
+  pythonImportsCheck = [ "libagent" ];
+
   meta = with stdenv.lib; {
     description = "Using Trezor as hardware SSH agent";
     homepage = "https://github.com/romanz/trezor-agent";
diff --git a/pkgs/development/python-modules/typesystem/default.nix b/pkgs/development/python-modules/typesystem/default.nix
index bfaed58b13fb..e993363769a8 100644
--- a/pkgs/development/python-modules/typesystem/default.nix
+++ b/pkgs/development/python-modules/typesystem/default.nix
@@ -2,7 +2,7 @@
 , buildPythonPackage
 , fetchFromGitHub
 , isPy27
-, pytest
+, pytestCheckHook
 , pytestcov
 , jinja2
 , pyyaml
@@ -26,14 +26,11 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    pytest
+    pytestCheckHook
     pytestcov
   ];
 
-  # for some reason jinja2 not picking up forms directory (1% of tests)
-  checkPhase = ''
-    pytest --ignore=tests/test_forms.py
-  '';
+  disabledTests = [ "test_to_json_schema_complex_regular_expression" ];
 
   meta = with lib; {
     description = "A type system library for Python";
diff --git a/pkgs/development/python-modules/uvicorn/default.nix b/pkgs/development/python-modules/uvicorn/default.nix
index 55511be4926c..36e8b12929e0 100644
--- a/pkgs/development/python-modules/uvicorn/default.nix
+++ b/pkgs/development/python-modules/uvicorn/default.nix
@@ -1,4 +1,5 @@
 { stdenv
+, lib
 , buildPythonPackage
 , fetchFromGitHub
 , click
@@ -7,21 +8,26 @@
 , uvloop
 , websockets
 , wsproto
-, pytest
+, pytestCheckHook
+, pytest-mock
+, pyyaml
 , requests
+, trustme
+, typing-extensions
 , isPy27
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "uvicorn";
-  version = "0.11.5";
+  version = "0.13.2";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "encode";
     repo = pname;
     rev = version;
-    sha256 = "0cf0vw6kzxwlkvk5gw85wv3kg1kdil0wkq3s7rmxpvrk6gjk8jvq";
+    sha256 = "04zgmp9z46k72ay6cz7plga6d3w3a6x41anabm7ramp7jdqf6na9";
   };
 
   propagatedBuildInputs = [
@@ -31,25 +37,33 @@ buildPythonPackage rec {
     uvloop
     websockets
     wsproto
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    typing-extensions
   ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "h11==0.8.*" "h11" \
-      --replace "httptools==0.0.13" "httptools"
-  '';
-
-  checkInputs = [ pytest requests ];
+  checkInputs = [
+    pytestCheckHook
+    pytest-mock
+    pyyaml
+    requests
+    trustme
+  ];
 
   doCheck = !stdenv.isDarwin;
 
-  # watchgod required the watchgod package, which isn't available in nixpkgs
-  checkPhase = ''
-    pytest --ignore=tests/supervisors/test_watchgodreload.py \
-      -k 'not test_supported_upgrade_request and not test_invalid_upgrade[WSProtocol]'
-  '';
+  __darwinAllowLocalNetworking = true;
+
+  pytestFlagsArray = [
+    # watchgod required the watchgod package, which isn't available in nixpkgs
+    "--ignore=tests/supervisors/test_reload.py"
+  ];
+
+  disabledTests = [
+    "test_supported_upgrade_request"
+    "test_invalid_upgrade"
+  ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://www.uvicorn.org/";
     description = "The lightning-fast ASGI server";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/voluptuous/default.nix b/pkgs/development/python-modules/voluptuous/default.nix
index 4d5b5d48fda5..7c5c99a0bec4 100644
--- a/pkgs/development/python-modules/voluptuous/default.nix
+++ b/pkgs/development/python-modules/voluptuous/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "voluptuous";
-  version = "0.12.0";
+  version = "0.12.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1p5j3fgbpqj31fajkaisdrz10ah9667sijz4kp3m0sbgw6ag4kis";
+    sha256 = "0js4avmhmmys78z376xk1w9305hq5nad8zqrnksgmpc1j90p4db6";
   };
 
   checkInputs = [ nose ];
diff --git a/pkgs/development/python-modules/wasmer/default.nix b/pkgs/development/python-modules/wasmer/default.nix
new file mode 100644
index 000000000000..e8307365574c
--- /dev/null
+++ b/pkgs/development/python-modules/wasmer/default.nix
@@ -0,0 +1,73 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, maturin
+, buildPythonPackage
+, isPy38
+, python
+}:
+let
+  pname = "wasmer";
+  version = "1.0.0-beta1";
+
+  wheel = rustPlatform.buildRustPackage rec {
+    name = "${pname}-${version}-py${python.version}";
+
+    src = fetchFromGitHub {
+      owner = "wasmerio";
+      repo = "wasmer-python";
+      rev = version;
+      sha256 = "0302lcfjlw7nz18nf86z6swhhpp1qnpwcsm2fj4avl22rsv0h78j";
+    };
+
+    cargoSha256 = "0d83dniijjq8rc4fcwj6ja5x4hxh187afnqfd8c9fzb8nx909a0v";
+
+    nativeBuildInputs = [ maturin python ];
+
+    preBuild = ''
+      cd packages/api
+    '';
+
+    buildPhase = ''
+      runHook preBuild
+      maturin build --release --manylinux off --strip
+      runHook postBuild
+    '';
+
+    postBuild = ''
+      cd ../..
+    '';
+
+    doCheck = false;
+
+    installPhase = ''
+      runHook preInstall
+      install -Dm644 -t $out target/wheels/*.whl
+      runHook postInstall
+    '';
+  };
+
+in
+buildPythonPackage rec {
+  inherit pname version;
+  # we can only support one python version because the cargo hash changes with the python version
+  disabled = !isPy38;
+
+  format = "wheel";
+  src = wheel;
+
+  unpackPhase = ''
+    mkdir -p dist
+    cp $src/*.whl dist
+  '';
+
+  pythonImportsCheck = [ "wasmer" ];
+
+  meta = with lib; {
+    description = "Python extension to run WebAssembly binaries";
+    homepage = "https://github.com/wasmerio/wasmer-python";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/winacl/default.nix b/pkgs/development/python-modules/winacl/default.nix
new file mode 100644
index 000000000000..c08c5541a61a
--- /dev/null
+++ b/pkgs/development/python-modules/winacl/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "winacl";
+  version = "0.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "05xhdhbvzs1hcd8lxmdr9mpr6ifx5flhlvk6jr0qi6h25imhqclp";
+  };
+
+  # Project doesn't have tests
+  doCheck = false;
+  pythonImportsCheck = [ "winacl" ];
+
+  meta = with lib; {
+    description = "Python module for ACL/ACE/Security descriptor manipulation";
+    homepage = "https://github.com/skelsec/winacl";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/winsspi/default.nix b/pkgs/development/python-modules/winsspi/default.nix
new file mode 100644
index 000000000000..02156ba17e50
--- /dev/null
+++ b/pkgs/development/python-modules/winsspi/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, minikerberos
+, pythonAtLeast
+}:
+
+buildPythonPackage rec {
+  pname = "winsspi";
+  version = "0.0.9";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1q8hr8l8d9jxyp55qsrlkyhdhqjc0n18ajzms7hf1xkhdl7rrbd2";
+  };
+  propagatedBuildInputs = [ minikerberos ];
+
+  # Project doesn't have tests
+  doCheck = false;
+  pythonImportsCheck = [ "winsspi" ];
+
+  meta = with lib; {
+    description = "Python module for ACL/ACE/Security descriptor manipulation";
+    homepage = "https://github.com/skelsec/winsspi";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/xlib/default.nix b/pkgs/development/python-modules/xlib/default.nix
index 599abf1974cd..30a30232088e 100644
--- a/pkgs/development/python-modules/xlib/default.nix
+++ b/pkgs/development/python-modules/xlib/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "xlib";
-  version = "0.28";
+  version = "0.29";
 
   src = fetchFromGitHub {
     owner = "python-xlib";
     repo = "python-xlib";
     rev = version;
-    sha256 = "13551vi65034pjf2g7zkw5dyjqcjfyk32a640g5jr055ssf0bjkc";
+    sha256 = "sha256-zOG1QzRa5uN36Ngv8i5s3mq+VIoRzxFj5ltUbKdonJ0=";
   };
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/ydiff/default.nix b/pkgs/development/python-modules/ydiff/default.nix
index 822bb40783e9..3b9cf6530a65 100644
--- a/pkgs/development/python-modules/ydiff/default.nix
+++ b/pkgs/development/python-modules/ydiff/default.nix
@@ -24,6 +24,6 @@ buildPythonPackage rec {
     '';
     homepage = "https://github.com/ymattw/ydiff";
     license = licenses.bsd3;
-    maintainers = [ maintainers.limeytexan ];
+    maintainers = teams.deshaw.members;
   };
 }
diff --git a/pkgs/development/python-modules/zeroconf/default.nix b/pkgs/development/python-modules/zeroconf/default.nix
index a8715a2133c3..72d6d48f9779 100644
--- a/pkgs/development/python-modules/zeroconf/default.nix
+++ b/pkgs/development/python-modules/zeroconf/default.nix
@@ -1,4 +1,5 @@
-{ lib
+{ stdenv
+, lib
 , buildPythonPackage
 , fetchPypi
 , ifaddr
@@ -29,7 +30,10 @@ buildPythonPackage rec {
     "test_launch_and_close_v4_v6"
     "test_launch_and_close_v6_only"
     "test_integration_with_listener_ipv6"
+  ] ++ lib.optionals stdenv.isDarwin [
+    "test_lots_of_names"
   ];
+  __darwinAllowLocalNetworking = true;
 
   pythonImportsCheck = [ "zeroconf" ];
 
diff --git a/pkgs/development/python-modules/zha-quirks/default.nix b/pkgs/development/python-modules/zha-quirks/default.nix
index 0c6ac7dbf499..752d2eeda8d6 100644
--- a/pkgs/development/python-modules/zha-quirks/default.nix
+++ b/pkgs/development/python-modules/zha-quirks/default.nix
@@ -1,19 +1,27 @@
-{ lib, buildPythonPackage, fetchPypi
-, aiohttp, zigpy, conftest, asynctest
-, pytestCheckHook }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, aiohttp
+, zigpy
+, conftest
+, asynctest
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "zha-quirks";
-  version = "0.0.47";
+  version = "0.0.51";
+
+  src = fetchFromGitHub {
+    owner = "zigpy";
+    repo = "zha-device-handlers";
+    rev = version;
+    sha256 = "14v01kclf096ax88cd6ckfs8gcffqissli9vpr0wfzli08afmbi9";
+  };
 
   propagatedBuildInputs = [ aiohttp zigpy ];
   checkInputs = [ pytestCheckHook conftest asynctest ];
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "bf7dbd5d1c1a3849b059e62afcef248b6955f5ceef78f87201ae2fc8420738de";
-  };
-
   meta = with lib; {
     description = "ZHA Device Handlers are custom quirks implementations for Zigpy";
     homepage = "https://github.com/dmulcahey/zha-device-handlers";
diff --git a/pkgs/development/python-modules/zigpy-deconz/default.nix b/pkgs/development/python-modules/zigpy-deconz/default.nix
index 12964652752f..d9c7854bf984 100644
--- a/pkgs/development/python-modules/zigpy-deconz/default.nix
+++ b/pkgs/development/python-modules/zigpy-deconz/default.nix
@@ -1,20 +1,29 @@
-{ stdenv, buildPythonPackage, fetchPypi
-, pyserial, pyserial-asyncio, zigpy
-, pytest, pytest-asyncio, asynctest }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pyserial
+, pyserial-asyncio
+, zigpy
+, pytestCheckHook
+, pytest-asyncio
+, asynctest
+}:
 
 buildPythonPackage rec {
   pname = "zigpy-deconz";
-  version = "0.11.0";
+  version = "0.11.1";
 
-  propagatedBuildInputs = [ pyserial pyserial-asyncio zigpy ];
-  checkInputs = [ pytest pytest-asyncio asynctest ];
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "a2263f8bc5807ebac55bb665eca553b514384ce270b66f83df02c39184193020";
+  src = fetchFromGitHub {
+    owner = "zigpy";
+    repo = pname;
+    rev = version;
+    sha256 = "1p9mdsfc200iyszppcflazzfwqg4v8nqqwqsx114nip5km7a5s37";
   };
 
-  meta = with stdenv.lib; {
+  propagatedBuildInputs = [ pyserial pyserial-asyncio zigpy ];
+  checkInputs = [ pytestCheckHook pytest-asyncio asynctest ];
+
+  meta = with lib; {
     description = "Library which communicates with Deconz radios for zigpy";
     homepage = "https://github.com/zigpy/zigpy-deconz";
     license = licenses.gpl3Plus;
diff --git a/pkgs/development/python-modules/zigpy-zigate/default.nix b/pkgs/development/python-modules/zigpy-zigate/default.nix
index 018017c89a4c..5ebb17dd498b 100644
--- a/pkgs/development/python-modules/zigpy-zigate/default.nix
+++ b/pkgs/development/python-modules/zigpy-zigate/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "zigpy-zigate";
-  version = "0.7.3";
+  version = "0.7.4";
   # https://github.com/Martiusweb/asynctest/issues/152
   # broken by upstream python bug with asynctest and
   # is used exclusively by home-assistant with python 3.8
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "zigpy";
     repo = "zigpy-zigate";
     rev = version;
-    sha256 = "068v8n8yimmpnwqcdz5m9g35z1x0dir478cbc1s1nyhw1xn50vg1";
+    sha256 = "0xl8qgljvmypi602f52m89iv9pcrzsdal3jw619vrcavp40rc04d";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/zigpy-znp/default.nix b/pkgs/development/python-modules/zigpy-znp/default.nix
index 9b8e65e23d03..01b3e9c6137a 100644
--- a/pkgs/development/python-modules/zigpy-znp/default.nix
+++ b/pkgs/development/python-modules/zigpy-znp/default.nix
@@ -45,6 +45,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  disabledTests = [
+    # zigpy-znp was too slow to sync up with the zigpy 0.29 release and has API breakage, remove >0.3.0
+    "test_force_remove"
+  ];
+
   meta = with stdenv.lib; {
     description = "A library for zigpy which communicates with TI ZNP radios";
     homepage = "https://github.com/zha-ng/zigpy-znp";
diff --git a/pkgs/development/python-modules/zigpy/default.nix b/pkgs/development/python-modules/zigpy/default.nix
index 54f0df340169..483c239ae5d0 100644
--- a/pkgs/development/python-modules/zigpy/default.nix
+++ b/pkgs/development/python-modules/zigpy/default.nix
@@ -1,5 +1,6 @@
 { lib
 , aiohttp
+, aiosqlite
 , asynctest
 , buildPythonPackage
 , crccheck
@@ -14,17 +15,18 @@
 
 buildPythonPackage rec {
   pname = "zigpy";
-  version = "0.26.0";
+  version = "0.29.0";
 
   src = fetchFromGitHub {
     owner = "zigpy";
     repo = "zigpy";
     rev = version;
-    sha256 = "ba8Ru6RCbFOHhctFtklnrxVD3uEpxF4XDvO5RMgXPBs=";
+    sha256 = "1r4i2ya9f241rls9mi24dksx4srrzi8agshnqy12rclxlh7qb1aw";
   };
 
   propagatedBuildInputs = [
     aiohttp
+    aiosqlite
     crccheck
     pycrypto
     pycryptodome
diff --git a/pkgs/development/r-modules/default.nix b/pkgs/development/r-modules/default.nix
index 292653d75e51..9eb5ffb52cc2 100644
--- a/pkgs/development/r-modules/default.nix
+++ b/pkgs/development/r-modules/default.nix
@@ -380,6 +380,7 @@ let
     rmutil = lib.optionals stdenv.isDarwin [ pkgs.libiconv ];
     robustbase = lib.optionals stdenv.isDarwin [ pkgs.libiconv ];
     SparseM = lib.optionals stdenv.isDarwin [ pkgs.libiconv ];
+    hexbin = lib.optionals stdenv.isDarwin [ pkgs.libiconv ];
     svKomodo = [ pkgs.which ];
     nat = [ pkgs.which ];
     nat_templatebrains = [ pkgs.which ];
diff --git a/pkgs/development/tools/buildah/default.nix b/pkgs/development/tools/buildah/default.nix
index e69e35442b3f..a680dd097fe6 100644
--- a/pkgs/development/tools/buildah/default.nix
+++ b/pkgs/development/tools/buildah/default.nix
@@ -14,13 +14,13 @@
 
 buildGoModule rec {
   pname = "buildah";
-  version = "1.18.0";
+  version = "1.19.0";
 
   src = fetchFromGitHub {
     owner = "containers";
     repo = "buildah";
     rev = "v${version}";
-    sha256 = "0kn31y5g7269mjaw5ddfsiaan93s62i8zzxg4xl01dg3dkkadwc4";
+    sha256 = "15ps4z41r8inyg0g1k8s9s3hkbnrl942w0n3957bv8g8gjihww0f";
   };
 
   outputs = [ "out" "man" ];
diff --git a/pkgs/development/tools/buildkit/default.nix b/pkgs/development/tools/buildkit/default.nix
index 00a285c67d02..30a013dac11c 100644
--- a/pkgs/development/tools/buildkit/default.nix
+++ b/pkgs/development/tools/buildkit/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   pname = "buildkit";
-  version = "0.8.0";
+  version = "0.8.1";
 
   goPackagePath = "github.com/moby/buildkit";
   subPackages = [ "cmd/buildctl" ] ++ stdenv.lib.optionals stdenv.isLinux [ "cmd/buildkitd" ];
@@ -11,7 +11,7 @@ buildGoPackage rec {
     owner = "moby";
     repo = "buildkit";
     rev = "v${version}";
-    sha256 = "0qcgq93wj77i912xqhwrzkzaqz608ilczfn5kcsrf9jk2m1gnx7m";
+    sha256 = "0lqfz097nyb6q6bn5mmfg6vl1nmgb6k4lmwxc8anza6zp8qh7wif";
   };
 
   buildFlagsArray = [ "-ldflags=-s -w -X ${goPackagePath}/version.Version=${version} -X ${goPackagePath}/version.Revision=${src.rev}" ];
diff --git a/pkgs/development/tools/conftest/default.nix b/pkgs/development/tools/conftest/default.nix
index 1f12afe3f748..7f2e65fd9918 100644
--- a/pkgs/development/tools/conftest/default.nix
+++ b/pkgs/development/tools/conftest/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "conftest";
-  version = "0.22.0";
+  version = "0.23.0";
 
   src = fetchFromGitHub {
     owner = "open-policy-agent";
     repo = "conftest";
     rev = "v${version}";
-    sha256 = "1mjfb39h6z8dbrqxlvrvnzid7la6wj709kx7dva4126i84cmpyf1";
+    sha256 = "sha256-mSiZjpsFZfkM522f1WcJgBexiBS0o3uf1g94pjhgGVU=";
   };
 
-  vendorSha256 = "08c4brwvjp9f7cpzywxns6dkhl3jzq9ckyvphm2jnm2kxmkawbbn";
+  vendorSha256 = "sha256-iCIuEvwkbfBZ858yZZyVf5om6YLsGKRvzFmYzJBrRf4=";
 
   doCheck = false;
 
diff --git a/pkgs/development/tools/database/timescaledb-tune/default.nix b/pkgs/development/tools/database/timescaledb-tune/default.nix
index 2079925049dd..787c7c3131b2 100644
--- a/pkgs/development/tools/database/timescaledb-tune/default.nix
+++ b/pkgs/development/tools/database/timescaledb-tune/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "timescaledb-tune";
-  version = "0.9.0";
+  version = "0.10.0";
 
   src = fetchFromGitHub {
     owner = "timescale";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0vncwwvw7y6g3crd4n5vvd6jwdsa8vsvsmfwy5mad4j6lix09ajx";
+    sha256 = "0vrbbswmg6z3n012mqd1jasqk01navypzv5m00r6c9bxj72hgcxl";
   };
 
   vendorSha256 = "0hbpprbxs19fcar7xcy42kn9yfzhal2zsv5pml9ghiv2s61yns4z";
diff --git a/pkgs/development/tools/fedora-coreos-config-transpiler/default.nix b/pkgs/development/tools/fedora-coreos-config-transpiler/default.nix
index b53b03d26e36..d50491692ef3 100644
--- a/pkgs/development/tools/fedora-coreos-config-transpiler/default.nix
+++ b/pkgs/development/tools/fedora-coreos-config-transpiler/default.nix
@@ -4,13 +4,13 @@ with lib;
 
 buildGoModule rec {
   pname = "fcct";
-  version = "0.8.0";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "coreos";
     repo = "fcct";
     rev = "v${version}";
-    sha256 = "0w3vhfjpmpahb08fp6czixhlqhk6izglmwdpj2l19ksz8fc8aq54";
+    sha256 = "0kdsnsp9nzkkfwakcx64md66yz2k7cpw8bkhdv798yirbrqprgp6";
   };
 
   vendorSha256 = null;
diff --git a/pkgs/development/tools/golangci-lint/default.nix b/pkgs/development/tools/golangci-lint/default.nix
index ddcbbb127585..e91f8cfeb769 100644
--- a/pkgs/development/tools/golangci-lint/default.nix
+++ b/pkgs/development/tools/golangci-lint/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "golangci-lint";
-  version = "1.33.0";
+  version = "1.35.0";
 
   src = fetchFromGitHub {
     owner = "golangci";
     repo = "golangci-lint";
     rev = "v${version}";
-    sha256 = "1yqq5jai0npkjzfk2h121nv3pgqfqi5c3vs22wyv6qwnlia97yin";
+    sha256 = "03pg8qfysjdbpxzdcs4y5cn0gshr5k53p7rjqak7q8vdykva60s1";
   };
 
-  vendorSha256 = "1kmsfsa5z41mjxi15a4zra1qhskm5pjcfbk09c99xbv27pin5yrj";
+  vendorSha256 = "18dgx087jixwcfcab546qhy5qq1n1ahrsr7i7d7d3v9vklslics8";
 
   doCheck = false;
 
diff --git a/pkgs/development/tools/gopls/default.nix b/pkgs/development/tools/gopls/default.nix
index 49b8c8a3306f..983b36feb240 100644
--- a/pkgs/development/tools/gopls/default.nix
+++ b/pkgs/development/tools/gopls/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "gopls";
-  version = "0.5.3";
+  version = "0.6.2";
 
   src = fetchgit {
     rev = "gopls/v${version}";
     url = "https://go.googlesource.com/tools";
-    sha256 = "04dkrvk5190kyfa9swxpl0m3xq9g90qp8j7yxhi87wyb8giqbll2";
+    sha256 = "0hbfxdsbfz044vw8zp223ni6m7gcwqpff4xpjiqmihhgga5849lf";
   };
 
   modRoot = "gopls";
-  vendorSha256 = "0ml8n6qnq9nprn7kv138qy0i2q8qawzd0lhh3v2qw39j0aj5fb7z";
+  vendorSha256 = "0r9bffgi9ainqrl4kraqy71rgwdfcbqmv3srs12h3xvj0w5ya5rz";
 
   doCheck = false;
 
diff --git a/pkgs/development/tools/haskell/haskell-language-server/default.nix b/pkgs/development/tools/haskell/haskell-language-server/default.nix
index e33d731dae43..44cd234da722 100644
--- a/pkgs/development/tools/haskell/haskell-language-server/default.nix
+++ b/pkgs/development/tools/haskell/haskell-language-server/default.nix
@@ -2,21 +2,23 @@
 , bytestring, containers, data-default, deepseq, directory, extra
 , fetchgit, filepath, floskell, fourmolu, ghc, ghc-boot-th
 , ghc-paths, ghcide, gitrev, hashable, haskell-lsp, hie-bios
-, hls-explicit-imports-plugin, hls-hlint-plugin, hls-plugin-api
-, hls-retrie-plugin, hls-tactics-plugin, hslogger, hspec
-, hspec-core, lens, lsp-test, mtl, optparse-applicative
+, hls-class-plugin, hls-eval-plugin, hls-explicit-imports-plugin
+, hls-hlint-plugin, hls-plugin-api, hls-retrie-plugin
+, hls-tactics-plugin, hslogger, hspec, hspec-core
+, hspec-expectations, lens, lsp-test, mtl, optparse-applicative
 , optparse-simple, ormolu, process, regex-tdfa, safe-exceptions
 , shake, stdenv, stm, stylish-haskell, tasty, tasty-ant-xml
 , tasty-expected-failure, tasty-golden, tasty-hunit, tasty-rerun
-, temporary, text, time, transformers, unordered-containers, yaml
+, temporary, text, transformers, unordered-containers, with-utf8
+, yaml
 }:
 mkDerivation {
   pname = "haskell-language-server";
-  version = "0.7.1.0";
+  version = "0.8.0.0";
   src = fetchgit {
     url = "https://github.com/haskell/haskell-language-server.git";
-    sha256 = "0gkzvjx4dgf53yicinqjshlj80gznx5khb62i7g3kqjr85iy0raa";
-    rev = "e4f677e1780fe85a02b99a09404a0a3c3ab5ce7c";
+    sha256 = "0p6fqs07lajbi2g1wf4w3j5lvwknnk58n12vlg48cs4iz25gp588";
+    rev = "eb58f13f7b8e4f9bc771af30ff9fd82dc4309ff5";
     fetchSubmodules = true;
   };
   isLibrary = true;
@@ -29,19 +31,20 @@ mkDerivation {
   executableHaskellDepends = [
     aeson base binary brittany bytestring containers deepseq directory
     extra filepath floskell fourmolu ghc ghc-boot-th ghc-paths ghcide
-    gitrev hashable haskell-lsp hie-bios hls-explicit-imports-plugin
-    hls-hlint-plugin hls-plugin-api hls-retrie-plugin
-    hls-tactics-plugin hslogger lens mtl optparse-applicative
-    optparse-simple ormolu process regex-tdfa safe-exceptions shake
-    stylish-haskell temporary text time transformers
-    unordered-containers
+    gitrev hashable haskell-lsp hie-bios hls-class-plugin
+    hls-eval-plugin hls-explicit-imports-plugin hls-hlint-plugin
+    hls-plugin-api hls-retrie-plugin hls-tactics-plugin hslogger lens
+    mtl optparse-applicative optparse-simple ormolu process regex-tdfa
+    safe-exceptions shake stylish-haskell temporary text transformers
+    unordered-containers with-utf8
   ];
   testHaskellDepends = [
     aeson base blaze-markup bytestring containers data-default
     directory extra filepath haskell-lsp hie-bios hls-plugin-api
-    hslogger hspec hspec-core lens lsp-test process stm tasty
-    tasty-ant-xml tasty-expected-failure tasty-golden tasty-hunit
-    tasty-rerun temporary text transformers unordered-containers yaml
+    hslogger hspec hspec-core hspec-expectations lens lsp-test process
+    stm tasty tasty-ant-xml tasty-expected-failure tasty-golden
+    tasty-hunit tasty-rerun temporary text transformers
+    unordered-containers yaml
   ];
   testToolDepends = [ ghcide ];
   homepage = "https://github.com/haskell/haskell-language-server#readme";
diff --git a/pkgs/development/tools/haskell/haskell-language-server/hls-class-plugin.nix b/pkgs/development/tools/haskell/haskell-language-server/hls-class-plugin.nix
new file mode 100644
index 000000000000..86c29c7be390
--- /dev/null
+++ b/pkgs/development/tools/haskell/haskell-language-server/hls-class-plugin.nix
@@ -0,0 +1,21 @@
+{ mkDerivation, aeson, base, containers, fetchgit, ghc
+, ghc-exactprint, ghcide, haskell-lsp, hls-plugin-api, lens, shake
+, stdenv, text, transformers, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-class-plugin";
+  version = "0.1.0.0";
+  src = fetchgit {
+    url = "https://github.com/haskell/haskell-language-server.git";
+    sha256 = "0p6fqs07lajbi2g1wf4w3j5lvwknnk58n12vlg48cs4iz25gp588";
+    rev = "eb58f13f7b8e4f9bc771af30ff9fd82dc4309ff5";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/plugins/hls-class-plugin; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    aeson base containers ghc ghc-exactprint ghcide haskell-lsp
+    hls-plugin-api lens shake text transformers unordered-containers
+  ];
+  description = "Explicit imports plugin for Haskell Language Server";
+  license = stdenv.lib.licenses.asl20;
+}
diff --git a/pkgs/development/tools/haskell/haskell-language-server/hls-eval-plugin.nix b/pkgs/development/tools/haskell/haskell-language-server/hls-eval-plugin.nix
new file mode 100644
index 000000000000..20ebc5f5e898
--- /dev/null
+++ b/pkgs/development/tools/haskell/haskell-language-server/hls-eval-plugin.nix
@@ -0,0 +1,27 @@
+{ mkDerivation, aeson, base, containers, deepseq, Diff, directory
+, extra, fetchgit, filepath, ghc, ghc-boot-th, ghc-paths, ghcide
+, hashable, haskell-lsp, haskell-lsp-types, hls-plugin-api
+, parser-combinators, pretty-simple, QuickCheck, safe-exceptions
+, shake, stdenv, temporary, text, time, transformers
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-eval-plugin";
+  version = "0.1.0.0";
+  src = fetchgit {
+    url = "https://github.com/haskell/haskell-language-server.git";
+    sha256 = "0p6fqs07lajbi2g1wf4w3j5lvwknnk58n12vlg48cs4iz25gp588";
+    rev = "eb58f13f7b8e4f9bc771af30ff9fd82dc4309ff5";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/plugins/hls-eval-plugin; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    aeson base containers deepseq Diff directory extra filepath ghc
+    ghc-boot-th ghc-paths ghcide hashable haskell-lsp haskell-lsp-types
+    hls-plugin-api parser-combinators pretty-simple QuickCheck
+    safe-exceptions shake temporary text time transformers
+    unordered-containers
+  ];
+  description = "Eval plugin for Haskell Language Server";
+  license = stdenv.lib.licenses.asl20;
+}
diff --git a/pkgs/development/tools/haskell/haskell-language-server/hls-explicit-imports-plugin.nix b/pkgs/development/tools/haskell/haskell-language-server/hls-explicit-imports-plugin.nix
index 7c3b22cf1d0a..bad0e82194cd 100644
--- a/pkgs/development/tools/haskell/haskell-language-server/hls-explicit-imports-plugin.nix
+++ b/pkgs/development/tools/haskell/haskell-language-server/hls-explicit-imports-plugin.nix
@@ -7,8 +7,8 @@ mkDerivation {
   version = "0.1.0.0";
   src = fetchgit {
     url = "https://github.com/haskell/haskell-language-server.git";
-    sha256 = "0gkzvjx4dgf53yicinqjshlj80gznx5khb62i7g3kqjr85iy0raa";
-    rev = "e4f677e1780fe85a02b99a09404a0a3c3ab5ce7c";
+    sha256 = "0p6fqs07lajbi2g1wf4w3j5lvwknnk58n12vlg48cs4iz25gp588";
+    rev = "eb58f13f7b8e4f9bc771af30ff9fd82dc4309ff5";
     fetchSubmodules = true;
   };
   postUnpack = "sourceRoot+=/plugins/hls-explicit-imports-plugin; echo source root reset to $sourceRoot";
diff --git a/pkgs/development/tools/haskell/haskell-language-server/hls-hlint-plugin.nix b/pkgs/development/tools/haskell/haskell-language-server/hls-hlint-plugin.nix
index 8bfcf034bd2b..ecbe141fd724 100644
--- a/pkgs/development/tools/haskell/haskell-language-server/hls-hlint-plugin.nix
+++ b/pkgs/development/tools/haskell/haskell-language-server/hls-hlint-plugin.nix
@@ -10,8 +10,8 @@ mkDerivation {
   version = "0.1.0.0";
   src = fetchgit {
     url = "https://github.com/haskell/haskell-language-server.git";
-    sha256 = "0gkzvjx4dgf53yicinqjshlj80gznx5khb62i7g3kqjr85iy0raa";
-    rev = "e4f677e1780fe85a02b99a09404a0a3c3ab5ce7c";
+    sha256 = "0p6fqs07lajbi2g1wf4w3j5lvwknnk58n12vlg48cs4iz25gp588";
+    rev = "eb58f13f7b8e4f9bc771af30ff9fd82dc4309ff5";
     fetchSubmodules = true;
   };
   postUnpack = "sourceRoot+=/plugins/hls-hlint-plugin; echo source root reset to $sourceRoot";
diff --git a/pkgs/development/tools/haskell/haskell-language-server/hls-retrie-plugin.nix b/pkgs/development/tools/haskell/haskell-language-server/hls-retrie-plugin.nix
index 7a44903f9870..5a769e7a719b 100644
--- a/pkgs/development/tools/haskell/haskell-language-server/hls-retrie-plugin.nix
+++ b/pkgs/development/tools/haskell/haskell-language-server/hls-retrie-plugin.nix
@@ -8,8 +8,8 @@ mkDerivation {
   version = "0.1.0.0";
   src = fetchgit {
     url = "https://github.com/haskell/haskell-language-server.git";
-    sha256 = "0gkzvjx4dgf53yicinqjshlj80gznx5khb62i7g3kqjr85iy0raa";
-    rev = "e4f677e1780fe85a02b99a09404a0a3c3ab5ce7c";
+    sha256 = "0p6fqs07lajbi2g1wf4w3j5lvwknnk58n12vlg48cs4iz25gp588";
+    rev = "eb58f13f7b8e4f9bc771af30ff9fd82dc4309ff5";
     fetchSubmodules = true;
   };
   postUnpack = "sourceRoot+=/plugins/hls-retrie-plugin; echo source root reset to $sourceRoot";
diff --git a/pkgs/development/tools/haskell/haskell-language-server/hls-tactics-plugin.nix b/pkgs/development/tools/haskell/haskell-language-server/hls-tactics-plugin.nix
index 326e8ce0cdf9..b5819b705b62 100644
--- a/pkgs/development/tools/haskell/haskell-language-server/hls-tactics-plugin.nix
+++ b/pkgs/development/tools/haskell/haskell-language-server/hls-tactics-plugin.nix
@@ -10,8 +10,8 @@ mkDerivation {
   version = "0.5.1.0";
   src = fetchgit {
     url = "https://github.com/haskell/haskell-language-server.git";
-    sha256 = "0gkzvjx4dgf53yicinqjshlj80gznx5khb62i7g3kqjr85iy0raa";
-    rev = "e4f677e1780fe85a02b99a09404a0a3c3ab5ce7c";
+    sha256 = "0p6fqs07lajbi2g1wf4w3j5lvwknnk58n12vlg48cs4iz25gp588";
+    rev = "eb58f13f7b8e4f9bc771af30ff9fd82dc4309ff5";
     fetchSubmodules = true;
   };
   postUnpack = "sourceRoot+=/plugins/tactics; echo source root reset to $sourceRoot";
diff --git a/pkgs/development/tools/haskell/haskell-language-server/update.sh b/pkgs/development/tools/haskell/haskell-language-server/update.sh
index f14a97221ff8..aaccf8b9b9fe 100755
--- a/pkgs/development/tools/haskell/haskell-language-server/update.sh
+++ b/pkgs/development/tools/haskell/haskell-language-server/update.sh
@@ -41,11 +41,10 @@ hls_new_version=$hls_latest_release
 
 echo "Updating haskell-language-server from old version $hls_old_version to new version $hls_new_version."
 echo "Running cabal2nix and outputting to ${hls_derivation_file}..."
-
 cabal2nix --revision "$hls_new_version" "https://github.com/haskell/haskell-language-server.git" > "$hls_derivation_file"
 cabal2nix --revision "$hls_new_version" --subpath plugins/tactics "https://github.com/haskell/haskell-language-server.git" > "${script_dir}/hls-tactics-plugin.nix"
-cabal2nix --revision "$hls_new_version" --subpath plugins/hls-hlint-plugin "https://github.com/haskell/haskell-language-server.git" > "${script_dir}/hls-hlint-plugin.nix"
-cabal2nix --revision "$hls_new_version" --subpath plugins/hls-explicit-imports-plugin "https://github.com/haskell/haskell-language-server.git" > "${script_dir}/hls-explicit-imports-plugin.nix"
-cabal2nix --revision "$hls_new_version" --subpath plugins/hls-retrie-plugin "https://github.com/haskell/haskell-language-server.git" > "${script_dir}/hls-retrie-plugin.nix"
+for plugin in "hls-hlint-plugin" "hls-explicit-imports-plugin" "hls-retrie-plugin" "hls-class-plugin" "hls-eval-plugin"; do
+   cabal2nix --revision "$hls_new_version" --subpath plugins/$plugin "https://github.com/haskell/haskell-language-server.git" > "${script_dir}/$plugin.nix"
+done
 
 echo "Finished."
diff --git a/pkgs/development/tools/kustomize/default.nix b/pkgs/development/tools/kustomize/default.nix
index 79c484586111..4235912c24f0 100644
--- a/pkgs/development/tools/kustomize/default.nix
+++ b/pkgs/development/tools/kustomize/default.nix
@@ -2,9 +2,9 @@
 
 buildGoModule rec {
   pname = "kustomize";
-  version = "3.8.7";
+  version = "3.9.1";
   # rev is the 3.8.7 commit, mainly for kustomize version command output
-  rev = "ad092cc7a91c07fdf63a2e4b7f13fa588a39af4f";
+  rev = "7439f1809e5ccd4677ed52be7f98f2ad75122a93";
 
   buildFlagsArray = let t = "sigs.k8s.io/kustomize/api/provenance"; in
     ''
@@ -17,13 +17,13 @@ buildGoModule rec {
     owner = "kubernetes-sigs";
     repo = pname;
     rev = "kustomize/v${version}";
-    sha256 = "1942cyaj6knf8mc3q2vcz6rqqc6lxdd6nikry9m0idk5l1b09x1m";
+    sha256 = "1v8yfiwzg84bpdh3k3h5v2smxx0dymq717r2mh3pjz3nifkg3ilm";
   };
 
   # avoid finding test and development commands
   sourceRoot = "source/kustomize";
 
-  vendorSha256 = "0y77ykfcbn4l0x85c3hb1lgjpy64kimx3s1qkn38gpmi4lphvkkl";
+  vendorSha256 = "1nixkmyqzq7387rwam0bsa6qjd40k5p15npq0iz1z2k1ws8pvrg6";
 
   meta = with lib; {
     description = "Customization of kubernetes YAML configurations";
@@ -34,6 +34,6 @@ buildGoModule rec {
     '';
     homepage = "https://github.com/kubernetes-sigs/kustomize";
     license = licenses.asl20;
-    maintainers = with maintainers; [ carlosdagos vdemeester periklis zaninime ];
+    maintainers = with maintainers; [ carlosdagos vdemeester periklis zaninime Chili-Man];
   };
 }
diff --git a/pkgs/development/tools/misc/cflow/default.nix b/pkgs/development/tools/misc/cflow/default.nix
index 1215c29c4776..8c271bd76732 100644
--- a/pkgs/development/tools/misc/cflow/default.nix
+++ b/pkgs/development/tools/misc/cflow/default.nix
@@ -45,13 +45,6 @@ stdenv.mkDerivation rec {
 
     maintainers = [ maintainers.vrthra ];
 
-    /* On Darwin, build fails with:
-
-       Undefined symbols:
-         "_argp_program_version", referenced from:
-             _argp_program_version$non_lazy_ptr in libcflow.a(argp-parse.o)
-       ld: symbol(s) not found
-     */
-    platforms = platforms.linux;
+    platforms = platforms.linux ++ platforms.darwin;
   };
 }
diff --git a/pkgs/development/tools/misc/editorconfig-checker/default.nix b/pkgs/development/tools/misc/editorconfig-checker/default.nix
index 401bbdbee6ef..5edbdba4141e 100644
--- a/pkgs/development/tools/misc/editorconfig-checker/default.nix
+++ b/pkgs/development/tools/misc/editorconfig-checker/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "editorconfig-checker";
-  version = "2.2.0";
+  version = "2.3.1";
 
   src = fetchFromGitHub {
     owner = "editorconfig-checker";
     repo = "editorconfig-checker";
     rev = version;
-    sha256 = "18gz94h2x1z6g6r7v9cdixkbcaigd7cl08af6smlkaa89j0aki32";
+    sha256 = "0c7mainlwn3pd9q6i1f82m5znv8m6fs15zq7nrbm04fy554h0pzz";
   };
 
   vendorSha256 = "1z4j8vm9mnhjhhmhlj0ycs8b1wpm7lhsfqjnk7w8gfapvj3yfk6h";
diff --git a/pkgs/development/tools/misc/lttng-ust/default.nix b/pkgs/development/tools/misc/lttng-ust/default.nix
index 1b59045c6fd2..ba3930642b19 100644
--- a/pkgs/development/tools/misc/lttng-ust/default.nix
+++ b/pkgs/development/tools/misc/lttng-ust/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, liburcu, python }:
+{ stdenv, fetchurl, liburcu, python3 }:
 
 # NOTE:
 #   ./configure ...
@@ -20,12 +20,12 @@ stdenv.mkDerivation rec {
     sha256 = "0ddwk0nl28bkv2xb78gz16a2bvlpfbjmzwfbgwf5p1cq46dyvy86";
   };
 
-  buildInputs = [ python ];
+  buildInputs = [ python3 ];
 
   preConfigure = ''
     patchShebangs .
   '';
-  
+
   propagatedBuildInputs = [ liburcu ];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/tools/misc/nimlsp/default.nix b/pkgs/development/tools/misc/nimlsp/default.nix
new file mode 100644
index 000000000000..5795fca457d1
--- /dev/null
+++ b/pkgs/development/tools/misc/nimlsp/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitHub, srcOnly, nim }:
+let
+  astpatternmatching = fetchFromGitHub {
+    owner = "krux02";
+    repo = "ast-pattern-matching";
+    rev = "87f7d163421af5a4f5e5cb6da7b93278e6897e96";
+    sha256 = "19mb5bb6riia8380p5dpc3q0vwgrj958dd6p7vw8vkvwiqrzg6zq";
+  };
+
+  jsonschema = fetchFromGitHub {
+    owner = "PMunch";
+    repo = "jsonschema";
+    rev = "7b41c03e3e1a487d5a8f6b940ca8e764dc2cbabf";
+    sha256 = "1js64jqd854yjladxvnylij4rsz7212k31ks541pqrdzm6hpblbz";
+  };
+in
+stdenv.mkDerivation rec {
+  pname = "nimlsp";
+  version = "0.2.6";
+
+  src = fetchFromGitHub {
+    owner = "PMunch";
+    repo = "nimlsp";
+    rev = "v${version}";
+    sha256 = "13kw3zjh0iqymwqxwhyj8jz6hgswwahf1rjd6iad7c6gcwrrg6yl";
+  };
+
+  nativeBuildInputs = [ nim ];
+
+  buildPhase = ''
+    export HOME=$TMPDIR
+    nim -d:release -p:${astpatternmatching}/src -p:${jsonschema}/src \
+      c --threads:on -d:nimcore -d:nimsuggest -d:debugCommunication \
+      -d:debugLogging -d:explicitSourcePath=${srcOnly nim.unwrapped} -d:tempDir=/tmp src/nimlsp
+  '';
+
+  installPhase = ''
+    install -Dt $out/bin src/nimlsp
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Language Server Protocol implementation for Nim";
+    homepage = "https://github.com/PMunch/nimlsp";
+    license = licenses.mit;
+    platforms = nim.meta.platforms;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/pkgs/development/tools/misc/terraform-ls/default.nix b/pkgs/development/tools/misc/terraform-ls/default.nix
index 220042079fd4..498508d091fc 100644
--- a/pkgs/development/tools/misc/terraform-ls/default.nix
+++ b/pkgs/development/tools/misc/terraform-ls/default.nix
@@ -2,15 +2,15 @@
 
 buildGoModule rec {
   pname = "terraform-ls";
-  version = "0.11.0";
+  version = "0.12.0";
 
   src = fetchFromGitHub {
     owner = "hashicorp";
     repo = pname;
     rev = "v${version}";
-    sha256 = "XOKaNpYR31lKpA33+7WU2KYjgEx4g6gpp3IAjWtb3Zk=";
+    sha256 = "w9PLKLFjKehtub1LbVX9TbvKkj/S1t0MwZIZurF2x18=";
   };
-  vendorSha256 = "8NdeCD558r0tV+ZR4MvLl5CzeNj8cUGtqwvJ2ZhS7mI=";
+  vendorSha256 = "J8ovcUeQsb58Bq/EM9mvYqtuDY1bXTEVCC9/AH+UttU=";
 
   # tests fail in sandbox mode because of trying to download stuff from releases.hashicorp.com
   doCheck = false;
diff --git a/pkgs/development/tools/misc/texlab/default.nix b/pkgs/development/tools/misc/texlab/default.nix
index 8b734bdd1c18..787f6e3c33ca 100644
--- a/pkgs/development/tools/misc/texlab/default.nix
+++ b/pkgs/development/tools/misc/texlab/default.nix
@@ -1,4 +1,5 @@
-{ stdenv
+{ lib
+, stdenv
 , rustPlatform
 , fetchFromGitHub
 , installShellFiles
@@ -7,28 +8,28 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "texlab";
-  version = "2.2.0";
+  version = "2.2.1";
 
   src = fetchFromGitHub {
     owner = "latex-lsp";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0iydkbmx9z7xpwaif0han5jvy9xh1afmfyldl7fcyy4r906dsmhx";
+    sha256 = "1hiy8klig7j0if4iqbb0432iqsnds00aya6p4xmm913qfpsyh6cq";
   };
 
-  cargoSha256 = "0iibjh2ll181j69vld1awvjgyv3xwmq0abh10651la4k4jpppx46";
+  cargoSha256 = "0pf8j202rpglcxamsr8r3wwmgsdgih24m52vh1q85l93vj7jkm1v";
 
   nativeBuildInputs = [ installShellFiles ];
 
-  buildInputs = stdenv.lib.optionals stdenv.isDarwin [ Security ];
+  buildInputs = lib.optionals stdenv.isDarwin [ Security ];
 
   postInstall = ''
     installManPage texlab.1
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An implementation of the Language Server Protocol for LaTeX";
-    homepage = "https://texlab.netlify.com/";
+    homepage = "https://texlab.netlify.app";
     license = licenses.mit;
     maintainers = with maintainers; [ doronbehar metadark ];
   };
diff --git a/pkgs/development/tools/ocaml/camlp5/default.nix b/pkgs/development/tools/ocaml/camlp5/default.nix
index 5fb76a526016..6d68a320a910 100644
--- a/pkgs/development/tools/ocaml/camlp5/default.nix
+++ b/pkgs/development/tools/ocaml/camlp5/default.nix
@@ -1,20 +1,26 @@
-{ stdenv, fetchzip, ocaml }:
+{ stdenv, fetchzip, ocaml, perl }:
+
+if stdenv.lib.versionOlder ocaml.version "4.02"
+then throw "camlp5 is not available for OCaml ${ocaml.version}"
+else
 
 stdenv.mkDerivation {
 
-  name = "camlp5-7.13";
+  name = "camlp5-7.14";
 
   src = fetchzip {
-    url = "https://github.com/camlp5/camlp5/archive/rel713.tar.gz";
-    sha256 = "1d9spy3f5ahixm8nxxk086kpslzva669a5scn49am0s7vx4i71kp";
+    url = "https://github.com/camlp5/camlp5/archive/rel714.tar.gz";
+    sha256 = "1dd68bisbpqn5lq2pslm582hxglcxnbkgfkwhdz67z4w9d5nvr7w";
   };
 
-  buildInputs = [ ocaml ];
+  buildInputs = [ ocaml perl ];
 
   prefixKey = "-prefix ";
 
-  preConfigure = "configureFlagsArray=(--strict" +
-                  " --libdir $out/lib/ocaml/${ocaml.version}/site-lib)";
+  preConfigure = ''
+    configureFlagsArray=(--strict --libdir $out/lib/ocaml/${ocaml.version}/site-lib)
+    patchShebangs ./config/find_stuffversion.pl
+  '';
 
   buildFlags = [ "world.opt" ];
 
diff --git a/pkgs/development/tools/pry/Gemfile.lock b/pkgs/development/tools/pry/Gemfile.lock
index d76845bc05a7..87f7e81fbe3a 100644
--- a/pkgs/development/tools/pry/Gemfile.lock
+++ b/pkgs/development/tools/pry/Gemfile.lock
@@ -1,11 +1,11 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    coderay (1.1.2)
-    method_source (0.9.2)
-    pry (0.12.2)
-      coderay (~> 1.1.0)
-      method_source (~> 0.9.0)
+    coderay (1.1.3)
+    method_source (1.0.0)
+    pry (0.13.1)
+      coderay (~> 1.1)
+      method_source (~> 1.0)
 
 PLATFORMS
   ruby
diff --git a/pkgs/development/tools/pry/gemset.nix b/pkgs/development/tools/pry/gemset.nix
index e779c48aebfc..05e5e1dcfb85 100644
--- a/pkgs/development/tools/pry/gemset.nix
+++ b/pkgs/development/tools/pry/gemset.nix
@@ -4,20 +4,20 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
+      sha256 = "0jvxqxzply1lwp7ysn94zjhh57vc14mcshw1ygw14ib8lhc00lyw";
       type = "gem";
     };
-    version = "1.1.2";
+    version = "1.1.3";
   };
   method_source = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
+      sha256 = "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp";
       type = "gem";
     };
-    version = "0.9.2";
+    version = "1.0.0";
   };
   pry = {
     dependencies = ["coderay" "method_source"];
@@ -25,9 +25,9 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69";
+      sha256 = "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk";
       type = "gem";
     };
-    version = "0.12.2";
+    version = "0.13.1";
   };
 }
\ No newline at end of file
diff --git a/pkgs/development/tools/purescript/spago/spago.nix b/pkgs/development/tools/purescript/spago/spago.nix
index 43f8e66d8704..ed0ce05843bb 100644
--- a/pkgs/development/tools/purescript/spago/spago.nix
+++ b/pkgs/development/tools/purescript/spago/spago.nix
@@ -1,35 +1,36 @@
 { mkDerivation, aeson, aeson-pretty, ansi-terminal, async-pool
-, base, bower-json, bytestring, Cabal, containers, dhall, directory
-, either, exceptions, extra, fetchgit, file-embed, filepath, foldl
-, fsnotify, generic-lens, github, Glob, hpack, hspec
-, hspec-discover, hspec-megaparsec, http-client, http-conduit
-, http-types, lens-family-core, megaparsec, mtl, network-uri
-, open-browser, optparse-applicative, prettyprinter, process
-, QuickCheck, retry, rio, rio-orphans, safe, semver-range, stdenv
-, stm, stringsearch, tar, template-haskell, temporary, text, time
-, transformers, turtle, unliftio, unordered-containers, utf8-string
-, vector, versions, with-utf8, zlib
+, base, bower-json, bytestring, Cabal, containers, cryptonite
+, dhall, directory, either, exceptions, extra, fetchgit, file-embed
+, filepath, foldl, fsnotify, generic-lens, github, Glob, hpack
+, hspec, hspec-discover, hspec-megaparsec, http-client
+, http-conduit, http-types, lens-family-core, megaparsec, mtl
+, network-uri, open-browser, optparse-applicative, prettyprinter
+, process, QuickCheck, retry, rio, rio-orphans, safe, semver-range
+, stdenv, stm, stringsearch, tar, template-haskell, temporary, text
+, time, transformers, turtle, unliftio, unordered-containers
+, utf8-string, vector, versions, with-utf8, zlib
 }:
 mkDerivation {
   pname = "spago";
-  version = "0.18.0";
+  version = "0.19.0";
   src = fetchgit {
     url = "https://github.com/purescript/spago.git";
-    sha256 = "03ww7qhrggwsbm0kcnvcr3ifb8rm860ajimzr81isiw46ykwrl38";
-    rev = "a4d39c21cae2f2c6d43fa204853c8e17c72904d2";
+    sha256 = "182a9pkv64rbyqrig470cmql4ingf5vpxh11xkxqq2baxym3vwip";
+    rev = "960a310d6efca3bb40009eb06d88382e4670ccef";
     fetchSubmodules = true;
   };
   isLibrary = true;
   isExecutable = true;
   libraryHaskellDepends = [
     aeson aeson-pretty ansi-terminal async-pool base bower-json
-    bytestring Cabal containers dhall directory either exceptions
-    file-embed filepath foldl fsnotify generic-lens github Glob
-    http-client http-conduit http-types lens-family-core megaparsec mtl
-    network-uri open-browser optparse-applicative prettyprinter process
-    retry rio rio-orphans safe semver-range stm stringsearch tar
-    template-haskell temporary text time transformers turtle unliftio
-    unordered-containers utf8-string vector versions with-utf8 zlib
+    bytestring Cabal containers cryptonite dhall directory either
+    exceptions file-embed filepath foldl fsnotify generic-lens github
+    Glob http-client http-conduit http-types lens-family-core
+    megaparsec mtl network-uri open-browser optparse-applicative
+    prettyprinter process retry rio rio-orphans safe semver-range stm
+    stringsearch tar template-haskell temporary text time transformers
+    turtle unliftio unordered-containers utf8-string vector versions
+    with-utf8 zlib
   ];
   libraryToolDepends = [ hpack ];
   executableHaskellDepends = [ base text turtle with-utf8 ];
diff --git a/pkgs/development/tools/rubocop/Gemfile.lock b/pkgs/development/tools/rubocop/Gemfile.lock
index 6b6a3a995918..74ae51427a95 100644
--- a/pkgs/development/tools/rubocop/Gemfile.lock
+++ b/pkgs/development/tools/rubocop/Gemfile.lock
@@ -2,25 +2,25 @@ GEM
   remote: https://rubygems.org/
   specs:
     ast (2.4.1)
-    parallel (1.19.2)
-    parser (2.7.2.0)
+    parallel (1.20.1)
+    parser (3.0.0.0)
       ast (~> 2.4.1)
     rainbow (3.0.0)
-    regexp_parser (1.8.2)
+    regexp_parser (2.0.3)
     rexml (3.2.4)
-    rubocop (1.1.0)
+    rubocop (1.8.0)
       parallel (~> 1.10)
-      parser (>= 2.7.1.5)
+      parser (>= 3.0.0.0)
       rainbow (>= 2.2.2, < 4.0)
-      regexp_parser (>= 1.8)
+      regexp_parser (>= 1.8, < 3.0)
       rexml
-      rubocop-ast (>= 1.0.1)
+      rubocop-ast (>= 1.2.0, < 2.0)
       ruby-progressbar (~> 1.7)
-      unicode-display_width (>= 1.4.0, < 2.0)
-    rubocop-ast (1.1.0)
+      unicode-display_width (>= 1.4.0, < 3.0)
+    rubocop-ast (1.4.0)
       parser (>= 2.7.1.5)
-    ruby-progressbar (1.10.1)
-    unicode-display_width (1.7.0)
+    ruby-progressbar (1.11.0)
+    unicode-display_width (2.0.0)
 
 PLATFORMS
   ruby
diff --git a/pkgs/development/tools/rubocop/gemset.nix b/pkgs/development/tools/rubocop/gemset.nix
index c1f55f7aca27..e22424c1ae6b 100644
--- a/pkgs/development/tools/rubocop/gemset.nix
+++ b/pkgs/development/tools/rubocop/gemset.nix
@@ -14,10 +14,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "17b127xxmm2yqdz146qwbs57046kn0js1h8synv01dwqz2z1kp2l";
+      sha256 = "0055br0mibnqz0j8wvy20zry548dhkakws681bhj3ycb972awkzd";
       type = "gem";
     };
-    version = "1.19.2";
+    version = "1.20.1";
   };
   parser = {
     dependencies = ["ast"];
@@ -25,10 +25,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1f7gmm60yla325wlnd3qkxs59qm2y0aan8ljpg6k18rwzrrfil6z";
+      sha256 = "1jixakyzmy0j5c1rb0fjrrdhgnyryvrr6vgcybs14jfw09akv5ml";
       type = "gem";
     };
-    version = "2.7.2.0";
+    version = "3.0.0.0";
   };
   rainbow = {
     groups = ["default"];
@@ -45,10 +45,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0x4s82lgf0l71y3xc9gp4qxkrgx1kv8f6avdqd68l46ijbyvicdm";
+      sha256 = "0zm86k9q8m5jkcnpb1f93wsvc57saldfj8czxkx1aw031i95inip";
       type = "gem";
     };
-    version = "1.8.2";
+    version = "2.0.3";
   };
   rexml = {
     groups = ["default"];
@@ -66,10 +66,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1nw87ngw4a9r3dpgykb872zcm640m7k0nk17qv537fmss2hl8shl";
+      sha256 = "12arfnsj32126ps6mxbn7dwrw43cy70sq45rm0ib7qfrmhp5qyid";
       type = "gem";
     };
-    version = "1.1.0";
+    version = "1.8.0";
   };
   rubocop-ast = {
     dependencies = ["parser"];
@@ -77,29 +77,29 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0ami6n3vnpm9y5z6wd4c6y2infijajizjjwv8fq0wrcjvr3zivzz";
+      sha256 = "1qvfp567aprjgcwj757p55ynj0dx2b3c3hd76za9z3c43sphprcj";
       type = "gem";
     };
-    version = "1.1.0";
+    version = "1.4.0";
   };
   ruby-progressbar = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf";
+      sha256 = "02nmaw7yx9kl7rbaan5pl8x5nn0y4j5954mzrkzi9i3dhsrps4nc";
       type = "gem";
     };
-    version = "1.10.1";
+    version = "1.11.0";
   };
   unicode-display_width = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "06i3id27s60141x6fdnjn5rar1cywdwy64ilc59cz937303q3mna";
+      sha256 = "1bilbnc8j6jkb59lrf177i3p1pdyxll0n8400hzqr35vl3r3kv2m";
       type = "gem";
     };
-    version = "1.7.0";
+    version = "2.0.0";
   };
 }
\ No newline at end of file
diff --git a/pkgs/development/tools/tabnine/default.nix b/pkgs/development/tools/tabnine/default.nix
index 6c54e8f3c405..f18be619f267 100644
--- a/pkgs/development/tools/tabnine/default.nix
+++ b/pkgs/development/tools/tabnine/default.nix
@@ -1,17 +1,17 @@
-{ stdenv, lib, fetchurl }:
+{ stdenv, lib, fetchurl, unzip }:
 
 let
-  version = "3.1.1";
+  version = "3.2.63";
   src =
     if stdenv.hostPlatform.system == "x86_64-darwin" then
       fetchurl {
-        url = "https://update.tabnine.com/${version}/x86_64-apple-darwin/TabNine";
-        sha256 = "w+Ufy4pICfQmseKCeohEQIP0VD6YrkYTEn41HX40Zlw=";
+        url = "https://update.tabnine.com/bundles/${version}/x86_64-apple-darwin/TabNine.zip";
+        sha256 = "0y0wb3jdr2qk4k21c11w8c9a5fl0h2rm1wm7m8hqdywy4lz9ppgy";
       }
     else if stdenv.hostPlatform.system == "x86_64-linux" then
       fetchurl {
-        url = "https://update.tabnine.com/${version}/x86_64-unknown-linux-musl/TabNine";
-        sha256 = "hSltZWQz2BRFut0NDI4fS/N8XxFJaYGHRtV3llBVOY4=";
+        url = "https://update.tabnine.com/bundles/${version}/x86_64-unknown-linux-musl/TabNine.zip";
+        sha256 = "0zzk2w5azk5f0svjxlj2774x01xdflb767xxvbglj4223dgyx2x5";
       }
     else throw "Not supported on ${stdenv.hostPlatform.system}";
 in stdenv.mkDerivation rec {
@@ -20,10 +20,15 @@ in stdenv.mkDerivation rec {
   inherit version src;
 
   dontBuild = true;
-  dontUnpack = true;
+
+  # Work around the "unpacker appears to have produced no directories"
+  # case that happens when the archive doesn't have a subdirectory.
+  setSourceRoot = "sourceRoot=`pwd`";
+
+  nativeBuildInputs = [ unzip ];
 
   installPhase = ''
-    install -Dm755 $src $out/bin/TabNine
+    install -Dm755 TabNine $out/bin/TabNine
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/tools/turbogit/default.nix b/pkgs/development/tools/turbogit/default.nix
new file mode 100644
index 000000000000..68bd10683547
--- /dev/null
+++ b/pkgs/development/tools/turbogit/default.nix
@@ -0,0 +1,42 @@
+{ fetchFromGitHub, buildGoModule, lib, installShellFiles }:
+buildGoModule rec {
+  pname = "turbogit";
+  version = "1.2.0";
+
+  src = fetchFromGitHub {
+    owner = "b4nst";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-alVgXnsoC2nmUe6i/l0ttUjoXpKLHr0n/7p6WbIIGBU=";
+  };
+
+  vendorSha256 = "sha256-6fxbxpROYiNw5SYdQAIdy5NfqzOcFfAlJ+vTQyFtink=";
+
+  subPackages = [ "." ];
+
+  nativeBuildInputs = [ installShellFiles ];
+  postInstall = ''
+    # Move turbogit binary to tug
+    ln -s $out/bin/turbogit $out/bin/tug
+
+    # Generate completion files
+    mkdir -p share/completions
+    $out/bin/tug completion bash > share/completions/tug.bash
+    $out/bin/tug completion fish > share/completions/tug.fish
+    $out/bin/tug completion zsh > share/completions/tug.zsh
+
+    installShellCompletion share/completions/tug.{bash,fish,zsh}
+  '';
+
+  meta = with lib; {
+    description = "Keep your git workflow clean without headache.";
+    longDescription = ''
+      turbogit (tug) is a cli tool built to help you deal with your day-to-day git work.
+      turbogit enforces convention (e.g. The Conventional Commits) but tries to keep things simple and invisible for you.
+      turbogit is your friend.
+    '';
+    homepage = "https://b4nst.github.io/turbogit";
+    license = licenses.mit;
+    maintainers = [ maintainers.yusdacra ];
+  };
+}
diff --git a/pkgs/games/ckan/default.nix b/pkgs/games/ckan/default.nix
index a13ff8d66faf..2400f2fb5e85 100644
--- a/pkgs/games/ckan/default.nix
+++ b/pkgs/games/ckan/default.nix
@@ -1,44 +1,34 @@
-{ stdenv, fetchFromGitHub, makeWrapper, perl, mono, gtk2, curl }:
+{ stdenv, fetchurl, makeWrapper, mono, gtk2, curl }:
 
 stdenv.mkDerivation rec {
   pname = "ckan";
-  version = "1.16.1";
+  version = "1.29.2";
 
-  src = fetchFromGitHub {
-    owner = "KSP-CKAN";
-    repo = "CKAN";
-    rev = "v${version}";
-    sha256 = "0lfvl8w09lakz35szp5grfvhq8xx486f5igvj1m6azsql4n929lg";
+  src = fetchurl {
+    url = "https://github.com/KSP-CKAN/CKAN/releases/download/v${version}/ckan.exe";
+    sha256 = "10vd61mw2y7vmbnp6nd7b2sq22ixqd7zmd278z210w4njmvqn97h";
   };
 
-  buildInputs = [ makeWrapper perl mono ];
+  dontUnpack = true;
 
-  postPatch = ''
-    substituteInPlace bin/build \
-      --replace /usr/bin/perl ${perl}/bin/perl
-  '';
-
-  # Tests don't currently work, as they try to write into /var/empty.
-  doCheck = false;
-  checkTarget = "test";
+  buildInputs = [ makeWrapper mono ];
 
   libraries = stdenv.lib.makeLibraryPath [ gtk2 curl ];
 
+  buildPhase = "true";
+
   installPhase = ''
-    mkdir -p $out/bin
-    for exe in *.exe; do
-      install -m 0644 $exe $out/bin
-      makeWrapper ${mono}/bin/mono $out/bin/$(basename $exe .exe) \
-        --add-flags $out/bin/$exe \
-        --set LD_LIBRARY_PATH $libraries
-    done
+    install -m 644 -D $src $out/bin/ckan.exe
+    makeWrapper ${mono}/bin/mono $out/bin/ckan \
+      --add-flags $out/bin/ckan.exe \
+      --set LD_LIBRARY_PATH $libraries
   '';
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "Mod manager for Kerbal Space Program";
     homepage = "https://github.com/KSP-CKAN/CKAN";
-    license = stdenv.lib.licenses.mit;
-    maintainers = [ stdenv.lib.maintainers.Baughn ];
-    platforms = stdenv.lib.platforms.all;
-  };    
+    license = licenses.mit;
+    maintainers = with maintainers; [ Baughn ymarkus ];
+    platforms = platforms.all;
+  };
 }
diff --git a/pkgs/games/enyo-doom/default.nix b/pkgs/games/enyo-doom/default.nix
index 0158dc2b5318..7b6655d6464b 100644
--- a/pkgs/games/enyo-doom/default.nix
+++ b/pkgs/games/enyo-doom/default.nix
@@ -20,7 +20,7 @@ mkDerivation rec {
   meta = {
     homepage = "https://gitlab.com/sdcofer70/enyo-doom";
     description = "Frontend for Doom engines";
-    license = stdenv.lib.licenses.gpl2;
+    license = stdenv.lib.licenses.gpl3Plus;
     platforms = stdenv.lib.platforms.unix;
     maintainers = [ stdenv.lib.maintainers.tadfisher ];
   };
diff --git a/pkgs/games/factorio/versions.json b/pkgs/games/factorio/versions.json
index b4c905450355..f484d3304cb5 100644
--- a/pkgs/games/factorio/versions.json
+++ b/pkgs/games/factorio/versions.json
@@ -2,12 +2,12 @@
   "x86_64-linux": {
     "alpha": {
       "experimental": {
-        "name": "factorio_alpha_x64-1.1.5.tar.xz",
+        "name": "factorio_alpha_x64-1.1.8.tar.xz",
         "needsAuth": true,
-        "sha256": "17hm62mhldms41wv0vv2bzg8zg1mg7ga61h3yzw9dfvic661khmp",
+        "sha256": "1zvjmdmvp05yr8lln4hsa184hl115sv9xz1dwxa3cb827f5ndd6m",
         "tarDirectory": "x64",
-        "url": "https://factorio.com/get-download/1.1.5/alpha/linux64",
-        "version": "1.1.5"
+        "url": "https://factorio.com/get-download/1.1.8/alpha/linux64",
+        "version": "1.1.8"
       },
       "stable": {
         "name": "factorio_alpha_x64-1.0.0.tar.xz",
@@ -38,12 +38,12 @@
     },
     "headless": {
       "experimental": {
-        "name": "factorio_headless_x64-1.1.5.tar.xz",
+        "name": "factorio_headless_x64-1.1.8.tar.xz",
         "needsAuth": false,
-        "sha256": "1s4ajj8kkz1q5rivv2q6c8ii73nxa11g4fs6hic3r43l52n89ml1",
+        "sha256": "1j2nmm61c99qis8fkc1gp5i3fj3vmc2mfds7lw4gfr9kr956cjhf",
         "tarDirectory": "x64",
-        "url": "https://factorio.com/get-download/1.1.5/headless/linux64",
-        "version": "1.1.5"
+        "url": "https://factorio.com/get-download/1.1.8/headless/linux64",
+        "version": "1.1.8"
       },
       "stable": {
         "name": "factorio_headless_x64-1.0.0.tar.xz",
diff --git a/pkgs/games/sauerbraten/default.nix b/pkgs/games/sauerbraten/default.nix
index e1f482cc7d40..277c195d4424 100644
--- a/pkgs/games/sauerbraten/default.nix
+++ b/pkgs/games/sauerbraten/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   pname = "sauerbraten";
-  version = "2020-12-04";
+  version = "2020-12-27";
 
   src = fetchzip {
     url = "mirror://sourceforge/sauerbraten/sauerbraten_${builtins.replaceStrings [ "-" ] [ "_" ] version}_linux.tar.bz2";
-    sha256 = "1hknwpnvsakz6s7l7j1r5aqmgrzp4wcbn8yg8nxmvsddbhxdj1kc";
+    sha256 = "0llknzj23vx6f3y452by9c7wlhzclyq4bqi22qd52m3l916z2mn5";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/misc/drivers/hplip/default.nix b/pkgs/misc/drivers/hplip/default.nix
index b29463d61ddf..f1688a1b56fc 100644
--- a/pkgs/misc/drivers/hplip/default.nix
+++ b/pkgs/misc/drivers/hplip/default.nix
@@ -93,6 +93,12 @@ python3Packages.buildPythonApplication {
     # https://bugs.launchpad.net/hplip/+bug/1788706
     # https://bugs.launchpad.net/hplip/+bug/1787289
     ./image-processor.patch
+
+    # HPLIP's getSystemPPDs() function relies on searching for PPDs below common FHS
+    # paths, and hp-setup crashes if none of these paths actually exist (which they
+    # don't on NixOS).  Add the equivalent NixOS path, /var/lib/cups/path/share.
+    # See: https://github.com/NixOS/nixpkgs/issues/21796
+    ./hplip-3.20.11-nixos-cups-ppd-search-path.patch
   ];
 
   prePatch = ''
diff --git a/pkgs/misc/drivers/hplip/hplip-3.20.11-nixos-cups-ppd-search-path.patch b/pkgs/misc/drivers/hplip/hplip-3.20.11-nixos-cups-ppd-search-path.patch
new file mode 100644
index 000000000000..d26e13dd2d63
--- /dev/null
+++ b/pkgs/misc/drivers/hplip/hplip-3.20.11-nixos-cups-ppd-search-path.patch
@@ -0,0 +1,24 @@
+From: Bryan Gardiner <bog@khumba.net>
+Date: Sat, 9 Jan 2021 16:51:20 -0800
+Subject: [PATCH] Add NixOS CUPS PPD search path.
+
+---
+ base/g.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/base/g.py b/base/g.py
+index f73e23f..758f339 100644
+--- a/base/g.py
++++ b/base/g.py
+@@ -283,7 +283,7 @@ prop.max_message_len = 8192
+ prop.max_message_read = 65536
+ prop.read_timeout = 90
+ 
+-prop.ppd_search_path = '/usr/share;/usr/local/share;/usr/lib;/usr/local/lib;/usr/libexec;/opt;/usr/lib64'
++prop.ppd_search_path = '/var/lib/cups/path/share;/usr/share;/usr/local/share;/usr/lib;/usr/local/lib;/usr/libexec;/opt;/usr/lib64'
+ prop.ppd_search_pattern = 'HP-*.ppd.*'
+ prop.ppd_download_url = 'http://www.linuxprinting.org/ppd-o-matic.cgi'
+ prop.ppd_file_suffix = '-hpijs.ppd'
+-- 
+2.29.2
+
diff --git a/pkgs/misc/drivers/steamcontroller/default.nix b/pkgs/misc/drivers/steamcontroller/default.nix
index ca5607b53072..4877886d500d 100644
--- a/pkgs/misc/drivers/steamcontroller/default.nix
+++ b/pkgs/misc/drivers/steamcontroller/default.nix
@@ -21,10 +21,12 @@ buildPythonApplication {
   '';
 
   buildInputs = [ libusb1 ];
-  propagatedBuildInputs =
-    [ psutil python3Packages.libusb1 ]
+  propagatedBuildInputs = [ psutil python3Packages.libusb1 ]
     ++ lib.optionals GyroplotSupport [ pyqtgraph pyside ];
 
+  doCheck = false;
+  pythonImportsCheck = [ "steamcontroller" ];
+
   meta = with stdenv.lib; {
     description = "A standalone Steam controller driver";
     homepage    = "https://github.com/ynsta/steamcontroller";
diff --git a/pkgs/misc/tmux-plugins/default.nix b/pkgs/misc/tmux-plugins/default.nix
index 33bff019536c..e41427d89e59 100644
--- a/pkgs/misc/tmux-plugins/default.nix
+++ b/pkgs/misc/tmux-plugins/default.nix
@@ -290,6 +290,7 @@ in rec {
 
   onedark-theme = mkDerivation {
     pluginName = "onedark-theme";
+    rtpFilePath = "tmux-onedark-theme.tmux";
     version = "unstable-2020-06-07";
     src = fetchFromGitHub {
       owner = "odedlaz";
diff --git a/pkgs/misc/vim-plugins/generated.nix b/pkgs/misc/vim-plugins/generated.nix
index 4f24e88ca9e6..2ca2da67596c 100644
--- a/pkgs/misc/vim-plugins/generated.nix
+++ b/pkgs/misc/vim-plugins/generated.nix
@@ -65,12 +65,12 @@ let
 
   ale = buildVimPluginFrom2Nix {
     pname = "ale";
-    version = "2021-01-05";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "dense-analysis";
       repo = "ale";
-      rev = "7e4c125d38181a0e0d0c7883091e2fe683243ce4";
-      sha256 = "0ngmcdbsqxjc00c1jab0h3dic5q1l781bhih30m5xx8qylqhf4g2";
+      rev = "54dd731cf14c809ebcc9c21b41084a17c5411744";
+      sha256 = "1j3jndx2cl7dxw7ilai7dxi1vkgjzh24k2vl43adai87gl6jqqs5";
     };
     meta.homepage = "https://github.com/dense-analysis/ale/";
   };
@@ -87,6 +87,18 @@ let
     meta.homepage = "https://github.com/vim-scripts/align/";
   };
 
+  aniseed = buildVimPluginFrom2Nix {
+    pname = "aniseed";
+    version = "2020-12-21";
+    src = fetchFromGitHub {
+      owner = "Olical";
+      repo = "aniseed";
+      rev = "50adbc5ed5bb97b73b0b0c3241d9e62621ca59f9";
+      sha256 = "1wy5jd86273q7sxa50kv88flqdgmg9z2m4b6phpw3xnl5d1sj9f7";
+    };
+    meta.homepage = "https://github.com/Olical/aniseed/";
+  };
+
   ansible-vim = buildVimPluginFrom2Nix {
     pname = "ansible-vim";
     version = "2020-10-15";
@@ -233,12 +245,12 @@ let
 
   barbar-nvim = buildVimPluginFrom2Nix {
     pname = "barbar-nvim";
-    version = "2020-12-28";
+    version = "2021-01-05";
     src = fetchFromGitHub {
       owner = "romgrk";
       repo = "barbar.nvim";
-      rev = "383ffc0712c71481a068e49430321366c53585f2";
-      sha256 = "14s42n4nl94nygszihgji01dwviw1ykqylpm2akdgfhwv1nz1ljn";
+      rev = "e0b4935d5956025ab595195d935a5bac00f1a973";
+      sha256 = "0h723j5zhj8mzwghykd84rxdr0l4ngvyy692d6sl2zz940mvwlkw";
     };
     meta.homepage = "https://github.com/romgrk/barbar.nvim/";
   };
@@ -293,12 +305,12 @@ let
 
   brainfuck-vim = buildVimPluginFrom2Nix {
     pname = "brainfuck-vim";
-    version = "2021-01-04";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "fruit-in";
       repo = "brainfuck-vim";
-      rev = "4b85810e1e826dcbb9a38122d4c52e85e470e81a";
-      sha256 = "1q25w1v7kimq0cnjk8afy8ackfshhs25ra8w11l7qra3lrxkwj9b";
+      rev = "4e5344436f480d65d99c89d623e5564d71cdd0f7";
+      sha256 = "1p5kyy6z2nrnxdvwnpcvbd1xk9r0pqr3hayz3p7c2zi30rj0fdx5";
     };
     meta.homepage = "https://github.com/fruit-in/brainfuck-vim/";
   };
@@ -497,12 +509,12 @@ let
 
   coc-nvim = buildVimPluginFrom2Nix {
     pname = "coc-nvim";
-    version = "2021-01-04";
+    version = "2021-01-07";
     src = fetchFromGitHub {
       owner = "neoclide";
       repo = "coc.nvim";
-      rev = "5b4b18d2ed2b18870034c7ee853164e1274ab158";
-      sha256 = "0bgprss79nbwc3wd8yi0j90prxmh8saxswfpvpp3x8hilvwiyrrq";
+      rev = "5b8af3eaee714f2c390f2f8e83ea47b78d24eab8";
+      sha256 = "1x088m180wk6b0gk1xdw8crmrhp7s05yshj8nigqyhafm589a7vf";
     };
     meta.homepage = "https://github.com/neoclide/coc.nvim/";
   };
@@ -582,12 +594,12 @@ let
 
   completion-nvim = buildVimPluginFrom2Nix {
     pname = "completion-nvim";
-    version = "2021-01-05";
+    version = "2021-01-09";
     src = fetchFromGitHub {
       owner = "nvim-lua";
       repo = "completion-nvim";
-      rev = "a31127e97feaef9ef70499b1241d41579d42dba2";
-      sha256 = "17q5z9rkc64yx2fifna6wsw43iinjfwbijmfjlxxkhgwmlg5y9cx";
+      rev = "25dac52c4eb37bf28cc1b8fd6283b151db85e764";
+      sha256 = "1ljzva5zy1d5d5yfvpf57rjpfzp194rkf98arslns8i0as30kbmd";
     };
     meta.homepage = "https://github.com/nvim-lua/completion-nvim/";
   };
@@ -652,6 +664,18 @@ let
     meta.homepage = "https://github.com/Shougo/context_filetype.vim/";
   };
 
+  coq-vim = buildVimPluginFrom2Nix {
+    pname = "coq-vim";
+    version = "2013-01-16";
+    src = fetchFromGitHub {
+      owner = "jvoorhis";
+      repo = "coq.vim";
+      rev = "9b229f5872854dadfb8ba4b67a6a273f37eca4b8";
+      sha256 = "0hpfwcm8lvv831b7i27lw72nqxfy7jymq6a6g3xmf0ycb0l3pnky";
+    };
+    meta.homepage = "https://github.com/jvoorhis/coq.vim/";
+  };
+
   Coqtail = buildVimPluginFrom2Nix {
     pname = "Coqtail";
     version = "2021-01-03";
@@ -798,12 +822,12 @@ let
 
   defx-nvim = buildVimPluginFrom2Nix {
     pname = "defx-nvim";
-    version = "2021-01-05";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "defx.nvim";
-      rev = "f44e9486509482ae20c785d39be05581c3dbad15";
-      sha256 = "1s1qmn5v3ghy79da03pf805zdg8j5w0ybri3z36fr2y5s9k7mj4d";
+      rev = "a9259687391457c71fa8bcbf609ca83742b6d277";
+      sha256 = "0smlfvxdily3vz9i3vr0b5r3410zp5asf13cbjxxv219fqa3z22a";
     };
     meta.homepage = "https://github.com/Shougo/defx.nvim/";
   };
@@ -846,12 +870,12 @@ let
 
   denite-nvim = buildVimPluginFrom2Nix {
     pname = "denite-nvim";
-    version = "2020-12-29";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "denite.nvim";
-      rev = "7990823563392e4031cd474d3e90482329eef877";
-      sha256 = "0jzg4qcc50hhh3jfdhynddv5kr0yzh2f0ckzv0dmddx01p66nwcv";
+      rev = "f7667ec03c4cdef1b4d9a95521d1ee5866f3f2de";
+      sha256 = "19s3809kasiybv18q6q7c36bf43cq9ndq7z5zpqrxgg6kf3my2d8";
     };
     meta.homepage = "https://github.com/Shougo/denite.nvim/";
   };
@@ -1088,12 +1112,12 @@ let
 
   deoplete-nvim = buildVimPluginFrom2Nix {
     pname = "deoplete-nvim";
-    version = "2020-12-24";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "deoplete.nvim";
-      rev = "b098a5286e95c456d91eed3589a2850aae421219";
-      sha256 = "0y2ijzyn8jqpx5dkbglpa4ivsz6yml49xby7bbz6675rlcawlsq9";
+      rev = "0901b1886208a32880b92f22bf8f38a17e95045a";
+      sha256 = "0r66sjkgbbhgdalqnfyzy3ym3jiikyd10pi5236aqga75vysvk0s";
     };
     meta.homepage = "https://github.com/Shougo/deoplete.nvim/";
   };
@@ -1294,12 +1318,12 @@ let
 
   fern-vim = buildVimPluginFrom2Nix {
     pname = "fern-vim";
-    version = "2021-01-04";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "lambdalisue";
       repo = "fern.vim";
-      rev = "9783dff6ac69c4e99b78807b08912c4c34100e22";
-      sha256 = "141bifgf06bi43blw6wz7bdsb9l52iqxm9v7b609y49cz71z7n2c";
+      rev = "100764195f8cea2edf8a8c6a69a3cb707e35cf6d";
+      sha256 = "099mk22287zjgc0sy0v9vsw8l9ssa2rr56jasxpd6yswppafdrs7";
     };
     meta.homepage = "https://github.com/lambdalisue/fern.vim/";
   };
@@ -1401,14 +1425,26 @@ let
     meta.homepage = "https://github.com/shumphrey/fugitive-gitlab.vim/";
   };
 
+  fzf-lsp-nvim = buildVimPluginFrom2Nix {
+    pname = "fzf-lsp-nvim";
+    version = "2020-12-24";
+    src = fetchFromGitHub {
+      owner = "gfanto";
+      repo = "fzf-lsp.nvim";
+      rev = "de69b03c9feaa4b574e4a3e053a9a33467848227";
+      sha256 = "09kpcmnvzgsdbwd5nsnkm93khqhncb8bjl67519wjgx39g73pq50";
+    };
+    meta.homepage = "https://github.com/gfanto/fzf-lsp.nvim/";
+  };
+
   fzf-vim = buildVimPluginFrom2Nix {
     pname = "fzf-vim";
-    version = "2020-12-30";
+    version = "2021-01-07";
     src = fetchFromGitHub {
       owner = "junegunn";
       repo = "fzf.vim";
-      rev = "811b8607c653afe365bb97e6568501b0ad498017";
-      sha256 = "16g0p2gadbw22qlsqrla3nv4a1bipzj00j4qsr2nb2ci13c1831z";
+      rev = "d43df0ea2f099836c2e3499756101e87bcbd3e25";
+      sha256 = "1hclx6c476i523qa5r27r2jbdfdrlbgan1j7aczzwgj3lahbdlvx";
     };
     meta.homepage = "https://github.com/junegunn/fzf.vim/";
   };
@@ -1872,12 +1908,12 @@ let
 
   julia-vim = buildVimPluginFrom2Nix {
     pname = "julia-vim";
-    version = "2020-12-07";
+    version = "2021-01-07";
     src = fetchFromGitHub {
       owner = "JuliaEditorSupport";
       repo = "julia-vim";
-      rev = "e14fd34409de39025af93873adc6d26a831d70f9";
-      sha256 = "1s1n74dn53aww6mjb87jcjpmipk2k2ayimimss7kg9c6n15jkqkg";
+      rev = "ce48f42f1fd1d4566503ae26307026c895905a10";
+      sha256 = "08yk47pvyh550iqv6zvrxcjdinn0w9p5al1v49m7p49jfqck3h1m";
     };
     meta.homepage = "https://github.com/JuliaEditorSupport/julia-vim/";
   };
@@ -2016,24 +2052,24 @@ let
 
   lh-brackets = buildVimPluginFrom2Nix {
     pname = "lh-brackets";
-    version = "2021-01-04";
+    version = "2021-01-06";
     src = fetchFromGitHub {
       owner = "LucHermitte";
       repo = "lh-brackets";
-      rev = "7af393f8212759aaea2d2721855fb2f46345ba3e";
-      sha256 = "0wzd1q26bd6b6adaxn9vnr0xd2l8sk73av0b35ga3yv9kfr2j4qb";
+      rev = "547fc9ab14ecf6ecc0d81e8bbb1cc1fec314b6aa";
+      sha256 = "0344ap5fkp1d0g91rv9pn0p28xqz8as48d3m6kxc99w229sj6p2q";
     };
     meta.homepage = "https://github.com/LucHermitte/lh-brackets/";
   };
 
   lh-vim-lib = buildVimPluginFrom2Nix {
     pname = "lh-vim-lib";
-    version = "2020-11-19";
+    version = "2021-01-06";
     src = fetchFromGitHub {
       owner = "LucHermitte";
       repo = "lh-vim-lib";
-      rev = "0edb04acd77b9e5e498314b6345d422d93921ffa";
-      sha256 = "1cndwbwx9pg6550k7j2z0pw91dll0idspd0jpd0kycpxm4330jy9";
+      rev = "65614730a667144a444fbd4a028a81171481c537";
+      sha256 = "1vxm3ym51qa63zbrkdz2pvwafr3kmdxgpxrdwb1g8i7qsxjsvgl1";
     };
     meta.homepage = "https://github.com/LucHermitte/lh-vim-lib/";
   };
@@ -2086,6 +2122,18 @@ let
     meta.homepage = "https://github.com/junegunn/limelight.vim/";
   };
 
+  lsp-status-nvim = buildVimPluginFrom2Nix {
+    pname = "lsp-status-nvim";
+    version = "2021-01-05";
+    src = fetchFromGitHub {
+      owner = "nvim-lua";
+      repo = "lsp-status.nvim";
+      rev = "5215ea78a5949b42b86bf474d33608de6b7594a3";
+      sha256 = "05h8n0ggi55g4ri9jsa4210knds0rxp8ym2knlq3njy40q0jjaxd";
+    };
+    meta.homepage = "https://github.com/nvim-lua/lsp-status.nvim/";
+  };
+
   lsp_extensions-nvim = buildVimPluginFrom2Nix {
     pname = "lsp_extensions-nvim";
     version = "2020-11-30";
@@ -2098,6 +2146,18 @@ let
     meta.homepage = "https://github.com/nvim-lua/lsp_extensions.nvim/";
   };
 
+  lualine-nvim = buildVimPluginFrom2Nix {
+    pname = "lualine-nvim";
+    version = "2021-01-09";
+    src = fetchFromGitHub {
+      owner = "hoob3rt";
+      repo = "lualine.nvim";
+      rev = "8742b6e466dff01657b1cd4187f2f25aa57d2916";
+      sha256 = "00i0mx18apx48lhzmc4fik0mbqm3vsfdp4pbl2z8d0fnmldhqx75";
+    };
+    meta.homepage = "https://github.com/hoob3rt/lualine.nvim/";
+  };
+
   lushtags = buildVimPluginFrom2Nix {
     pname = "lushtags";
     version = "2017-04-19";
@@ -2640,12 +2700,12 @@ let
 
   nlua-nvim = buildVimPluginFrom2Nix {
     pname = "nlua-nvim";
-    version = "2020-11-16";
+    version = "2021-01-05";
     src = fetchFromGitHub {
       owner = "tjdevries";
       repo = "nlua.nvim";
-      rev = "92fdfb1eb791e79ff1d6403dd26b59ce61dd09c6";
-      sha256 = "1ka8k8rxn406glrc0qz8rk3zrxhpdaky040v1a65g5alb50af9hz";
+      rev = "c0e8fbcaf8bcf5571a9e1d780a72094aad3f3094";
+      sha256 = "0q5aw3n4dsszk5iw7qg01xx1rbrr18jh1wqs6k9dd1kcr6yq22rq";
     };
     meta.homepage = "https://github.com/tjdevries/nlua.nvim/";
   };
@@ -2736,12 +2796,12 @@ let
 
   nvim-gdb = buildVimPluginFrom2Nix {
     pname = "nvim-gdb";
-    version = "2021-01-04";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "sakhnik";
       repo = "nvim-gdb";
-      rev = "1f899535a01ae9fb8c9ca8a6ccff651188fe78d3";
-      sha256 = "1gmyy5l5zy0j59z8rpyablav62zrss4312dpjfr8d6mcxmfa53wd";
+      rev = "81930348bbb1398635cc0ecbbc88e3defd8aaa0f";
+      sha256 = "106g7pxa9rwwq45hmsb55b3dy0px2lr5lb25yy8n6jx6a70z9hf7";
     };
     meta.homepage = "https://github.com/sakhnik/nvim-gdb/";
   };
@@ -2772,36 +2832,36 @@ let
 
   nvim-lspconfig = buildVimPluginFrom2Nix {
     pname = "nvim-lspconfig";
-    version = "2021-01-04";
+    version = "2021-01-09";
     src = fetchFromGitHub {
       owner = "neovim";
       repo = "nvim-lspconfig";
-      rev = "384e512a640b2b18f3d2c3e9dcb6e870814ed1eb";
-      sha256 = "1fkmnkvpp27azi3g3iqkrhch0a4q6in16cp29zs0dvgrk7iv0cg1";
+      rev = "8c68dc78d00fc9b55312108d48c4191ec3851f6a";
+      sha256 = "09mzkn7psfv4iaq3myi7mq5qymxz0jnisr0d0k927z64ca3vzjbq";
     };
     meta.homepage = "https://github.com/neovim/nvim-lspconfig/";
   };
 
   nvim-lsputils = buildVimPluginFrom2Nix {
     pname = "nvim-lsputils";
-    version = "2020-12-31";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "RishabhRD";
       repo = "nvim-lsputils";
-      rev = "58cd320e966c2aed5a5ebf8544a310a2341ccd5c";
-      sha256 = "1iv5gxj2vx3w3nx335kn0pnin4ij9xwpid909rp9hlh48vkardjp";
+      rev = "7f393053d303750868d17c8743c350a5503c3139";
+      sha256 = "0r17l5g8fpx7bax3sriawj0f7pkzj33vjr27i5yxa5934gxawv0q";
     };
     meta.homepage = "https://github.com/RishabhRD/nvim-lsputils/";
   };
 
   nvim-scrollview = buildVimPluginFrom2Nix {
     pname = "nvim-scrollview";
-    version = "2021-01-05";
+    version = "2021-01-09";
     src = fetchFromGitHub {
       owner = "dstein64";
       repo = "nvim-scrollview";
-      rev = "f729b1dd9077f8b1818752adc7416f357c057325";
-      sha256 = "0fdwgzn329y9mdrl98wl4aa14sh4l0my0kch5gszk5b9872zir69";
+      rev = "426fc6549aff1d5a1b84127dd80807a4f134d4ab";
+      sha256 = "0yadrawg9q49fiizn4k8ng9hsp9vi2l0bw73s6ib0szg641k1w42";
     };
     meta.homepage = "https://github.com/dstein64/nvim-scrollview/";
   };
@@ -2832,12 +2892,12 @@ let
 
   nvim-treesitter = buildVimPluginFrom2Nix {
     pname = "nvim-treesitter";
-    version = "2021-01-04";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "nvim-treesitter";
       repo = "nvim-treesitter";
-      rev = "f2c219cddcaf6d7237bdc957c84ef4cdb9072a89";
-      sha256 = "0b2a9rcbp647z620brcchw83dkdsar3d0j881dr0qcxxf496w9cz";
+      rev = "00ea65199e316aec5934cc2666ec9738e410b711";
+      sha256 = "1q37hd8cggx863d91ld9r4s51wld73pqgq93zwlg22i7qyl2v423";
     };
     meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter/";
   };
@@ -2856,12 +2916,12 @@ let
 
   nvim-treesitter-refactor = buildVimPluginFrom2Nix {
     pname = "nvim-treesitter-refactor";
-    version = "2020-10-07";
+    version = "2021-01-07";
     src = fetchFromGitHub {
       owner = "nvim-treesitter";
       repo = "nvim-treesitter-refactor";
-      rev = "9d4b9daf2f138a5de538ee094bd899591004f8e2";
-      sha256 = "0ma5zsl70mi92b9y8nhgkppdiqfjj0bl3gklhjv1c3lg7kny7511";
+      rev = "16bbe963d044ec94316679868e0988caa7b5b4c3";
+      sha256 = "0jgasxphwi222ga73y3jh5zq9m95n74331jn8r3nv741lk2g0772";
     };
     meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter-refactor/";
   };
@@ -2880,12 +2940,12 @@ let
 
   nvim-ts-rainbow = buildVimPluginFrom2Nix {
     pname = "nvim-ts-rainbow";
-    version = "2020-12-18";
+    version = "2021-01-05";
     src = fetchFromGitHub {
       owner = "p00f";
       repo = "nvim-ts-rainbow";
-      rev = "32d4b898989e504345c91ee802f5faeb7d12fc39";
-      sha256 = "1k4c1hsc1gwm6lv5k9lhpqx6dcbyc273aikm9j1q5i21mzrvl15f";
+      rev = "68eee9b031432de6a1964315235d3cf265243a77";
+      sha256 = "0zjhyd02sj17i0yrmffzzja2s0y9fa37v1nvqa17kap9vmcgyh7h";
     };
     meta.homepage = "https://github.com/p00f/nvim-ts-rainbow/";
   };
@@ -3096,12 +3156,12 @@ let
 
   popfix = buildVimPluginFrom2Nix {
     pname = "popfix";
-    version = "2020-12-29";
+    version = "2021-01-07";
     src = fetchFromGitHub {
       owner = "RishabhRD";
       repo = "popfix";
-      rev = "3e78c1c638d6330f77989321e1c68c55aa8a5e67";
-      sha256 = "1ahffc58a0ps1hmnaqc1rzvisn2axrcd5wbxi6n7z5hmbx86fw99";
+      rev = "9ab0aa5f186a2a2429c55f1512e2fd8b536183f0";
+      sha256 = "0ks9hxc506ybwrvk5qkl1qkj634ms5icy8cg0w3b1q5qzgz5k0wn";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/RishabhRD/popfix/";
@@ -3722,12 +3782,12 @@ let
 
   tagbar = buildVimPluginFrom2Nix {
     pname = "tagbar";
-    version = "2020-12-21";
+    version = "2021-01-07";
     src = fetchFromGitHub {
       owner = "preservim";
       repo = "tagbar";
-      rev = "eaadf90b61fd039415b2e5e8b9c38598e9b2daed";
-      sha256 = "0283cn4cpdgdclmpc21dcwhign03h0mmahpmr34dp8fa286vlirv";
+      rev = "978e1fe761de8be1f4d6c8469deba74a3cc0872f";
+      sha256 = "0y9bd1y23z9w7ibn761yx5wq02liazv5dgxfqyy6xfxr17zvd514";
     };
     meta.homepage = "https://github.com/preservim/tagbar/";
   };
@@ -3770,12 +3830,12 @@ let
 
   telescope-nvim = buildVimPluginFrom2Nix {
     pname = "telescope-nvim";
-    version = "2021-01-05";
+    version = "2021-01-09";
     src = fetchFromGitHub {
       owner = "nvim-telescope";
       repo = "telescope.nvim";
-      rev = "f750159203077b00cecdd9f68c254aa70d10f879";
-      sha256 = "01m5ydj56y87b05ppaxr1697f2ncbm28w6njvd3gh0z3nhdmd69n";
+      rev = "de80a9837cd1d207981c1f6dbf504436f8bfee13";
+      sha256 = "1zasdfn982akcgyyxvwwyp9vvh4p7kyi1gfkc57rj6jqkygwicsm";
     };
     meta.homepage = "https://github.com/nvim-telescope/telescope.nvim/";
   };
@@ -3951,12 +4011,12 @@ let
 
   unite-vim = buildVimPluginFrom2Nix {
     pname = "unite-vim";
-    version = "2020-12-20";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "unite.vim";
-      rev = "beab32c6474d0b0ba763b43db41cd62ea5f97aa6";
-      sha256 = "0kyl006vp2fs67pr0wa7qyff6x1rpa4i2jhaalizpqbaldimidb9";
+      rev = "c455008595a15c7ccc2c9f2ea309ba2bf5d3fe63";
+      sha256 = "054h0yrb2wffmirvqql2v34rfr5q0rx20p2y2wbrpx2w1vcwr2rc";
     };
     meta.homepage = "https://github.com/Shougo/unite.vim/";
   };
@@ -4263,12 +4323,12 @@ let
 
   vim-airline = buildVimPluginFrom2Nix {
     pname = "vim-airline";
-    version = "2021-01-05";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "vim-airline";
       repo = "vim-airline";
-      rev = "30bcbb07c3d08703cc26a918b78251e636d7b1fe";
-      sha256 = "0qcg01br8sb67hmsvkg37kahnzz3m3vgs5pivvfypl98a1lgpszm";
+      rev = "fdfc11f53adce1bd6644a5dac6002106ef08db95";
+      sha256 = "1bas31zkrkz6pxsxnh5s4kph861z85gxg0fik0psd698yg9zzgc1";
     };
     meta.homepage = "https://github.com/vim-airline/vim-airline/";
   };
@@ -4453,6 +4513,18 @@ let
     meta.homepage = "https://github.com/qpkorr/vim-bufkill/";
   };
 
+  vim-capslock = buildVimPluginFrom2Nix {
+    pname = "vim-capslock";
+    version = "2019-11-13";
+    src = fetchFromGitHub {
+      owner = "tpope";
+      repo = "vim-capslock";
+      rev = "84c9e467a7b8e5aabf33674ed17c6356cf98777c";
+      sha256 = "1c2fr8s9im3vxrszsrzm6wvad6disbdslmq6lqdp4603ialy4kja";
+    };
+    meta.homepage = "https://github.com/tpope/vim-capslock/";
+  };
+
   vim-carbon-now-sh = buildVimPluginFrom2Nix {
     pname = "vim-carbon-now-sh";
     version = "2020-10-28";
@@ -4491,12 +4563,12 @@ let
 
   vim-clap = buildVimPluginFrom2Nix {
     pname = "vim-clap";
-    version = "2021-01-01";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "liuchengxu";
       repo = "vim-clap";
-      rev = "b9ca65dbcc89dfb2702fb2ab0e98c7119f4e6bbf";
-      sha256 = "0j9xh0yf224fsnm9ksml9m8jfx4m9iji0a6h8q0mk8zglvh6qksc";
+      rev = "284ef9a0b7776ab34d387fb403d500371a65cbda";
+      sha256 = "06jc831kcbpdh4k3890sh2srisbgljr0azx8g1g9fq0328qqnpbs";
     };
     meta.homepage = "https://github.com/liuchengxu/vim-clap/";
   };
@@ -4923,12 +4995,12 @@ let
 
   vim-elm-syntax = buildVimPluginFrom2Nix {
     pname = "vim-elm-syntax";
-    version = "2020-10-29";
+    version = "2021-01-09";
     src = fetchFromGitHub {
       owner = "andys8";
       repo = "vim-elm-syntax";
-      rev = "998ef67262dcbeadd596458d7ff40079b5bc5cbb";
-      sha256 = "0gja4ifdpl6wfq3n897h1h635kf92v5c44jzr0ixbv3i924xqjhj";
+      rev = "b65370b5292730ef35cbdb969da05b52d77d51dc";
+      sha256 = "0nd3ig7zpx49dmgwyqhs3545x64jxbrrgzd9fch4ihb6bhd4j3fr";
     };
     meta.homepage = "https://github.com/andys8/vim-elm-syntax/";
   };
@@ -5067,12 +5139,12 @@ let
 
   vim-floaterm = buildVimPluginFrom2Nix {
     pname = "vim-floaterm";
-    version = "2021-01-05";
+    version = "2021-01-09";
     src = fetchFromGitHub {
       owner = "voldikss";
       repo = "vim-floaterm";
-      rev = "e8f65534e607d8bd82ba2c4a8ada1adc6cb36c96";
-      sha256 = "010zr13y3016zfd6fqmknqg1ld19n9isfbgwl8hqgfrgjh9mn9p3";
+      rev = "428a59e4ec5061cae34dacd865bd831ddee7a446";
+      sha256 = "0jfdbaxjizb127s8rhx2ilhz48cg5xahv77rhm9sa4v9lky8zgrr";
     };
     meta.homepage = "https://github.com/voldikss/vim-floaterm/";
   };
@@ -5161,6 +5233,18 @@ let
     meta.homepage = "https://github.com/lambdalisue/vim-gista/";
   };
 
+  vim-git = buildVimPluginFrom2Nix {
+    pname = "vim-git";
+    version = "2020-07-13";
+    src = fetchFromGitHub {
+      owner = "tpope";
+      repo = "vim-git";
+      rev = "4be54a3e2e300a94f6f7dfa7a6ee9e81245c9886";
+      sha256 = "1061l9igdywfbqgwpf2f25yby78phb512hjbyzvqz5l1p7dw1xyd";
+    };
+    meta.homepage = "https://github.com/tpope/vim-git/";
+  };
+
   vim-gitbranch = buildVimPluginFrom2Nix {
     pname = "vim-gitbranch";
     version = "2017-05-27";
@@ -5223,12 +5307,12 @@ let
 
   vim-go = buildVimPluginFrom2Nix {
     pname = "vim-go";
-    version = "2021-01-03";
+    version = "2021-01-09";
     src = fetchFromGitHub {
       owner = "fatih";
       repo = "vim-go";
-      rev = "706c73bb369d9bab0fadca6b755a7244626f61aa";
-      sha256 = "07rbrk1qah16mi1f7dkp6ixi2kwgimgms23pfqiqjfrqgk304b6d";
+      rev = "9ac9a4337e4e71ca434f97a7678f301eca7266f7";
+      sha256 = "06lzyakavb89k7pwhicqd2zc5rd12cjd6p8pb4m3xzw9kff6gzy1";
     };
     meta.homepage = "https://github.com/fatih/vim-go/";
   };
@@ -5476,12 +5560,12 @@ let
 
   vim-illuminate = buildVimPluginFrom2Nix {
     pname = "vim-illuminate";
-    version = "2021-01-04";
+    version = "2021-01-07";
     src = fetchFromGitHub {
       owner = "RRethy";
       repo = "vim-illuminate";
-      rev = "f52857989c14c2f27d72ffa78d6af906fa436cd1";
-      sha256 = "1sbb3nkd3n3y9r5gs03lmwrmra7j8w8450q444g7b3h5hhx4b92l";
+      rev = "f8d01ab7417be5e3878678acd46e4d17e8d8d9b6";
+      sha256 = "1vnhvnxw7a4v583pw80lqcc9bb9lmcfzm1vhnskxrfxhz01r9ina";
     };
     meta.homepage = "https://github.com/RRethy/vim-illuminate/";
   };
@@ -5861,12 +5945,12 @@ let
 
   vim-lsp = buildVimPluginFrom2Nix {
     pname = "vim-lsp";
-    version = "2021-01-05";
+    version = "2021-01-09";
     src = fetchFromGitHub {
       owner = "prabirshrestha";
       repo = "vim-lsp";
-      rev = "87cd0e6137e0ebb1c0b451c20ba39f14e1a95f60";
-      sha256 = "0j1948ns6kwhfazcsvpy61w0a1dbpcy6hhvs54v6kil8ffgdcmh6";
+      rev = "678c0592382c7073505650d30e71e9f9cbc3353c";
+      sha256 = "0s7yhgajjqavj0lfzwassrk0n83dckf41bca54p5833ds85vwnsz";
     };
     meta.homepage = "https://github.com/prabirshrestha/vim-lsp/";
   };
@@ -6570,12 +6654,12 @@ let
 
   vim-puppet = buildVimPluginFrom2Nix {
     pname = "vim-puppet";
-    version = "2019-09-16";
+    version = "2021-01-09";
     src = fetchFromGitHub {
       owner = "rodjek";
       repo = "vim-puppet";
-      rev = "fc6e9efef797c505b2e67631ad2517d7d6e8f00d";
-      sha256 = "0a4qv8f74g6c2i9l6kv3zbcq9lskhdqg86w12f8hshw1vkfmfr4x";
+      rev = "d2cfbfe7b6a810f0be4de1f024a75ce6e9d9a260";
+      sha256 = "049fimc3mvn6c6cfwg8i1kzjn81arx60gyid39wsi2h0gb1sxv12";
     };
     meta.homepage = "https://github.com/rodjek/vim-puppet/";
   };
@@ -6894,12 +6978,12 @@ let
 
   vim-slime = buildVimPluginFrom2Nix {
     pname = "vim-slime";
-    version = "2020-12-31";
+    version = "2021-01-09";
     src = fetchFromGitHub {
       owner = "jpalardy";
       repo = "vim-slime";
-      rev = "5ee3530714771b61fc509d2ffdcbced9404c150a";
-      sha256 = "1msjl7swz43rwpf4h8skk377s9kfyvcgr1z0dcwbbmn3jymfs5sk";
+      rev = "72171eaaf176d7eb3f73ecebf86ff3e5f4ba7dbd";
+      sha256 = "0rcy6p4g8784w2dbbq0b7y1z3anqjpvycns40d556vbf1y1pbc41";
     };
     meta.homepage = "https://github.com/jpalardy/vim-slime/";
   };
@@ -6954,24 +7038,24 @@ let
 
   vim-snipmate = buildVimPluginFrom2Nix {
     pname = "vim-snipmate";
-    version = "2020-10-02";
+    version = "2021-01-06";
     src = fetchFromGitHub {
       owner = "garbas";
       repo = "vim-snipmate";
-      rev = "68eebf9dabe5c1d1964e78dda188765f224bab34";
-      sha256 = "1mxa373ry17zwszd089k99lbgr5pg46x5dlahpk0l68ksxpkbxir";
+      rev = "51168d7dc184c8234e692cd66e89bc7f95e35d72";
+      sha256 = "1psxnv6y690nx6g3msyxw8gm6z16gxdn92rlngpjirgs513kigin";
     };
     meta.homepage = "https://github.com/garbas/vim-snipmate/";
   };
 
   vim-snippets = buildVimPluginFrom2Nix {
     pname = "vim-snippets";
-    version = "2021-01-04";
+    version = "2021-01-07";
     src = fetchFromGitHub {
       owner = "honza";
       repo = "vim-snippets";
-      rev = "6159e8e820656e4370d54ddbf11278bf92794139";
-      sha256 = "1kwdcx429kw39f8fsav3lcnahkbzbdmny1d81pq6c24k1r7hfp1h";
+      rev = "d43498c949a3acf297fd74397a3bc165033f2028";
+      sha256 = "1q0b3xsr1br172n6mj5bfza2lcacznlnwk2sgasxz8bkdq1rk6mi";
     };
     meta.homepage = "https://github.com/honza/vim-snippets/";
   };
@@ -7447,12 +7531,12 @@ let
 
   vim-visual-multi = buildVimPluginFrom2Nix {
     pname = "vim-visual-multi";
-    version = "2021-01-01";
+    version = "2021-01-06";
     src = fetchFromGitHub {
       owner = "mg979";
       repo = "vim-visual-multi";
-      rev = "c27966b82e3ebf39278b53ae600c9763907937d9";
-      sha256 = "15246xx9qixgdw1wff4kka9vcpkirkdbz8j25zhicx3dqvqzzb4c";
+      rev = "d95d4c31a7919f58e9bb89bfc0c3a272461d782d";
+      sha256 = "1xnixwq6rddvs0za76sic3sf5fk0v10cdrsyaz3d6y0g0qmv9cz0";
     };
     meta.homepage = "https://github.com/mg979/vim-visual-multi/";
   };
@@ -7471,12 +7555,12 @@ let
 
   vim-vsnip = buildVimPluginFrom2Nix {
     pname = "vim-vsnip";
-    version = "2021-01-05";
+    version = "2021-01-07";
     src = fetchFromGitHub {
       owner = "hrsh7th";
       repo = "vim-vsnip";
-      rev = "879dc259bb3fbb850473982d64c441c16a4daa38";
-      sha256 = "103mws249r6rxg7mc28fv9avk60arn8jxspddvynd27srvzrbif8";
+      rev = "5917d944b259baab85c9c249a8be33a82cd033d3";
+      sha256 = "0gj5qjrb31j93vv8wpqlhdpsgrnkwaxvhvslkjj9m3fnx34gqvdv";
     };
     meta.homepage = "https://github.com/hrsh7th/vim-vsnip/";
   };
@@ -7735,12 +7819,12 @@ let
 
   vimspector = buildVimPluginFrom2Nix {
     pname = "vimspector";
-    version = "2021-01-02";
+    version = "2021-01-09";
     src = fetchFromGitHub {
       owner = "puremourning";
       repo = "vimspector";
-      rev = "65708f55e0a1186c76af9a5a1f14e9157cf588b9";
-      sha256 = "1m16i4s89q5ff9qi79qyq34184cfnfbglnfqxg6zsp8pb8kfpiix";
+      rev = "5303de81954b854161dffb76da37f8508c9c1476";
+      sha256 = "0xkgirbb2rw4b0h4qdv8f2lsvadqcyqrclxd8a3i8r2dc4xdgp3p";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/puremourning/vimspector/";
@@ -7748,12 +7832,12 @@ let
 
   vimtex = buildVimPluginFrom2Nix {
     pname = "vimtex";
-    version = "2021-01-03";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "lervag";
       repo = "vimtex";
-      rev = "e5214dd3fe5b2b7f3092d43e58b430032dfebe40";
-      sha256 = "1vni0kyf9cglvsnwgi6nalygj291gb337rdmi0jn0i0x76h0g65p";
+      rev = "7806f0f5e1615d4ce9cef6b7edfb6ec6b1b7e666";
+      sha256 = "0j1b1lf8y58jqp4r9vjw266nxlf38gz509qzaxp3n0sb4svg93pw";
     };
     meta.homepage = "https://github.com/lervag/vimtex/";
   };
diff --git a/pkgs/misc/vim-plugins/vim-plugin-names b/pkgs/misc/vim-plugins/vim-plugin-names
index 237f7faacf30..5b5e13a362a8 100644
--- a/pkgs/misc/vim-plugins/vim-plugin-names
+++ b/pkgs/misc/vim-plugins/vim-plugin-names
@@ -129,6 +129,7 @@ fszymanski/deoplete-emoji
 garbas/vim-snipmate
 gentoo/gentoo-syntax
 GEverding/vim-hocon
+gfanto/fzf-lsp.nvim@main
 gibiansky/vim-textobj-haskell
 glts/vim-textobj-comment
 godlygeek/csapprox
@@ -158,6 +159,7 @@ hecal3/vim-leader-guide
 henrik/vim-indexed-search
 HerringtonDarkholme/yats.vim
 honza/vim-snippets
+hoob3rt/lualine.nvim
 hotwatermorning/auto-git-diff
 hrsh7th/vim-vsnip
 hrsh7th/vim-vsnip-integ
@@ -230,6 +232,7 @@ justincampbell/vim-eighties
 justinj/vim-pico8-syntax
 justinmk/vim-dirvish
 justinmk/vim-sneak
+jvoorhis/coq.vim
 KabbAmine/vCoolor.vim
 KabbAmine/zeavim.vim
 kalbasit/vim-colemak
@@ -392,6 +395,7 @@ numirias/semshi
 nvie/vim-flake8
 nvim-lua/completion-nvim
 nvim-lua/diagnostic-nvim
+nvim-lua/lsp-status.nvim
 nvim-lua/lsp_extensions.nvim
 nvim-lua/plenary.nvim
 nvim-lua/popup.nvim
@@ -404,6 +408,7 @@ nvim-treesitter/playground
 ocaml/vim-ocaml
 octol/vim-cpp-enhanced-highlight
 ojroques/vim-oscyank@main
+Olical/aniseed
 Olical/conjure
 OrangeT/vim-csharp
 osyo-manga/shabadou.vim
@@ -550,6 +555,7 @@ tommcdo/vim-ninja-feet
 tomtom/tcomment_vim
 tomtom/tlib_vim
 tpope/vim-abolish
+tpope/vim-capslock
 tpope/vim-commentary
 tpope/vim-dadbod
 tpope/vim-dispatch
@@ -558,6 +564,7 @@ tpope/vim-eunuch
 tpope/vim-fireplace
 tpope/vim-flagship
 tpope/vim-fugitive
+tpope/vim-git
 tpope/vim-liquid
 tpope/vim-obsession
 tpope/vim-pathogen
diff --git a/pkgs/misc/vscode-extensions/default.nix b/pkgs/misc/vscode-extensions/default.nix
index 4c6446436585..42983053c1ac 100644
--- a/pkgs/misc/vscode-extensions/default.nix
+++ b/pkgs/misc/vscode-extensions/default.nix
@@ -63,6 +63,18 @@ let
         };
       };
 
+      brettm12345.nixfmt-vscode = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "nixfmt-vscode";
+          publisher = "brettm12345";
+          version = "0.0.1";
+          sha256 = "07w35c69vk1l6vipnq3qfack36qcszqxn8j3v332bl0w6m02aa7k";
+        };
+        meta = with stdenv.lib; {
+          license = licenses.mpl20;
+        };
+      };
+
       cmschuetz12.wal = buildVscodeMarketplaceExtension {
         mktplcRef = {
           name = "wal";
@@ -75,6 +87,18 @@ let
         };
       };
 
+      coenraads.bracket-pair-colorizer-2 = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "bracket-pair-colorizer-2";
+          publisher = "CoenraadS";
+          version = "0.2.0";
+          sha256 = "0nppgfbmw0d089rka9cqs3sbd5260dhhiipmjfga3nar9vp87slh";
+        };
+        meta = with stdenv.lib; {
+          license = licenses.mit;
+        };
+      };
+
       dhall.dhall-lang = buildVscodeMarketplaceExtension {
         mktplcRef = {
           name = "dhall-lang";
@@ -107,6 +131,18 @@ let
         };
       };
 
+      formulahendry.auto-rename-tag = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "auto-rename-tag";
+          publisher = "formulahendry";
+          version = "0.1.6";
+          sha256 = "0cqg9mxkyf41brjq2c764w42lzyn6ffphw6ciw7xnqk1h1x8wwbs";
+        };
+        meta = {
+          license = stdenv.lib.licenses.mit;
+        };
+      };
+
       golang.Go = buildVscodeMarketplaceExtension {
         mktplcRef = {
           name = "Go";
@@ -131,6 +167,18 @@ let
         };
       };
 
+      ibm.output-colorizer = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "output-colorizer";
+          publisher = "IBM";
+          version = "0.1.2";
+          sha256 = "0i9kpnlk3naycc7k8gmcxas3s06d67wxr3nnyv5hxmsnsx5sfvb7";
+        };
+        meta = with stdenv.lib; {
+          license = licenses.mit;
+        };
+      };
+
       james-yu.latex-workshop = buildVscodeMarketplaceExtension {
         mktplcRef = {
           name = "latex-workshop";
@@ -143,6 +191,18 @@ let
         };
       };
 
+      jnoortheen.nix-ide = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "nix-ide";
+          publisher = "jnoortheen";
+          version = "0.1.7";
+          sha256 = "1bw4wyq9abimxbhl7q9g8grvj2ax9qqq6mmqbiqlbsi2arvk0wrm";
+        };
+        meta =  {
+          license = stdenv.lib.licenses.mit;
+        };
+      };
+
       justusadam.language-haskell = buildVscodeMarketplaceExtension {
         mktplcRef = {
           name = "language-haskell";
@@ -167,6 +227,18 @@ let
         };
       };
 
+      mechatroner.rainbow-csv = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "rainbow-csv";
+          publisher = "mechatroner";
+          version = "1.7.1";
+          sha256 = "0w5mijs4ll5qjkpyw7qpn1k40pq8spm0b3q72x150ydbcini5hxw";
+        };
+        meta = {
+          license = stdenv.lib.licenses.mit;
+        };
+      };
+
       ms-azuretools.vscode-docker = buildVscodeMarketplaceExtension {
         mktplcRef = {
           name = "vscode-docker";
@@ -237,6 +309,18 @@ let
         };
       };
 
+      ryu1kn.partial-diff = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "partial-diff";
+          publisher = "ryu1kn";
+          version = "1.4.1";
+          sha256 = "1r4kg4slgxncdppr4fn7i5vfhvzcg26ljia2r97n6wvwn8534vs9";
+        };
+        meta = {
+          license = stdenv.lib.licenses.mit;
+        };
+      };
+
       scala-lang.scala = buildVscodeMarketplaceExtension {
         mktplcRef = {
           name = "scala";
@@ -297,10 +381,34 @@ let
         };
       };
 
+      tyriar.sort-lines = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "sort-lines";
+          publisher = "Tyriar";
+          version = "1.9.0";
+          sha256 = "0l4wibsjnlbzbrl1wcj18vnm1q4ygvxmh347jvzziv8f1l790qjl";
+        };
+        meta = {
+          license = stdenv.lib.licenses.mit;
+        };
+      };
+
       vadimcn.vscode-lldb = callPackage ./vscode-lldb {
         lldb = llvmPackages_latest.lldb;
       };
 
+      vincaslt.highlight-matching-tag = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "highlight-matching-tag";
+          publisher = "vincaslt";
+          version = "0.10.0";
+          sha256 = "1albwz3lc9i20if77inm1ipwws8apigvx24rbag3d1h3p4vwda49";
+        };
+        meta = {
+          license = stdenv.lib.licenses.mit;
+        };
+      };
+
       ms-vsliveshare.vsliveshare = callPackage ./ms-vsliveshare-vsliveshare {};
 
       vscodevim.vim = buildVscodeMarketplaceExtension {
diff --git a/pkgs/os-specific/linux/busybox/default.nix b/pkgs/os-specific/linux/busybox/default.nix
index 99909e6262ef..c157c492043c 100644
--- a/pkgs/os-specific/linux/busybox/default.nix
+++ b/pkgs/os-specific/linux/busybox/default.nix
@@ -48,14 +48,15 @@ let
 in
 
 stdenv.mkDerivation rec {
-  name = "busybox-1.32.0";
+  pname = "busybox";
+  version = "1.32.1";
 
   # Note to whoever is updating busybox: please verify that:
   # nix-build pkgs/stdenv/linux/make-bootstrap-tools.nix -A test
   # still builds after the update.
   src = fetchurl {
-    url = "https://busybox.net/downloads/${name}.tar.bz2";
-    sha256 = "w12H8dBLKxU9M8J1wmMuQNOIqI8ZqecXJ+C7v/Uf5ok=";
+    url = "https://busybox.net/downloads/${pname}-${version}.tar.bz2";
+    sha256 = "1vhd59qmrdyrr1q7rvxmyl96z192mxl089hi87yl0hcp6fyw8mwx";
   };
 
   hardeningDisable = [ "format" "pie" ]
diff --git a/pkgs/os-specific/linux/kernel/hardened/patches.json b/pkgs/os-specific/linux/kernel/hardened/patches.json
index 00c0bb0d5d3c..91a6b42ac415 100644
--- a/pkgs/os-specific/linux/kernel/hardened/patches.json
+++ b/pkgs/os-specific/linux/kernel/hardened/patches.json
@@ -1,25 +1,30 @@
 {
     "4.14": {
-        "name": "linux-hardened-4.14.213.a.patch",
-        "sha256": "0lkjgg6cbsaiypxij7p00q3y094qf0h172hc2p7wgy39777b45a7",
-        "url": "https://github.com/anthraxx/linux-hardened/releases/download/4.14.213.a/linux-hardened-4.14.213.a.patch"
+        "extra": ".a",
+        "name": "linux-hardened-4.14.214.a.patch",
+        "sha256": "14m075fnbzlshrz09vpyk9v9qbki896caj8f49am2z8dmm5hnr6b",
+        "url": "https://github.com/anthraxx/linux-hardened/releases/download/4.14.214.a/linux-hardened-4.14.214.a.patch"
     },
     "4.19": {
-        "name": "linux-hardened-4.19.164.a.patch",
-        "sha256": "0fzv2sjmf0dmhzp58yr4ggzi3pxbjjhbhmav46pv98rbdm2vjwvk",
-        "url": "https://github.com/anthraxx/linux-hardened/releases/download/4.19.164.a/linux-hardened-4.19.164.a.patch"
+        "extra": ".a",
+        "name": "linux-hardened-4.19.166.a.patch",
+        "sha256": "0wkyd8k68qy378vj3937dk0valqb4sgdz5fg3107bjcgv7a4lvis",
+        "url": "https://github.com/anthraxx/linux-hardened/releases/download/4.19.166.a/linux-hardened-4.19.166.a.patch"
     },
     "5.10": {
-        "name": "linux-hardened-5.10.4.a.patch",
-        "sha256": "0apnmcis41vz5k74g1ssq0apwxzhl6zg31nyjbplilm3b068a1h4",
-        "url": "https://github.com/anthraxx/linux-hardened/releases/download/5.10.4.a/linux-hardened-5.10.4.a.patch"
+        "extra": ".a",
+        "name": "linux-hardened-5.10.6.a.patch",
+        "sha256": "18ryh9zhrv5mmg876wss8k5fx8abm7ay0qpanvzmf5bjw7dc6qkq",
+        "url": "https://github.com/anthraxx/linux-hardened/releases/download/5.10.6.a/linux-hardened-5.10.6.a.patch"
     },
     "5.4": {
-        "name": "linux-hardened-5.4.86.a.patch",
-        "sha256": "0j1wr6d42rbxd66vhsp9l3lp3nv0p1j0cpir9pxshd8w9zlbdy88",
-        "url": "https://github.com/anthraxx/linux-hardened/releases/download/5.4.86.a/linux-hardened-5.4.86.a.patch"
+        "extra": ".a",
+        "name": "linux-hardened-5.4.88.a.patch",
+        "sha256": "0fz44izfmcsj205l7hjmkp78f5isy96fcjsz2bvrpb4x3h98bm5i",
+        "url": "https://github.com/anthraxx/linux-hardened/releases/download/5.4.88.a/linux-hardened-5.4.88.a.patch"
     },
     "5.9": {
+        "extra": "",
         "name": "linux-hardened-5.9.16.a.patch",
         "sha256": "024wdzc9bwgr4nd4z0l6bazcl35jczhsmdl2lb26bvffjwg207rw",
         "url": "https://github.com/anthraxx/linux-hardened/releases/download/5.9.16.a/linux-hardened-5.9.16.a.patch"
diff --git a/pkgs/os-specific/linux/kernel/hardened/update.py b/pkgs/os-specific/linux/kernel/hardened/update.py
index d6443d2e7511..b831c6491095 100755
--- a/pkgs/os-specific/linux/kernel/hardened/update.py
+++ b/pkgs/os-specific/linux/kernel/hardened/update.py
@@ -31,7 +31,7 @@ VersionComponent = Union[int, str]
 Version = List[VersionComponent]
 
 
-Patch = TypedDict("Patch", {"name": str, "url": str, "sha256": str})
+Patch = TypedDict("Patch", {"name": str, "url": str, "sha256": str, "extra": str})
 
 
 @dataclass
@@ -99,7 +99,10 @@ def verify_openpgp_signature(
             return False
 
 
-def fetch_patch(*, name: str, release: GitRelease) -> Optional[Patch]:
+def fetch_patch(*, name: str, release_info: ReleaseInfo) -> Optional[Patch]:
+    release = release_info.release
+    extra = f'.{release_info.version[-1]}'
+
     def find_asset(filename: str) -> str:
         try:
             it: Iterator[str] = (
@@ -130,7 +133,7 @@ def fetch_patch(*, name: str, release: GitRelease) -> Optional[Patch]:
     if not sig_ok:
         return None
 
-    return Patch(name=patch_filename, url=patch_url, sha256=sha256)
+    return Patch(name=patch_filename, url=patch_url, sha256=sha256, extra=extra)
 
 
 def parse_version(version_str: str) -> Version:
@@ -252,7 +255,7 @@ for kernel_key in sorted(releases.keys()):
         update = True
 
     if update:
-        patch = fetch_patch(name=name, release=release)
+        patch = fetch_patch(name=name, release_info=release_info)
         if patch is None:
             failures = True
         else:
diff --git a/pkgs/os-specific/linux/kernel/linux-4.14.nix b/pkgs/os-specific/linux/kernel/linux-4.14.nix
index aff68e1efa70..fc876e803534 100644
--- a/pkgs/os-specific/linux/kernel/linux-4.14.nix
+++ b/pkgs/os-specific/linux/kernel/linux-4.14.nix
@@ -3,7 +3,7 @@
 with stdenv.lib;
 
 buildLinux (args // rec {
-  version = "4.14.213";
+  version = "4.14.214";
 
   # modDirVersion needs to be x.y.z, will automatically add .0 if needed
   modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
@@ -13,6 +13,6 @@ buildLinux (args // rec {
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "079axkl14jp8lz30h21q4gmhmjw6zf5ycmxji65kgcgyg7dwwyzx";
+    sha256 = "07ir4yw7s5c6yb3gjbgjvcqqdgpbsjxrvapgh6zs22ffd8hrchpm";
   };
 } // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-4.19.nix b/pkgs/os-specific/linux/kernel/linux-4.19.nix
index 6c559103f492..48c2050842b2 100644
--- a/pkgs/os-specific/linux/kernel/linux-4.19.nix
+++ b/pkgs/os-specific/linux/kernel/linux-4.19.nix
@@ -3,7 +3,7 @@
 with stdenv.lib;
 
 buildLinux (args // rec {
-  version = "4.19.165";
+  version = "4.19.166";
 
   # modDirVersion needs to be x.y.z, will automatically add .0 if needed
   modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
@@ -13,6 +13,6 @@ buildLinux (args // rec {
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "1l72wka1dli0jdb91sx4zr13vy0q5l6p37fh6hf093gjn14mdh51";
+    sha256 = "03l86ykdjs5wa0n4wknpgy9dv2r6l92qfsyak373jkhs684z53mr";
   };
 } // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-4.4.nix b/pkgs/os-specific/linux/kernel/linux-4.4.nix
index 744f35e3ea8b..6ff11414fced 100644
--- a/pkgs/os-specific/linux/kernel/linux-4.4.nix
+++ b/pkgs/os-specific/linux/kernel/linux-4.4.nix
@@ -1,11 +1,11 @@
 { stdenv, buildPackages, fetchurl, perl, buildLinux, ... } @ args:
 
 buildLinux (args // rec {
-  version = "4.4.249";
+  version = "4.4.250";
   extraMeta.branch = "4.4";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "04pb4vgia6zaindf6804gq9jn3mhmy01yijqmpi79sh9rlqzzh1i";
+    sha256 = "12m14j8654rawj2znkyhvcnwnf53x10zlghxd0mpl8dfzwvn2f5b";
   };
 } // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-4.9.nix b/pkgs/os-specific/linux/kernel/linux-4.9.nix
index bf044f73246d..e634716d0af3 100644
--- a/pkgs/os-specific/linux/kernel/linux-4.9.nix
+++ b/pkgs/os-specific/linux/kernel/linux-4.9.nix
@@ -1,11 +1,11 @@
 { stdenv, buildPackages, fetchurl, perl, buildLinux, ... } @ args:
 
 buildLinux (args // rec {
-  version = "4.9.249";
+  version = "4.9.250";
   extraMeta.branch = "4.9";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "0kjcw0vgga9msgqnipgg028v3rcc5am2d094v3hqkkjvzyb8dwxi";
+    sha256 = "15vizxd2i2311skjank406ny3bc30c5rz2p9jvh5xz1yv12vzgcy";
   };
 } // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-5.10.nix b/pkgs/os-specific/linux/kernel/linux-5.10.nix
index 28f031431839..2e82728107cb 100644
--- a/pkgs/os-specific/linux/kernel/linux-5.10.nix
+++ b/pkgs/os-specific/linux/kernel/linux-5.10.nix
@@ -3,7 +3,7 @@
 with stdenv.lib;
 
 buildLinux (args // rec {
-  version = "5.10.5";
+  version = "5.10.6";
 
   # modDirVersion needs to be x.y.z, will automatically add .0 if needed
   modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
@@ -13,6 +13,6 @@ buildLinux (args // rec {
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
-    sha256 = "1x1fc4cywqnjm514q376d5540zsxmqv95n0lykaphz8qdbhsk49r";
+    sha256 = "02v91afra3pcwfws74wxdsm8pfc57vws659b7j6jmsxm3hnd0rvp";
   };
 } // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-5.4.nix b/pkgs/os-specific/linux/kernel/linux-5.4.nix
index 2fc1b6013c14..a81d38b15275 100644
--- a/pkgs/os-specific/linux/kernel/linux-5.4.nix
+++ b/pkgs/os-specific/linux/kernel/linux-5.4.nix
@@ -3,7 +3,7 @@
 with stdenv.lib;
 
 buildLinux (args // rec {
-  version = "5.4.87";
+  version = "5.4.88";
 
   # modDirVersion needs to be x.y.z, will automatically add .0 if needed
   modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
@@ -13,6 +13,6 @@ buildLinux (args // rec {
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
-    sha256 = "0cawb7md97i0hz83hf7l4ihn9lyrg8q64j8jam8n9fw45qzfjd3a";
+    sha256 = "1ci432xanm7glgg05012kh43pfi4k771kzih0816y5674v0hg02b";
   };
 } // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-lqx.nix b/pkgs/os-specific/linux/kernel/linux-lqx.nix
index f27043789797..7c10ef55bb68 100644
--- a/pkgs/os-specific/linux/kernel/linux-lqx.nix
+++ b/pkgs/os-specific/linux/kernel/linux-lqx.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchFromGitHub, buildLinux, linux_zen, ... } @ args:
 
 let
-  version = "5.9.16";
+  version = "5.10.5";
 in
 
 buildLinux (args // {
@@ -13,11 +13,11 @@ buildLinux (args // {
     owner = "zen-kernel";
     repo = "zen-kernel";
     rev = "v${version}-lqx1";
-    sha256 = "0ljvqf91nxpql98z75bicg5y3nzkm41rq5b0rm1kcnsk0ji829ps";
+    sha256 = "1qnxmxahx1wpwhpjz6gdm5zdy1gd8ic3p7vqbz55vx4ygn865gyv";
   };
 
   extraMeta = {
-    branch = "5.9/master";
+    branch = "5.10/master";
     maintainers = with stdenv.lib.maintainers; [ atemu ];
     description = linux_zen.meta.description + " (Same as linux_zen but less aggressive release schedule)";
   };
diff --git a/pkgs/os-specific/linux/kernel/linux-rt-5.10.nix b/pkgs/os-specific/linux/kernel/linux-rt-5.10.nix
index 07a74c107711..ed19559f95f4 100644
--- a/pkgs/os-specific/linux/kernel/linux-rt-5.10.nix
+++ b/pkgs/os-specific/linux/kernel/linux-rt-5.10.nix
@@ -6,7 +6,7 @@
 , ... } @ args:
 
 let
-  version = "5.10.1-rt20"; # updated by ./update-rt.sh
+  version = "5.10.4-rt22"; # updated by ./update-rt.sh
   branch = lib.versions.majorMinor version;
   kversion = builtins.elemAt (lib.splitString "-" version) 0;
 in buildLinux (args // {
@@ -18,14 +18,14 @@ in buildLinux (args // {
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v5.x/linux-${kversion}.tar.xz";
-    sha256 = "0p2fl7kl4ckphq17xir7n7vgrzlhbdqmyd2yyp4yilwvih9625pd";
+    sha256 = "1v2nbpp21c3fkw23dgrrfznnnlvi0538kj8wrlb2m6g94rn3jklh";
   };
 
   kernelPatches = let rt-patch = {
     name = "rt";
     patch = fetchurl {
       url = "mirror://kernel/linux/kernel/projects/rt/${branch}/older/patch-${version}.patch.xz";
-      sha256 = "0z8ljfcn908hzjl11fkmwrx2r7j0hcgpx07g21ag162qrn6g5qby";
+      sha256 = "1wnp7w3k1z10ipg8vzgyh22lpfya1p3ckabjadk9hadpa1ialma0";
     };
   }; in [ rt-patch ] ++ lib.remove rt-patch kernelPatches;
 
diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix
index b0eb2be2a4c9..a1a690007104 100644
--- a/pkgs/os-specific/linux/kernel/patches.nix
+++ b/pkgs/os-specific/linux/kernel/patches.nix
@@ -41,7 +41,8 @@
   hardened = let
     mkPatch = kernelVersion: src: {
       name = lib.removeSuffix ".patch" src.name;
-      patch = fetchurl src;
+      patch = fetchurl (lib.filterAttrs (k: v: k != "extra") src);
+      extra = src.extra;
     };
     patches = builtins.fromJSON (builtins.readFile ./hardened/patches.json);
   in lib.mapAttrs mkPatch patches;
diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix
index b9af74906b49..4b0c060f9ce4 100644
--- a/pkgs/os-specific/linux/nvidia-x11/default.nix
+++ b/pkgs/os-specific/linux/nvidia-x11/default.nix
@@ -22,10 +22,11 @@ rec {
   # Policy: use the highest stable version as the default (on our master).
   stable = if stdenv.hostPlatform.system == "x86_64-linux"
     then generic {
-      version = "455.45.01";
-      sha256_64bit = "6tyMfggvZVQPp/aiSdgwn7VG/mIGb0lUcnAdyMEDoVM=";
-      settingsSha256 = "70ABqnO/heCp/5IztpU0Lo7eZd4n4wUoTlp1xIQ3aCc=";
-      persistencedSha256 = "36sM+djZvm77Gle7dcZ5tppgzQkD4IA0FJgCGsdZRI8=";
+      version = "460.32.03";
+      sha256_64bit = "0qb0f8djys55b7qgvpbwafw5lkwvmcslqz3i2kr3jm354gy248ag";
+      settingsVersion = "460.27.04";
+      settingsSha256 = "1z9ibkhyjqzhhzi3gj88f5jlpc1d76jsncsy6wxpnbdbak8ljkw5";
+      persistencedSha256 = "1zrnmwlwqg3pgy1jvldy9iv994wr823rl7vjr1kqnngdmn7bflxl";
     }
     else legacy_390;
 
diff --git a/pkgs/os-specific/linux/open-iscsi/default.nix b/pkgs/os-specific/linux/open-iscsi/default.nix
index b8aa251489dc..d065dea846bf 100644
--- a/pkgs/os-specific/linux/open-iscsi/default.nix
+++ b/pkgs/os-specific/linux/open-iscsi/default.nix
@@ -4,7 +4,7 @@
 
 stdenv.mkDerivation rec {
   pname = "open-iscsi";
-  version = "2.1.2";
+  version = "2.1.3";
 
   nativeBuildInputs = [ autoconf automake gettext libtool perl pkgconf ];
   buildInputs = [ kmod openisns.lib openssl systemd util-linux ];
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
     owner = "open-iscsi";
     repo = "open-iscsi";
     rev = version;
-    sha256 = "0fazf2ighj0akrvcj3jm3kd6wl9lgznvr38g6icwfkqk7bykjkam";
+    sha256 = "14rcf4xmrmz522z57sm8bb3mn79dqsdwz84rl6id84fgjbwbsp6b";
   };
 
   DESTDIR = "$(out)";
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "A high performance, transport independent, multi-platform implementation of RFC3720";
-    license = licenses.gpl2;
+    license = licenses.gpl2Plus;
     homepage = "https://www.open-iscsi.com";
     platforms = platforms.linux;
     maintainers = with maintainers; [ cleverca22 zaninime ];
diff --git a/pkgs/os-specific/linux/pcimem/default.nix b/pkgs/os-specific/linux/pcimem/default.nix
new file mode 100644
index 000000000000..b559bd98b9c9
--- /dev/null
+++ b/pkgs/os-specific/linux/pcimem/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "pcimem";
+  version = "unstable-2018-08-29";
+
+  src = fetchFromGitHub {
+    owner = "billfarrow";
+    repo = pname;
+    rev = "09724edb1783a98da2b7ae53c5aaa87493aabc9b";
+    sha256 = "0zlbvcl5q4hgna11p3w00px1p8qgn8ga79lh6a2m7d597g86kbq3";
+  };
+
+  outputs = [ "out" "doc" ];
+
+  makeFlags = [ "CFLAGS=-Wno-maybe-uninitialized" ];
+
+  installPhase = ''
+    install -D pcimem "$out/bin/pcimem"
+    install -D README "$doc/doc/README"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple method of reading and writing to memory registers on a PCI card";
+    homepage = "https://github.com/billfarrow/pcimem";
+    license = licenses.gpl2Only;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ mafo ];
+  };
+}
diff --git a/pkgs/os-specific/linux/zfs/default.nix b/pkgs/os-specific/linux/zfs/default.nix
index 8bdf9efd4459..59719922987b 100644
--- a/pkgs/os-specific/linux/zfs/default.nix
+++ b/pkgs/os-specific/linux/zfs/default.nix
@@ -176,11 +176,6 @@ let
         maintainers = with maintainers; [ hmenke jcumming jonringer wizeman fpletz globin mic92 ];
       };
     };
-
-  linux-rt-patch = fetchpatch {
-    url = "https://github.com/openzfs/zfs/commit/ab4fb9b74e9d089fc9a261c4f41e19697ad6a4ca.patch";
-    sha256 = "1nrxmb4rhrkgncav6dzwm66l0700fi72qkkcs0w6pkm850srws36";
-  };
 in {
   # also check if kernel version constraints in
   # ./nixos/modules/tasks/filesystems/zfs.nix needs
@@ -190,11 +185,11 @@ in {
     # incompatibleKernelVersion = "4.20";
 
     # this package should point to the latest release.
-    version = "2.0.0";
+    version = "2.0.1";
 
-    sha256 = "1kriz6pg8wj98izvjc60wp23lgcp4k3mzhpkgj74np73rzgy6v8r";
+    sha256 = "0wmw823ildwm9rcfyk22pvzg100yhps3y9hfjlrpspfd1hhkbp0d";
 
-    extraPatches = [ linux-rt-patch ];
+    extraPatches = [ ];
   };
 
   zfsUnstable = common {
@@ -202,10 +197,10 @@ in {
     # incompatibleKernelVersion = "4.19";
 
     # this package should point to a version / git revision compatible with the latest kernel release
-    version = "2.0.0";
+    version = "2.0.1";
 
-    sha256 = "1kriz6pg8wj98izvjc60wp23lgcp4k3mzhpkgj74np73rzgy6v8r";
+    sha256 = "0wmw823ildwm9rcfyk22pvzg100yhps3y9hfjlrpspfd1hhkbp0d";
 
-    extraPatches = [ linux-rt-patch ];
+    extraPatches = [ ];
   };
 }
diff --git a/pkgs/servers/caddy/default.nix b/pkgs/servers/caddy/default.nix
index 1eb33dc32267..d50a94f9d66d 100644
--- a/pkgs/servers/caddy/default.nix
+++ b/pkgs/servers/caddy/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "caddy";
-  version = "2.2.1";
+  version = "2.3.0";
 
   subPackages = [ "cmd/caddy" ];
 
@@ -10,10 +10,10 @@ buildGoModule rec {
     owner = "caddyserver";
     repo = pname;
     rev = "v${version}";
-    sha256 = "065kxnyapjk4r07qrr55zs5w72p8rb8mapq3dh9lr1y13b8sgka9";
+    sha256 = "03cbbr8z9g156lgx7pyn1p1i4mh8ayhhhv24r1z3h1vgq6y4ka7r";
   };
 
-  vendorSha256 = "1rm7v03v6rf9fdqrrl639z8a46cdzswjp8rdpygcsndqfznn5w7b";
+  vendorSha256 = "0gpzxjiyv7l1nibh1gas4mvinamiyyfgidd8cy4abz95v6z437lp";
 
   passthru.tests = { inherit (nixosTests) caddy; };
 
diff --git a/pkgs/servers/code-server/default.nix b/pkgs/servers/code-server/default.nix
index c62fc072ecb7..60fb8ed5ea56 100644
--- a/pkgs/servers/code-server/default.nix
+++ b/pkgs/servers/code-server/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, makeWrapper, runCommand
+{ stdenv, fetchFromGitHub, buildGoModule, makeWrapper, runCommand
 , moreutils, jq, git, zip, rsync, pkgconfig, yarn, python2
 , nodejs-12_x, libsecret, xorg, ripgrep, nettools }:
 
@@ -12,17 +12,31 @@ let
 
 in stdenv.mkDerivation rec {
   pname = "code-server";
-  version = "3.4.1";
-  commit = "d3773c11f147bdd7a4f5acfefdee23c26f069e76";
+  version = "3.6.0";
+  commit = "a4a03c14922ccaec2a9ff8d1b7b2af8522a4214d";
 
   src = fetchFromGitHub {
     owner = "cdr";
     repo = "code-server";
-    rev = version;
-    sha256 = "PfDD0waloppGZ09zCQ9ggBeVL/Dhfv6QmEs/fs7QLtA=";
+    rev = "v${version}";
+    sha256 = "1c0p1s0bl3az5ysl97mz3gbynyndz6jd2jj7lx2snz6jqqd43y9p";
     fetchSubmodules = true;
   };
 
+  cloudAgent = buildGoModule rec {
+    pname = "cloud-agent";
+    version = "0.1.0";
+
+    src = fetchFromGitHub {
+      owner = "cdr";
+      repo = "cloud-agent";
+      rev = version;
+      sha256 = "1p20cvgvs38604km9ixylz0r3k7blkd80lncmma3z05y5n5fqps1";
+    };
+
+    vendorSha256 = "0yky1v1ak3ysykjf3gm1hd7qyj5rm4fw7amga81sb31x0357jlzr";
+  };
+
   yarnCache = stdenv.mkDerivation {
     name = "${pname}-${version}-${system}-yarn-cache";
     inherit src;
@@ -45,10 +59,10 @@ in stdenv.mkDerivation rec {
     outputHashMode = "recursive";
     outputHashAlgo = "sha256";
 
-    # to get hash values use nix-build -A code-server.yarnPrefetchCache
+    # to get hash values use nix-build -A code-server.prefetchYarnCache
     outputHash = {
-      x86_64-linux = "Zze2hEm2Np+SyQ0KXy5CZr5wilZbHBYXNYcRJBUUkQo=";
-      aarch64-linux = "LiIvGuBismWSL2yV2DuKUWDjIzuIQU/VVxtiD4xJ+6Q=";
+      x86_64-linux = "1443qwkllb714s4qw3b9y1mcc6p2ykgc02pw2k3z2gczvvr0g8qv";
+      aarch64-linux = "1443qwkllb714s4qw3b9y1mcc6p2ykgc02pw2k3z2gczvvr0g8qv";
     }.${system} or (throw "Unsupported system ${system}");
   };
 
@@ -64,7 +78,7 @@ in stdenv.mkDerivation rec {
   ];
   buildInputs = [ libsecret xorg.libX11 xorg.libxkbfile ];
 
-  patchPhase = ''
+  postPatch = ''
     export HOME=$PWD
 
     patchShebangs ./ci
@@ -76,6 +90,21 @@ in stdenv.mkDerivation rec {
     substituteInPlace lib/vscode/build/npm/postinstall.js \
       --replace '--ignore-optional' '--offline'
 
+    # remove unnecessary git config command
+    substituteInPlace lib/vscode/build/npm/postinstall.js \
+      --replace "cp.execSync('git config pull.rebase true');" ""
+
+    # allow offline install for postinstall scripts in extensions
+    grep -rl "yarn install" --include package.json lib/vscode/extensions \
+      | xargs sed -i 's/yarn install/yarn install --offline/g'
+
+    # remove download of coder-cloud agent
+    sed -i ':a;N;$!ba;s/OS=.*agent//' ci/build/npm-postinstall.sh
+
+    # use offline cache when installing release packages
+    substituteInPlace ci/build/npm-postinstall.sh \
+      --replace 'yarn --production' 'yarn --production --offline'
+
     # fix path to ifconfig, so vscode can get mac address
     substituteInPlace lib/vscode/src/vs/base/node/macAddress.ts \
       --replace '/sbin/ifconfig' '${nettools}/bin/ifconfig'
@@ -111,8 +140,14 @@ in stdenv.mkDerivation rec {
     # set nodedir, so we can build binaries later
     npm config set nodedir "${nodeSources}"
 
+    # link coder-cloud agent from nix store
+    ln -s "${cloudAgent}/bin/cloud-agent" ./lib/coder-cloud-agent
+
     # skip browser downloads for playwright
     export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD="true"
+
+    # skip unnecessary electron download
+    export ELECTRON_SKIP_BINARY_DOWNLOAD=1
   '';
 
   buildPhase = ''
@@ -162,6 +197,9 @@ in stdenv.mkDerivation rec {
     # install only production dependencies
     yarn --offline --cwd "$out/libexec/code-server" --production
 
+    # link coder-cloud agent from nix store
+    ln -s "${cloudAgent}/bin/cloud-agent" $out/libexec/code-server/lib/coder-cloud-agent
+
     # create wrapper
     makeWrapper "${nodejs-12_x}/bin/node" "$out/bin/code-server" \
       --add-flags "$out/libexec/code-server/out/node/entry.js"
diff --git a/pkgs/servers/gotify/source-sha.nix b/pkgs/servers/gotify/source-sha.nix
index 5e3531497d4e..7176070742d5 100644
--- a/pkgs/servers/gotify/source-sha.nix
+++ b/pkgs/servers/gotify/source-sha.nix
@@ -1 +1 @@
-"0d82girrhw9k68f5kcy8d0bl0bnsq651l4bb60xmqrilylp7qgmp"
+"1rb7gmkinp3nwdng3xw2nrim10iw374rwhzlviqgmz87djgajh3l"
diff --git a/pkgs/servers/gotify/version.nix b/pkgs/servers/gotify/version.nix
index 5783e8bd78f3..7dbc45290739 100644
--- a/pkgs/servers/gotify/version.nix
+++ b/pkgs/servers/gotify/version.nix
@@ -1 +1 @@
-"2.0.20"
+"2.0.21"
diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix
index bde51a7f18e0..c961ffe538c6 100644
--- a/pkgs/servers/home-assistant/component-packages.nix
+++ b/pkgs/servers/home-assistant/component-packages.nix
@@ -2,7 +2,7 @@
 # Do not edit!
 
 {
-  version = "2020.12.2";
+  version = "2021.1.0";
   components = {
     "abode" = ps: with ps; [ abodepy ];
     "accuweather" = ps: with ps; [ accuweather ];
@@ -11,11 +11,11 @@
     "actiontec" = ps: with ps; [ ];
     "adguard" = ps: with ps; [ adguardhome ];
     "ads" = ps: with ps; [ pyads ];
-    "advantage_air" = ps: with ps; [ ]; # missing inputs: advantage_air
+    "advantage_air" = ps: with ps; [ advantage_air ];
     "aftership" = ps: with ps; [ pyaftership ];
     "agent_dvr" = ps: with ps; [ ]; # missing inputs: agent-py
     "air_quality" = ps: with ps; [ ];
-    "airly" = ps: with ps; [ ]; # missing inputs: airly
+    "airly" = ps: with ps; [ airly ];
     "airvisual" = ps: with ps; [ pyairvisual ];
     "aladdin_connect" = ps: with ps; [ ]; # missing inputs: aladdin_connect
     "alarm_control_panel" = ps: with ps; [ ];
@@ -45,7 +45,7 @@
     "arcam_fmj" = ps: with ps; [ ]; # missing inputs: arcam-fmj
     "arduino" = ps: with ps; [ ]; # missing inputs: PyMata
     "arest" = ps: with ps; [ ];
-    "arlo" = ps: with ps; [ ha-ffmpeg ]; # missing inputs: pyarlo
+    "arlo" = ps: with ps; [ ha-ffmpeg pyarlo ];
     "arris_tg2492lg" = ps: with ps; [ ]; # missing inputs: arris-tg2492lg
     "aruba" = ps: with ps; [ pexpect ];
     "arwn" = ps: with ps; [ aiohttp-cors paho-mqtt ];
@@ -60,9 +60,8 @@
     "aurora_abb_powerone" = ps: with ps; [ ]; # missing inputs: aurorapy
     "auth" = ps: with ps; [ aiohttp-cors ];
     "automation" = ps: with ps; [ aiohttp-cors ];
-    "avea" = ps: with ps; [ ]; # missing inputs: avea
+    "avea" = ps: with ps; [ avea ];
     "avion" = ps: with ps; [ ]; # missing inputs: avion
-    "avri" = ps: with ps; [ pycountry ]; # missing inputs: avri-api
     "awair" = ps: with ps; [ ]; # missing inputs: python_awair
     "aws" = ps: with ps; [ aiobotocore ];
     "axis" = ps: with ps; [ aiohttp-cors paho-mqtt ]; # missing inputs: axis
@@ -166,7 +165,7 @@
     "device_sun_light_trigger" = ps: with ps; [ aiohttp-cors pillow ];
     "device_tracker" = ps: with ps; [ ];
     "devolo_home_control" = ps: with ps; [ aiohttp-cors zeroconf ]; # missing inputs: devolo-home-control-api
-    "dexcom" = ps: with ps; [ ]; # missing inputs: pydexcom
+    "dexcom" = ps: with ps; [ pydexcom ];
     "dht" = ps: with ps; [ ]; # missing inputs: Adafruit-DHT
     "dialogflow" = ps: with ps; [ aiohttp-cors ];
     "digital_ocean" = ps: with ps; [ digital-ocean ];
@@ -256,9 +255,9 @@
     "fireservicerota" = ps: with ps; [ ]; # missing inputs: pyfireservicerota
     "firmata" = ps: with ps; [ ]; # missing inputs: pymata-express
     "fitbit" = ps: with ps; [ aiohttp-cors fitbit ];
-    "fixer" = ps: with ps; [ ]; # missing inputs: fixerio
+    "fixer" = ps: with ps; [ fixerio ];
     "fleetgo" = ps: with ps; [ ]; # missing inputs: ritassist
-    "flexit" = ps: with ps; [ ]; # missing inputs: pyflexit pymodbus
+    "flexit" = ps: with ps; [ pymodbus ]; # missing inputs: pyflexit
     "flic" = ps: with ps; [ ]; # missing inputs: pyflic-homeassistant
     "flick_electric" = ps: with ps; [ ]; # missing inputs: PyFlick
     "flo" = ps: with ps; [ ]; # missing inputs: aioflo
@@ -310,10 +309,10 @@
     "gogogate2" = ps: with ps; [ ]; # missing inputs: gogogate2-api
     "google" = ps: with ps; [ google_api_python_client httplib2 oauth2client ];
     "google_assistant" = ps: with ps; [ aiohttp-cors ];
-    "google_cloud" = ps: with ps; [ google_cloud_texttospeech ];
+    "google_cloud" = ps: with ps; [ google-cloud-texttospeech ];
     "google_domains" = ps: with ps; [ ];
     "google_maps" = ps: with ps; [ ]; # missing inputs: locationsharinglib
-    "google_pubsub" = ps: with ps; [ google_cloud_pubsub ];
+    "google_pubsub" = ps: with ps; [ google-cloud-pubsub ];
     "google_translate" = ps: with ps; [ gtts ];
     "google_travel_time" = ps: with ps; [ googlemaps ];
     "google_wifi" = ps: with ps; [ ];
@@ -424,7 +423,7 @@
     "konnected" = ps: with ps; [ aiohttp-cors ]; # missing inputs: konnected
     "kulersky" = ps: with ps; [ ]; # missing inputs: pykulersky
     "kwb" = ps: with ps; [ ]; # missing inputs: pykwb
-    "lacrosse" = ps: with ps; [ ]; # missing inputs: pylacrosse
+    "lacrosse" = ps: with ps; [ pylacrosse ];
     "lametric" = ps: with ps; [ ]; # missing inputs: lmnotify
     "lannouncer" = ps: with ps; [ ];
     "lastfm" = ps: with ps; [ pylast ];
@@ -503,7 +502,7 @@
     "mjpeg" = ps: with ps; [ ];
     "mobile_app" = ps: with ps; [ pynacl aiohttp-cors emoji hass-nabucasa pillow ];
     "mochad" = ps: with ps; [ ]; # missing inputs: pymochad
-    "modbus" = ps: with ps; [ ]; # missing inputs: pymodbus
+    "modbus" = ps: with ps; [ pymodbus ];
     "modem_callerid" = ps: with ps; [ ]; # missing inputs: basicmodem
     "mold_indicator" = ps: with ps; [ ];
     "monoprice" = ps: with ps; [ ]; # missing inputs: pymonoprice
@@ -528,7 +527,7 @@
     "nad" = ps: with ps; [ ]; # missing inputs: nad_receiver
     "namecheapdns" = ps: with ps; [ defusedxml ];
     "nanoleaf" = ps: with ps; [ pynanoleaf ];
-    "neato" = ps: with ps; [ pybotvac ];
+    "neato" = ps: with ps; [ aiohttp-cors pybotvac ];
     "nederlandse_spoorwegen" = ps: with ps; [ ]; # missing inputs: nsapi
     "nello" = ps: with ps; [ ]; # missing inputs: pynello
     "ness_alarm" = ps: with ps; [ ]; # missing inputs: nessclient
@@ -624,7 +623,7 @@
     "plex" = ps: with ps; [ aiohttp-cors plexapi plexauth plexwebsocket pysonos ];
     "plugwise" = ps: with ps; [ ]; # missing inputs: plugwise
     "plum_lightpad" = ps: with ps; [ ]; # missing inputs: plumlightpad
-    "pocketcasts" = ps: with ps; [ ]; # missing inputs: pocketcasts
+    "pocketcasts" = ps: with ps; [ ]; # missing inputs: pycketcasts
     "point" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pypoint
     "poolsense" = ps: with ps; [ ]; # missing inputs: poolsense
     "powerwall" = ps: with ps; [ ]; # missing inputs: tesla-powerwall
@@ -785,7 +784,7 @@
     "statistics" = ps: with ps; [ sqlalchemy ];
     "statsd" = ps: with ps; [ statsd ];
     "steam_online" = ps: with ps; [ ]; # missing inputs: steamodd
-    "stiebel_eltron" = ps: with ps; [ ]; # missing inputs: pymodbus pystiebeleltron
+    "stiebel_eltron" = ps: with ps; [ pymodbus ]; # missing inputs: pystiebeleltron
     "stookalert" = ps: with ps; [ ]; # missing inputs: stookalert
     "stream" = ps: with ps; [ aiohttp-cors av ];
     "streamlabswater" = ps: with ps; [ ]; # missing inputs: streamlabswater
@@ -839,7 +838,7 @@
     "threshold" = ps: with ps; [ ];
     "tibber" = ps: with ps; [ ]; # missing inputs: pyTibber
     "tikteck" = ps: with ps; [ ]; # missing inputs: tikteck
-    "tile" = ps: with ps; [ ]; # missing inputs: pytile
+    "tile" = ps: with ps; [ pytile ];
     "time_date" = ps: with ps; [ ];
     "timer" = ps: with ps; [ ];
     "tmb" = ps: with ps; [ ]; # missing inputs: tmb
diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix
index 68d11e85fd2a..4f9698c536f2 100644
--- a/pkgs/servers/home-assistant/default.nix
+++ b/pkgs/servers/home-assistant/default.nix
@@ -62,7 +62,7 @@ let
   extraBuildInputs = extraPackages py.pkgs;
 
   # Don't forget to run parse-requirements.py after updating
-  hassVersion = "2020.12.2";
+  hassVersion = "2021.1.0";
 
 in with py.pkgs; buildPythonApplication rec {
   pname = "homeassistant";
@@ -71,6 +71,9 @@ in with py.pkgs; buildPythonApplication rec {
   # check REQUIRED_PYTHON_VER in homeassistant/const.py
   disabled = pythonOlder "3.7.1";
 
+  # don't try and fail to strip 6600+ python files, it takes minutes!
+  dontStrip = true;
+
   inherit availableComponents;
 
   # PyPI tarball is missing tests/ directory
@@ -78,7 +81,7 @@ in with py.pkgs; buildPythonApplication rec {
     owner = "home-assistant";
     repo = "core";
     rev = version;
-    sha256 = "1hd3z0bvscrg0ihy26djm1x9cj1pkdbnsgpzhdy42j8vy80q9bxr";
+    sha256 = "14njb2j16h536xq5df4zpna874fxjcd6fqr881y6mq081f00i0r0";
   };
 
   # leave this in, so users don't have to constantly update their downstream patch handling
@@ -176,6 +179,11 @@ in with py.pkgs; buildPythonApplication rec {
     "test_cached_event_message"
     # ValueError: count must be a positive integer (got 0)
     "test_media_view"
+    # AssertionError: len(events) == 1
+    "test_error_posted_as_event"
+    # keyring.errors.NoKeyringError: No recommended backend was available.
+    "test_secrets_from_unrelated_fails"
+    "test_secrets_credstash"
   ];
 
   preCheck = ''
diff --git a/pkgs/servers/home-assistant/frontend.nix b/pkgs/servers/home-assistant/frontend.nix
index 36f89dc0069e..9606f8645a1d 100644
--- a/pkgs/servers/home-assistant/frontend.nix
+++ b/pkgs/servers/home-assistant/frontend.nix
@@ -4,13 +4,16 @@ buildPythonPackage rec {
   # the frontend version corresponding to a specific home-assistant version can be found here
   # https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json
   pname = "home-assistant-frontend";
-  version = "20201212.0";
+  version = "20201229.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1nz5f7bpj0xs740af8i6j33idff6yzx7z9vydlah2sxcdgpwmz84";
+    sha256 = "sha256-3JMWugAiVDq/NBgX8ft2Bchim2g493jy7wZvvXrX+Ws=";
   };
 
+  # there is nothing to strip in this package
+  dontStrip = true;
+
   # no Python tests implemented
   doCheck = false;
 
diff --git a/pkgs/servers/home-assistant/update.sh b/pkgs/servers/home-assistant/update.sh
index 11189cf3577a..e80b7acbed0f 100755
--- a/pkgs/servers/home-assistant/update.sh
+++ b/pkgs/servers/home-assistant/update.sh
@@ -31,4 +31,4 @@ sed -i -e "s/hassVersion =.*/hassVersion = \"${TARGET_VERSION}\";/" \
 )
 
 git add ./component-packages.nix ./default.nix ./frontend.nix
-git commit -m "homeassistant: ${CURRENT_VERSION} -> ${TARGET_VERSION}"
+git commit -m "home-assistant: ${CURRENT_VERSION} -> ${TARGET_VERSION}"
diff --git a/pkgs/servers/metabase/default.nix b/pkgs/servers/metabase/default.nix
index 25702df7b380..2c51b3399f06 100644
--- a/pkgs/servers/metabase/default.nix
+++ b/pkgs/servers/metabase/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "metabase";
-  version = "0.37.4";
+  version = "0.37.5";
 
   src = fetchurl {
     url = "https://downloads.metabase.com/v${version}/metabase.jar";
-    sha256 = "0l781b7mc33kkp4ic57ylghxw671b4ldv6b0wgphmrrwmp0cd3vm";
+    sha256 = "1wvq5nx3y28w8wn6wyy650gc32hgkx7inbcylrdirhagzqhcm8z6";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/servers/misc/oven-media-engine/default.nix b/pkgs/servers/misc/oven-media-engine/default.nix
index 7faf8a9cfeeb..d6bdef687325 100644
--- a/pkgs/servers/misc/oven-media-engine/default.nix
+++ b/pkgs/servers/misc/oven-media-engine/default.nix
@@ -1,5 +1,6 @@
 { stdenv
 , fetchFromGitHub
+, fetchpatch
 , srt
 , ffmpeg_3_4
 , bc
@@ -12,6 +13,7 @@
 , libopus
 , srtp
 , jemalloc
+, pcre2
 }:
 
 let
@@ -27,21 +29,30 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "oven-media-engine";
-  version = "0.10.8";
+  version = "0.10.9-hotfix";
 
   src = fetchFromGitHub {
     owner = "AirenSoft";
     repo = "OvenMediaEngine";
     rev = "v${version}";
-    sha256 = "ec4yvS+4/rTBHGEx2OP0yoNGDtzPucFOcZJ0o0cCAHg=";
+    sha256 = "1fhria0vwqsgmsglv5gn858li33vfy2dwy1f1qdd2jwikskb53am";
   };
 
+  patches = [
+    (fetchpatch {
+      # Needed to fix compilation under GCC 10.
+      url = "https://github.com/AirenSoft/OvenMediaEngine/commit/ad83e1d2226445d649e4b7e0c75106e31af4940d.patch";
+      sha256 = "1zk1rgi1wsjl6gdx3hdmgxlgindv6a3lsnkwcgi87ga9abw4vafw";
+      stripLen = 1;
+    })
+  ];
+
   sourceRoot = "source/src";
   makeFlags = "release CONFIG_LIBRARY_PATHS= CONFIG_PKG_PATHS= GLOBAL_CC=$(CC) GLOBAL_CXX=$(CXX) GLOBAL_LD=$(CXX) SHELL=${stdenv.shell}";
   enableParallelBuilding = true;
 
   nativeBuildInputs = [ bc pkgconfig perl ];
-  buildInputs = [ openssl srt zlib ffmpeg libvpx libopus srtp jemalloc ];
+  buildInputs = [ openssl srt zlib ffmpeg libvpx libopus srtp jemalloc pcre2 ];
 
   preBuild = ''
     patchShebangs core/colorg++
@@ -62,7 +73,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     description = "Open-source streaming video service with sub-second latency";
     homepage    = "https://ovenmediaengine.com";
-    license     = licenses.gpl2;
+    license     = licenses.gpl2Only;
     maintainers = with maintainers; [ lukegb ];
     platforms   = [ "x86_64-linux" ];
   };
diff --git a/pkgs/servers/monitoring/telegraf/default.nix b/pkgs/servers/monitoring/telegraf/default.nix
index 2080195dc566..76acc2822f40 100644
--- a/pkgs/servers/monitoring/telegraf/default.nix
+++ b/pkgs/servers/monitoring/telegraf/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "telegraf";
-  version = "1.16.3";
+  version = "1.17.0";
 
   excludedPackages = "test";
 
@@ -12,10 +12,10 @@ buildGoModule rec {
     owner = "influxdata";
     repo = "telegraf";
     rev = "v${version}";
-    sha256 = "1vhxa1sdnkjy86rn2zsyf8kc3nn2fdbym3kw5zxz88mjc8iq3x0d";
+    sha256 = "1j3wi398vcvlnf1q335hhbw6bq69qclak92sg2na05cl4snw68y0";
   };
 
-  vendorSha256 = "12rh8pggpdjgw9x23qa99cj7i67iqchacgzd11m4ficxv8a4bkyc";
+  vendorSha256 = "0vb1gvmj7pmz4dljyk91smkn8japmv7mc3mgb0s1imvxala8qq83";
 
   buildFlagsArray = [ ''-ldflags=
     -w -s -X main.version=${version}
@@ -27,6 +27,6 @@ buildGoModule rec {
     description = "The plugin-driven server agent for collecting & reporting metrics";
     license = licenses.mit;
     homepage = "https://www.influxdata.com/time-series-platform/telegraf/";
-    maintainers = with maintainers; [ mic92 roblabla foxit64 ];
+    maintainers = with maintainers; [ mic92 roblabla timstott foxit64 ];
   };
 }
diff --git a/pkgs/servers/nextcloud/default.nix b/pkgs/servers/nextcloud/default.nix
index 8d4b52a01593..a1c38cdbe28d 100644
--- a/pkgs/servers/nextcloud/default.nix
+++ b/pkgs/servers/nextcloud/default.nix
@@ -53,7 +53,7 @@ in {
     version = "19.0.6";
     sha256 = "sha256-pqqIayE0OyTailtd2zeYi+G1APjv/YHqyO8jCpq7KJg=";
     extraVulnerabilities = [
-      "Nextcloud 19 is still supported, but CVE-2020-8259 & CVE-2020-8152 are unfixed!"
+      "Nextcloud 19 is still supported, but CVE-2020-8259 & CVE-2020-8152 are unfixed! Please note that both CVEs only affect the file encryption module which is turned off by default. Alternatively, `pkgs.nextcloud20` can be used."
     ];
   };
 
diff --git a/pkgs/servers/nzbhydra2/default.nix b/pkgs/servers/nzbhydra2/default.nix
new file mode 100644
index 000000000000..3ba758c10885
--- /dev/null
+++ b/pkgs/servers/nzbhydra2/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchzip, makeWrapper, jre, python3, unzip }:
+
+stdenv.mkDerivation rec {
+  pname = "nzbhydra2";
+  version = "3.8.0";
+
+  src = fetchzip {
+    url = "https://github.com/theotherp/${pname}/releases/download/v${version}/${pname}-${version}-linux.zip";
+    sha512 = "1gybricq26hixr5cmw1iwyax7h17d0n5wqzhrx727xda1x35jfjp5ynjdkxzysbfhs1za6vy54bpm0sda4nkrh16p0xqnz3nsd4hvzh";
+    stripRoot = false;
+  };
+
+  nativeBuildInputs = [ jre makeWrapper unzip ];
+
+  installPhase = ''
+    install -d -m 755 "$out/lib/${pname}"
+    cp -dpr --no-preserve=ownership "lib" "readme.md" "$out/lib/nzbhydra2"
+    install -D -m 755 "nzbhydra2wrapperPy3.py" "$out/lib/nzbhydra2/nzbhydra2wrapperPy3.py"
+
+    makeWrapper ${python3}/bin/python $out/bin/nzbhydra2 \
+      --add-flags "$out/lib/nzbhydra2/nzbhydra2wrapperPy3.py" \
+      --prefix PATH ":" ${jre}/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Usenet meta search";
+    homepage = "https://github.com/theotherp/nzbhydra2";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ jamiemagee ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/pkgs/servers/slimserver/default.nix b/pkgs/servers/slimserver/default.nix
index 8be2cc15d4a7..d045543813c5 100644
--- a/pkgs/servers/slimserver/default.nix
+++ b/pkgs/servers/slimserver/default.nix
@@ -14,6 +14,7 @@ perlPackages.buildPerlPackage rec {
     makeWrapper
     perlPackages.perl
     perlPackages.AnyEvent
+    perlPackages.ArchiveZip
     perlPackages.AudioScan
     perlPackages.CarpClan
     perlPackages.CGI
diff --git a/pkgs/servers/sql/patroni/default.nix b/pkgs/servers/sql/patroni/default.nix
index bd06aa2ff7db..682dbe45f7d0 100644
--- a/pkgs/servers/sql/patroni/default.nix
+++ b/pkgs/servers/sql/patroni/default.nix
@@ -52,6 +52,6 @@ pythonPackages.buildPythonApplication rec {
     description = "A Template for PostgreSQL HA with ZooKeeper, etcd or Consul";
     license = licenses.mit;
     platforms = platforms.linux;
-    maintainers = [ maintainers.limeytexan ];
+    maintainers = teams.deshaw.members;
   };
 }
diff --git a/pkgs/servers/sql/postgresql/default.nix b/pkgs/servers/sql/postgresql/default.nix
index ed3fe43faebd..20e3637f40c6 100644
--- a/pkgs/servers/sql/postgresql/default.nix
+++ b/pkgs/servers/sql/postgresql/default.nix
@@ -13,7 +13,10 @@ let
       , this, self, newScope, buildEnv
 
       # source specification
-      , version, sha256, psqlSchema
+      , version, sha256, psqlSchema,
+
+      # for tests
+      nixosTests, thisAttr
     }:
   let
     atLeast = lib.versionAtLeast version;
@@ -142,6 +145,8 @@ let
                        postgresql = this;
                      }
                      this.pkgs;
+
+      tests.postgresql = nixosTests.postgresql-wal-receiver.${thisAttr};
     };
 
     meta = with lib; {
@@ -191,6 +196,7 @@ in self: {
     psqlSchema = "9.5";
     sha256 = "0an2k4m1da96897hyxlff8p4p63wg4dffwsfg57aib7mp4yzsp06";
     this = self.postgresql_9_5;
+    thisAttr = "postgresql_9_5";
     inherit self;
   };
 
@@ -199,6 +205,7 @@ in self: {
     psqlSchema = "9.6";
     sha256 = "1dkv916y7vrfbygrfbfvs6y3fxaysnh32i5j88nvcnnl16jcn21x";
     this = self.postgresql_9_6;
+    thisAttr = "postgresql_9_6";
     inherit self;
   };
 
@@ -207,6 +214,7 @@ in self: {
     psqlSchema = "10.0"; # should be 10, but changing it is invasive
     sha256 = "0zhzj9skag1pgqas2rnd217vj41ilaalqna17j47gyngpvhbqmjr";
     this = self.postgresql_10;
+    thisAttr = "postgresql_10";
     inherit self;
   };
 
@@ -215,6 +223,7 @@ in self: {
     psqlSchema = "11.1"; # should be 11, but changing it is invasive
     sha256 = "16bqp6ds37kbwqx7mk5gg3y6gv59wq6xz33iqwxldzk20vwd5rhk";
     this = self.postgresql_11;
+    thisAttr = "postgresql_11";
     inherit self;
   };
 
@@ -223,6 +232,7 @@ in self: {
     psqlSchema = "12";
     sha256 = "15gzg778da23sbfmy7sqg443f9ny480301lm7i3vay4m3ls2a3dx";
     this = self.postgresql_12;
+    thisAttr = "postgresql_12";
     inherit self;
   };
 
@@ -231,6 +241,7 @@ in self: {
     psqlSchema = "13";
     sha256 = "07z6zwr58dckaa97yl9ml240z83d1lhgaxw9aq49i8lsp21mqd0j";
     this = self.postgresql_13;
+    thisAttr = "postgresql_13";
     inherit self;
   };
 }
diff --git a/pkgs/servers/sql/postgresql/ext/timescaledb.nix b/pkgs/servers/sql/postgresql/ext/timescaledb.nix
index 76619b83c142..55d2cd81a217 100644
--- a/pkgs/servers/sql/postgresql/ext/timescaledb.nix
+++ b/pkgs/servers/sql/postgresql/ext/timescaledb.nix
@@ -8,7 +8,7 @@
 
 stdenv.mkDerivation rec {
   pname = "timescaledb";
-  version = "1.7.4";
+  version = "2.0.0";
 
   nativeBuildInputs = [ cmake ];
   buildInputs = [ postgresql openssl ];
@@ -17,10 +17,11 @@ stdenv.mkDerivation rec {
     owner  = "timescale";
     repo   = "timescaledb";
     rev    = "refs/tags/${version}";
-    sha256 = "0w0sl5izwic3j1k94xhky2y4wkd8l18m5hcknj5vqxq3ryhxaszc";
+    sha256 = "0id1h46490mjqp8ijhv2qswpdli2nh2z15mgh6gfc2wl3bhwhi1g";
   };
 
-  cmakeFlags = [ "-DSEND_TELEMETRY_DEFAULT=OFF" "-DREGRESS_CHECKS=OFF" ];
+  # -DWARNINGS_AS_ERRORS=OFF to be removed once https://github.com/timescale/timescaledb/issues/2770 is fixed in upstream
+  cmakeFlags = [ "-DSEND_TELEMETRY_DEFAULT=OFF" "-DREGRESS_CHECKS=OFF" "-DWARNINGS_AS_ERRORS=OFF" ];
 
   # Fix the install phase which tries to install into the pgsql extension dir,
   # and cannot be manually overridden. This is rather fragile but works OK.
diff --git a/pkgs/servers/web-apps/jirafeau/default.nix b/pkgs/servers/web-apps/jirafeau/default.nix
index 33cde2c5922c..b9e31c6d094a 100644
--- a/pkgs/servers/web-apps/jirafeau/default.nix
+++ b/pkgs/servers/web-apps/jirafeau/default.nix
@@ -1,5 +1,4 @@
 { stdenv, fetchFromGitLab, writeText }:
-
 let
   localConfig = writeText "config.local.php" ''
     <?php
@@ -9,13 +8,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "jirafeau";
-  version = "4.1.1";
+  version = "4.3.0";
 
   src = fetchFromGitLab {
     owner = "mojo42";
     repo = "Jirafeau";
     rev = version;
-    sha256 = "09gq5zhynygpqj0skq7ifnn9yjjg7qnc6kjvaas7f53av2707z4c";
+    hash = "sha256-9v6rtxViXsolx5AKSp2HxcFyU1XJWFSiqzTBl+dQBD4=";
   };
 
   installPhase = ''
diff --git a/pkgs/shells/oksh/default.nix b/pkgs/shells/oksh/default.nix
new file mode 100644
index 000000000000..7ec70e53bd28
--- /dev/null
+++ b/pkgs/shells/oksh/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, lib, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "oksh";
+  version = "6.8.1";
+
+  src = fetchFromGitHub {
+    owner = "ibara";
+    repo = pname;
+    rev = "${pname}-${version}";
+    sha256 = "0lny550qfanysc4pqs0mxxx8zyz6plv9ll8y05gz0xmq9vx5384r";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Portable OpenBSD ksh, based on the Public Domain Korn Shell (pdksh)";
+    homepage = "https://github.com/ibara/oksh";
+    license = licenses.publicDomain;
+    maintainers = with maintainers; [ siraben ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/shells/zsh/oh-my-zsh/default.nix b/pkgs/shells/zsh/oh-my-zsh/default.nix
index 2d13bf8e9255..429d1c55c8b2 100644
--- a/pkgs/shells/zsh/oh-my-zsh/default.nix
+++ b/pkgs/shells/zsh/oh-my-zsh/default.nix
@@ -5,15 +5,15 @@
 , nix, nixfmt, jq, coreutils, gnused, curl, cacert }:
 
 stdenv.mkDerivation rec {
-  version = "2021-01-05";
+  version = "2021-01-07";
   pname = "oh-my-zsh";
-  rev = "86f805280f6a8cf65d8d0a9380489aae4b72f767";
+  rev = "c9bf8b4a84d4ae392cf1bdd6a4a7c7c4f7710b92";
 
   src = fetchFromGitHub {
     inherit rev;
     owner = "ohmyzsh";
     repo = "ohmyzsh";
-    sha256 = "1wf4g1z7fvravsp020xdqvczf4kcw1nh3b22djlsgd97n8qgziaz";
+    sha256 = "13i4r2bhffdjcln5cml29m9gzw9m39yxcln49h3shpp7s1gl3z4a";
   };
 
   installPhase = ''
diff --git a/pkgs/tools/X11/opentabletdriver/default.nix b/pkgs/tools/X11/opentabletdriver/default.nix
index 486cb50b7f39..dc527f47dd34 100644
--- a/pkgs/tools/X11/opentabletdriver/default.nix
+++ b/pkgs/tools/X11/opentabletdriver/default.nix
@@ -17,6 +17,7 @@
 , copyDesktopItems
 , makeDesktopItem
 , makeWrapper
+, nixosTests
 , wrapGAppsHook
 }:
 
@@ -154,6 +155,10 @@ stdenv.mkDerivation rec {
   dontWrapGApps = true;
   dontStrip = true;
 
+  passthru.tests = {
+    otd-runs = nixosTests.opentabletdriver;
+  };
+
   meta = with lib; {
     description = "Open source, cross-platform, user-mode tablet driver";
     homepage = "https://github.com/InfinityGhost/OpenTabletDriver";
diff --git a/pkgs/tools/admin/amazon-ec2-utils/default.nix b/pkgs/tools/admin/amazon-ec2-utils/default.nix
new file mode 100644
index 000000000000..2dc91f037a98
--- /dev/null
+++ b/pkgs/tools/admin/amazon-ec2-utils/default.nix
@@ -0,0 +1,53 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, curl
+, python3
+}:
+stdenv.mkDerivation rec {
+  pname = "amazon-ec2-utils";
+  version = "1.3";
+
+  src = fetchFromGitHub {
+    owner = "aws";
+    repo = "amazon-ec2-utils";
+    rev = version;
+    hash = "sha256:04dpxaaca144a74r6d93q4lp0d5l32v07rldj7v2v1c6s9nsf4mv";
+  };
+
+  buildInputs = [
+    python3
+  ];
+
+  propagatedBuildInputs = [
+    curl
+  ];
+
+  installPhase = ''
+    mkdir -p $out/bin/
+
+    cp ebsnvme-id $out/bin/
+    cp ec2-metadata $out/bin/
+    cp ec2udev-vbd $out/bin/
+    cp ec2udev-vcpu $out/bin/
+
+    chmod +x $out/bin/*
+  '';
+
+  doInstallCheck = true;
+
+  # We cannot run
+  #     ec2-metadata --help
+  # because it actually checks EC2 metadata even if --help is given
+  # so it won't work in the test sandbox.
+  installCheckPhase = ''
+    $out/bin/ebsnvme-id --help
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/aws/amazon-ec2-utils";
+    description = "Contains a set of utilities and settings for Linux deployments in EC2";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ketzacoatl ];
+  };
+}
diff --git a/pkgs/tools/admin/awscli/default.nix b/pkgs/tools/admin/awscli/default.nix
index b3052cb41b01..772c4a2f3b9f 100644
--- a/pkgs/tools/admin/awscli/default.nix
+++ b/pkgs/tools/admin/awscli/default.nix
@@ -28,11 +28,11 @@ let
 
 in with py.pkgs; buildPythonApplication rec {
   pname = "awscli";
-  version = "1.18.209"; # N.B: if you change this, change botocore to a matching version too
+  version = "1.18.211"; # N.B: if you change this, change botocore to a matching version too
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-Le+vjLdXquZiFPuO9v73vm1/iFDaRCNDjXX719AtAxE=";
+    sha256 = "sha256-dkPdr0Q05CjeNg1FKbye4Ndtfakido0wKR22Afls3Mk=";
   };
 
   postPatch = ''
diff --git a/pkgs/tools/admin/lxd/default.nix b/pkgs/tools/admin/lxd/default.nix
index 0a079c5107f9..5462393517b8 100644
--- a/pkgs/tools/admin/lxd/default.nix
+++ b/pkgs/tools/admin/lxd/default.nix
@@ -18,13 +18,13 @@ let
 in
 buildGoPackage rec {
   pname = "lxd";
-  version = "4.9";
+  version = "4.10";
 
   goPackagePath = "github.com/lxc/lxd";
 
   src = fetchurl {
     url = "https://github.com/lxc/lxd/releases/download/${pname}-${version}/${pname}-${version}.tar.gz";
-    sha256 = "0sq3avgsrdzkbsil0xsri60xxi0bzf4l6w43w23lbhacrby1spj4";
+    sha256 = "0s8lbvh2vsqphvspyjyxp5s589gf2wrjpka8v496lf6fv1nsi5s8";
   };
 
   postPatch = ''
diff --git a/pkgs/tools/admin/pulumi/data.nix b/pkgs/tools/admin/pulumi/data.nix
index 1bcee96c9fff..08f61da03076 100644
--- a/pkgs/tools/admin/pulumi/data.nix
+++ b/pkgs/tools/admin/pulumi/data.nix
@@ -1,60 +1,60 @@
 # DO NOT EDIT! This file is generated automatically by update.sh
 { }:
 {
-  version = "2.15.0";
+  version = "2.17.0";
   pulumiPkgs = {
     x86_64-linux = [
       {
-        url = "https://get.pulumi.com/releases/sdk/pulumi-v2.15.0-linux-x64.tar.gz";
-        sha256 = "0yvzqqcfmgblig5jwdc07phyhnfjzvjd1qm0vgfi9ll9y88l33lc";
+        url = "https://get.pulumi.com/releases/sdk/pulumi-v2.17.0-linux-x64.tar.gz";
+        sha256 = "0k2vdgyb75krjqb9kikkfpvd6rn90gm6dzbpgzsycrwrmbx3rk79";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v1.3.0-linux-amd64.tar.gz";
-        sha256 = "1rpmzra42kx2jnhdbnqg120lbnpw86y00vkqbqc3qyagi260f01g";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v1.5.1-linux-amd64.tar.gz";
+        sha256 = "0qghccr8kj21scsil4ibc19y3sgrsyzs5c04a5ppv1k62y89h7m7";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v3.19.0-linux-amd64.tar.gz";
-        sha256 = "0y0j1aflrfas9sfr4g7jbn2cnhlz9hpz5il6qykz0m01v6sv604w";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v3.23.0-linux-amd64.tar.gz";
+        sha256 = "125jqdjn9iipnjj3xgwvcfhcq0xi8xvn8mgs17g79xwbbxpvrjiv";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v2.8.0-linux-amd64.tar.gz";
-        sha256 = "174b6r2vhbf9svknidd05sccjzihp97wcd8jwy6dll83d8f8v2xn";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v2.11.0-linux-amd64.tar.gz";
+        sha256 = "14pdsvgd512qflvkc1890q9wrri2rrcjdjw5n9lf2qb2m7wvns4y";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v2.6.2-linux-amd64.tar.gz";
         sha256 = "0xq36wh57w7b7l5skx173lj3chl4rfgbfdivsvyjlnfahh2fmfr4";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v2.11.0-linux-amd64.tar.gz";
-        sha256 = "0p2i0k0js3js35jcphf64rzxs7zg9wq25yfzd9q6b2kp2vyqbvjs";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v2.14.0-linux-amd64.tar.gz";
+        sha256 = "0vj9674msiadnhmcypqv3dvhkl60sms9frjzpf4hnhlimxc9fpdd";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v3.1.1-linux-amd64.tar.gz";
-        sha256 = "1hzf4668sljy2g6s9xz6lvn8cbjy8bb2flhdmc4ln69xxcsslj9z";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v3.2.0-linux-amd64.tar.gz";
+        sha256 = "1qipbpp74690w7n42dfsp8524gdjvm8z5665rmsy7mbdi2bd2x5v";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v2.4.1-linux-amd64.tar.gz";
-        sha256 = "0fr8ac7864ph02hhl3f08xjyk626c4zbcf8nr7xhmh2ifz6sj9sl";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v2.6.0-linux-amd64.tar.gz";
+        sha256 = "0khbcgqbssndx8fwb34ny0wcpy3xi165lq8dq224q1f9bjbklbml";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v4.4.0-linux-amd64.tar.gz";
-        sha256 = "0zx9yy97n0wk87ylgq67nphagfp1gas5z99mcfmlh9rf4mj8fhpz";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v4.6.1-linux-amd64.tar.gz";
+        sha256 = "13x9yxfyx65pqgsnpdfi12z6fg3b50fzkmsffvwi80857z2389rg";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v2.3.0-linux-amd64.tar.gz";
-        sha256 = "02c0nmnk27q9ssv7wv8s30ysxnkqbq7sd004gia4wxf97fhlhl5x";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v2.4.1-linux-amd64.tar.gz";
+        sha256 = "1s8g32d06dfaayjhga3skdh7vsrv5ysmhz6ygg202pqqpiy27vl5";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v3.3.0-linux-amd64.tar.gz";
-        sha256 = "01rpv9m6mj8yqz302g15x4yp37pp4ghdc686n4l7xz08xdb209xi";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v3.4.0-linux-amd64.tar.gz";
+        sha256 = "0diylv5kbxjhwvwmwil6l8ln9lijmjnxwgf4yd0rhad118zpibnp";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v0.4.0-linux-amd64.tar.gz";
-        sha256 = "1w4cjgccm29ncqb7jfsf9ajlvq0q8h5mnz4v5lxwyx21n80kq34p";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v0.4.1-linux-amd64.tar.gz";
+        sha256 = "1851nx4mmgc2j4jihcqxlx5c5dx95xbc2h0kxr055zvdfg2wcp8i";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v2.7.3-linux-amd64.tar.gz";
-        sha256 = "0imqwx4v6qsk10anxvnaxpxg87mm34x0qcq30c435mcfrly728sp";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v2.7.5-linux-amd64.tar.gz";
+        sha256 = "0f90v8q00hhqrnmwa17gl9sas61bzqsgblpaw1p48agnjxa76vnz";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v2.3.1-linux-amd64.tar.gz";
@@ -65,8 +65,8 @@
         sha256 = "12gs049074vn5s0njza0r48bk5z8d7bfc50j2mbbylkdrlrl87ci";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v2.9.0-linux-amd64.tar.gz";
-        sha256 = "1vqzl72q939i381vy6dkn75xv09vjs2mg2prbmx63j3hylgb9m6r";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v2.10.1-linux-amd64.tar.gz";
+        sha256 = "16mq1ymvkql3l6f3rsinm4yfxfl9qcpwfmhc8k1vj79h6gkd29cz";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-packet-v3.2.2-linux-amd64.tar.gz";
@@ -77,70 +77,70 @@
         sha256 = "1xxhc5sy3z391dgzzb4s6wzad2n2j3f5g158wffcj8jss2ylbh1x";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v2.4.2-linux-amd64.tar.gz";
-        sha256 = "02xq4mph35fnziz6fb230cvd828yfs030nmi3a4hwh4w1xbr24iw";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v3.0.0-linux-amd64.tar.gz";
+        sha256 = "1q8ifm8xmny04y38bswclaa065x657sjq9b573fxrnv9gv9nx5sy";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v3.1.0-linux-amd64.tar.gz";
-        sha256 = "0avlf8gyh52zc11a87izy2v8iy4zvbfv6zrm8zg1i5ar43xqg3pm";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v3.2.0-linux-amd64.tar.gz";
+        sha256 = "047izxnmsykmk3dpm2q4zxhi575hiqlb1l7xx6sy43dh6ink16jb";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v2.11.2-linux-amd64.tar.gz";
-        sha256 = "1wb953vm990c4dsb757msmz7ws844alad3g68sfy029cgmnf8q5i";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v2.11.3-linux-amd64.tar.gz";
+        sha256 = "1g32kjvh7zp6f4n4qy457s45qf9ddrzyd5ncfdvpsd0dirjf4crg";
       }
     ];
     x86_64-darwin = [
       {
-        url = "https://get.pulumi.com/releases/sdk/pulumi-v2.15.0-darwin-x64.tar.gz";
-        sha256 = "08hyk06qwm1aibpyqb07h83gc6nfp0cwf6hikf8mc18b2mrwr27r";
+        url = "https://get.pulumi.com/releases/sdk/pulumi-v2.17.0-darwin-x64.tar.gz";
+        sha256 = "0pa1a4j977cn3m43zia75aj4g5bqr69n0a4hha72dbnnid4d72g8";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v1.3.0-darwin-amd64.tar.gz";
-        sha256 = "0ih9l3pkqxfslc11qcgwshxqxbcwy5wfpjczahny6mkgqwmxixnx";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v1.5.1-darwin-amd64.tar.gz";
+        sha256 = "1q3r1a3wqzaw78abiz97364a9qgr3rr1m83kyjni3jhs5cgxbax0";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v3.19.0-darwin-amd64.tar.gz";
-        sha256 = "0yqm66av2yb9qndpkxxisjml66dyg3zhzkb9fr6kywx8xar4gfdp";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v3.23.0-darwin-amd64.tar.gz";
+        sha256 = "0h4g49zr6gxvyavd9pzvlmnzxjqnnzh27dhz6007c10rgn894yba";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v2.8.0-darwin-amd64.tar.gz";
-        sha256 = "02is7mfbzhv8bkyn4vk1x9b6m1v9c21chihpry6cjdhpq46bfssf";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v2.11.0-darwin-amd64.tar.gz";
+        sha256 = "0k1azgpkrqbr4482h5v2w5qnavmgl5vnx0my2wsgzkwg5pv2i1ky";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v2.6.2-darwin-amd64.tar.gz";
         sha256 = "09z1kn5gbgda0d4sfyd17qv1p9ldvxn8jbd049s46gvalmqbfwpd";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v2.11.0-darwin-amd64.tar.gz";
-        sha256 = "1r0r6hpchkiq6bg3z6bqnqqz8s96pijsp6rn1dby9f2kaqmar23c";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v2.14.0-darwin-amd64.tar.gz";
+        sha256 = "08clh3nnb32gzvnghk5w9m04jh3nn3svy4qx0hfidj3ci0dz6ncl";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v3.1.1-darwin-amd64.tar.gz";
-        sha256 = "1nrj3lh2asw6169pddjp83q6ll3w5fjp854bdrx99zajpv7gd0gm";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v3.2.0-darwin-amd64.tar.gz";
+        sha256 = "01z8hwlw5i19rpcjk03iw12q2j9xy5in60d6y70v2n4nsmpqhlmq";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v2.4.1-darwin-amd64.tar.gz";
-        sha256 = "0y76cy3h0n004lfch37gf9vi8glxnxixwmf1zby3izxd34pyri17";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v2.6.0-darwin-amd64.tar.gz";
+        sha256 = "04d3gn89kn7q494g7j6wz3ivmqkdk12l0i2lsmwqlmn3jra44wnd";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v4.4.0-darwin-amd64.tar.gz";
-        sha256 = "09zc0sg2h07c97bqbh3ma4pgs232nbd0q5l43992nqa4mn5b8w14";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v4.6.1-darwin-amd64.tar.gz";
+        sha256 = "1jxxm8iq1cnym45c8g2js731xz1xwgg72gfxryvy8i7faq6cxakq";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v2.3.0-darwin-amd64.tar.gz";
-        sha256 = "08crawyaa26llqc3hj2grba0546ny8zwj8dfg6i46ad3kx1nmycq";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v2.4.1-darwin-amd64.tar.gz";
+        sha256 = "17pyiknkjnqlh3cyvclbzg60qf8qig4rp4b0d97vhx8njb5ia9z5";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v3.3.0-darwin-amd64.tar.gz";
-        sha256 = "12ny0kmly1blj8hd8dlzqbg1pbfh37259x3k2kxx2zcqvcw9y4z9";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v3.4.0-darwin-amd64.tar.gz";
+        sha256 = "01vpfn62gnklamn2s17icdvzl25d9d97g0mdz955vwqhjsx7man3";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v0.4.0-darwin-amd64.tar.gz";
-        sha256 = "0svbnv3axy397w2hi3g1mghcahq88aj4jsnipn3lyxrm29n4wna7";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v0.4.1-darwin-amd64.tar.gz";
+        sha256 = "0552wdbykypaafyacjfwqc4sfsl87pgayrnkwg1km00mb1dknzl9";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v2.7.3-darwin-amd64.tar.gz";
-        sha256 = "1viwi0ji1qqy4ysl4a9dhv8sfpg8sp3w4i9ndvxs2m7zq0hbndbs";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v2.7.5-darwin-amd64.tar.gz";
+        sha256 = "0lhvv5d2v21b0sqcy6wabjlqwg9qx9gxbysnkx3c5f5iwk1hrj8g";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v2.3.1-darwin-amd64.tar.gz";
@@ -151,8 +151,8 @@
         sha256 = "1fb6p0nafs3s0kablwyq8v5kf5bs0fi9hkgwkz8hl0ydijzpasl4";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v2.9.0-darwin-amd64.tar.gz";
-        sha256 = "0dhxhsjb3vbc1bq4pgidadiyfr3gasj0h344prcjzcaxymb3609f";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v2.10.1-darwin-amd64.tar.gz";
+        sha256 = "0s6iaqn1jfm7glfnmdps6rk4iqrq2xspmbn4dmqj6q9w9ig1wab6";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-packet-v3.2.2-darwin-amd64.tar.gz";
@@ -163,16 +163,16 @@
         sha256 = "0mf7a33ldvfx3yiprprh0cdb4bcnjcp7dhl0bifwyi644v94ffm1";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v2.4.2-darwin-amd64.tar.gz";
-        sha256 = "0f77ja9cvhcl86654a3gmb399c7ybigznmxxd8f6f2m7x44pih4q";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v3.0.0-darwin-amd64.tar.gz";
+        sha256 = "192a9zkc0yz44jzx3b7xcfy1xdw2blfsmqqvy7dqjhg029nfjfzp";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v3.1.0-darwin-amd64.tar.gz";
-        sha256 = "18i81mdws02kfil8zcrnjl3i4gjxqix9n04flz67mqw730mhr3ss";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v3.2.0-darwin-amd64.tar.gz";
+        sha256 = "1x5avdbfsrxs98lz20vyl1vyz2dnkz6cdix3yqm4nnyllin34pps";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v2.11.2-darwin-amd64.tar.gz";
-        sha256 = "1mw70j1iky98k09739mq1b7lsarvlqp2kcm26555520z78ifiibh";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v2.11.3-darwin-amd64.tar.gz";
+        sha256 = "1hzcy1mxvcv9nm5jf6dy96ha3f29kcnbidfw01qc4smy8hc40f66";
       }
     ];
   };
diff --git a/pkgs/tools/admin/pulumi/update.sh b/pkgs/tools/admin/pulumi/update.sh
index 80acc33322d0..1dd05fe1c901 100755
--- a/pkgs/tools/admin/pulumi/update.sh
+++ b/pkgs/tools/admin/pulumi/update.sh
@@ -3,31 +3,31 @@
 
 # Version of Pulumi from
 # https://www.pulumi.com/docs/get-started/install/versions/
-VERSION="2.15.0"
+VERSION="2.17.0"
 
 # Grab latest release ${VERSION} from
 # https://github.com/pulumi/pulumi-${NAME}/releases
 plugins=(
-    "auth0=1.3.0"
-    "aws=3.19.0"
-    "cloudflare=2.8.0"
+    "auth0=1.5.1"
+    "aws=3.23.0"
+    "cloudflare=2.11.0"
     "consul=2.6.2"
-    "datadog=2.11.0"
-    "digitalocean=3.1.1"
-    "docker=2.4.1"
-    "gcp=4.4.0"
-    "github=2.3.0"
-    "gitlab=3.3.0"
-    "hcloud=0.4.0"
-    "kubernetes=2.7.3"
+    "datadog=2.14.0"
+    "digitalocean=3.2.0"
+    "docker=2.6.0"
+    "gcp=4.6.1"
+    "github=2.4.1"
+    "gitlab=3.4.0"
+    "hcloud=0.4.1"
+    "kubernetes=2.7.5"
     "mailgun=2.3.1"
     "mysql=2.3.2"
-    "openstack=2.9.0"
+    "openstack=2.10.1"
     "packet=3.2.2"
     "postgresql=2.5.2"
-    "random=2.4.2"
-    "vault=3.1.0"
-    "vsphere=2.11.2"
+    "random=3.0.0"
+    "vault=3.2.0"
+    "vsphere=2.11.3"
     );
 
 function genMainSrc() {
diff --git a/pkgs/tools/admin/tigervnc/default.nix b/pkgs/tools/admin/tigervnc/default.nix
index 0bb291d797ba..21cec2b159bb 100644
--- a/pkgs/tools/admin/tigervnc/default.nix
+++ b/pkgs/tools/admin/tigervnc/default.nix
@@ -6,40 +6,45 @@
 , libGLU
 , gnutls, pam, nettle
 , xterm, openssh, perl
-, makeWrapper}:
+, makeWrapper
+}:
 
 with stdenv.lib;
 
 stdenv.mkDerivation rec {
-  version = "1.10.1";
+  version = "1.11.0";
   pname = "tigervnc";
 
   src = fetchFromGitHub {
     owner = "TigerVNC";
     repo = "tigervnc";
-    rev = "v1.10.1";
-    sha256 = "001n189d2f3psn7nxgl8188ml6f7jbk26cxn2835y3mnlk5lmhgr";
+    rev = "v${version}";
+    sha256 = "sha256-IX39oEhTyk7NV+9dD9mFtes22fBdMTAVIv5XkqFK560=";
   };
 
   inherit fontDirectories;
 
-  patches = [ ./u_xorg-server-1.20.7-ddxInputThreadInit.patch ];
-
   postPatch = ''
-    sed -i -e '/^\$cmd \.= " -pn";/a$cmd .= " -xkbdir ${xkeyboard_config}/etc/X11/xkb";' unix/vncserver
+    sed -i -e '/^\$cmd \.= " -pn";/a$cmd .= " -xkbdir ${xkeyboard_config}/etc/X11/xkb";' unix/vncserver/vncserver.in
     fontPath=
     for i in $fontDirectories; do
       for j in $(find $i -name fonts.dir); do
         addToSearchPathWithCustomDelimiter "," fontPath $(dirname $j)
       done
     done
-    sed -i -e '/^\$cmd \.= " -pn";/a$cmd .= " -fp '"$fontPath"'";' unix/vncserver
+    sed -i -e '/^\$cmd \.= " -pn";/a$cmd .= " -fp '"$fontPath"'";' unix/vncserver/vncserver.in
     substituteInPlace vncviewer/vncviewer.cxx \
        --replace '"/usr/bin/ssh' '"${openssh}/bin/ssh'
   '';
 
   dontUseCmakeBuildDir = true;
 
+  cmakeFlags = [
+    "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}"
+    "-DCMAKE_INSTALL_SBINDIR=${placeholder "out"}/bin"
+    "-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "out"}/bin"
+  ];
+
   postBuild = ''
     export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -Wno-error=int-to-pointer-cast -Wno-error=pointer-to-int-cast"
     export CXXFLAGS="$CXXFLAGS -fpermissive"
diff --git a/pkgs/tools/admin/tigervnc/u_xorg-server-1.20.7-ddxInputThreadInit.patch b/pkgs/tools/admin/tigervnc/u_xorg-server-1.20.7-ddxInputThreadInit.patch
deleted file mode 100644
index c18f4bf213f2..000000000000
--- a/pkgs/tools/admin/tigervnc/u_xorg-server-1.20.7-ddxInputThreadInit.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Origin: https://build.opensuse.org/package/view_file/X11:XOrg/tigervnc/u_xorg-server-1.20.7-ddxInputThreadInit.patch
-diff -u -p -r tigervnc-1.10.0.old/unix/xserver/hw/vnc/xvnc.c tigervnc-1.10.0/unix/xserver/hw/vnc/xvnc.c
---- tigervnc-1.10.0.old/unix/xserver/hw/vnc/xvnc.c	2020-01-15 11:19:19.486731848 +0000
-+++ tigervnc-1.10.0/unix/xserver/hw/vnc/xvnc.c	2020-01-15 11:37:33.275445409 +0000
-@@ -295,6 +295,15 @@ void ddxBeforeReset(void)
- }
- #endif
- 
-+#if INPUTTHREAD
-+/** This function is called in Xserver/os/inputthread.c when starting
-+    the input thread. */
-+void
-+ddxInputThreadInit(void)
-+{
-+}
-+#endif
-+
- void ddxUseMsg(void)
- {
-     vncPrintBanner();
-
diff --git a/pkgs/tools/audio/mpris-scrobbler/default.nix b/pkgs/tools/audio/mpris-scrobbler/default.nix
new file mode 100644
index 000000000000..b768e0166435
--- /dev/null
+++ b/pkgs/tools/audio/mpris-scrobbler/default.nix
@@ -0,0 +1,60 @@
+{ stdenv
+, fetchFromGitHub
+, nix-update-script
+, curl
+, dbus
+, libevent
+, m4
+, meson
+, ninja
+, pkg-config
+, scdoc
+, json_c
+, xdg_utils
+}:
+
+stdenv.mkDerivation rec {
+  pname = "mpris-scrobbler";
+  version = "0.4.0.1";
+
+  src = fetchFromGitHub {
+    owner  = "mariusor";
+    repo   = "mpris-scrobbler";
+    rev    = "v${version}";
+    sha256 = "0jzmgcb9a19hl8y7iwy8l3cc2vgzi0scw7r5q72kszfyxn0yk2gs";
+  };
+
+  postPatch = ''
+    substituteInPlace src/signon.c \
+      --replace "/usr/bin/xdg-open" "${xdg_utils}/bin/xdg-open"
+  '';
+
+  nativeBuildInputs = [
+    m4
+    meson
+    ninja
+    pkg-config
+    scdoc
+  ];
+
+  buildInputs = [
+    curl
+    dbus
+    json_c
+    libevent
+  ];
+
+  passthru = {
+    updateScript = nix-update-script {
+      attrPath = pname;
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "Minimalistic scrobbler for libre.fm & last.fm";
+    homepage    = "https://github.com/mariusor/mpris-scrobbler";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ emantor ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/pkgs/tools/backup/grab-site/default.nix b/pkgs/tools/backup/grab-site/default.nix
index e69823ab45d6..7ef1f110b696 100644
--- a/pkgs/tools/backup/grab-site/default.nix
+++ b/pkgs/tools/backup/grab-site/default.nix
@@ -1,5 +1,4 @@
 { stdenv, python37, fetchFromGitHub }:
-
 let
   python = python37.override {
     self = python;
@@ -8,19 +7,32 @@ let
     };
   };
 
-in with python.pkgs; buildPythonApplication rec {
-  version = "2.1.19";
-  name = "grab-site-${version}";
+in
+with python.pkgs; buildPythonApplication rec {
+  pname = "grab-site";
+  version = "2.2.0";
 
   src = fetchFromGitHub {
     rev = version;
     owner = "ArchiveTeam";
     repo = "grab-site";
-    sha256 = "1v1hnhv5knzdl0kj3574ccwlh171vcb7faddp095ycdmiiybalk4";
+    sha256 = "1jxcv9dral6h7vfpfqkp1yif6plj0vspzakymkj8hfl75nh0wpv8";
   };
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace '"wpull @ https://github.com/ArchiveTeam/ludios_wpull/tarball/master#egg=wpull-3.0.7"' '"wpull"'
+  '';
+
   propagatedBuildInputs = [
-    click ludios_wpull manhole lmdb autobahn fb-re2 websockets cchardet
+    click
+    ludios_wpull
+    manhole
+    lmdb
+    autobahn
+    fb-re2
+    websockets
+    cchardet
   ];
 
   checkPhase = ''
diff --git a/pkgs/tools/backup/s3ql/default.nix b/pkgs/tools/backup/s3ql/default.nix
index 346f8d279646..7e4cc66278cb 100644
--- a/pkgs/tools/backup/s3ql/default.nix
+++ b/pkgs/tools/backup/s3ql/default.nix
@@ -14,7 +14,7 @@ python3Packages.buildPythonApplication rec {
   checkInputs = [ which ] ++ (with python3Packages; [ cython pytest ]);
   propagatedBuildInputs = with python3Packages; [
     sqlite apsw pycrypto requests defusedxml dugong llfuse
-    cython pytest pytest-catchlog google_auth google-auth-oauthlib
+    cython pytest pytest-catchlog google-auth google-auth-oauthlib
   ];
 
   preBuild = ''
diff --git a/pkgs/tools/backup/wal-e/default.nix b/pkgs/tools/backup/wal-e/default.nix
index a6d5b6b48010..b3e9bfd56c0f 100644
--- a/pkgs/tools/backup/wal-e/default.nix
+++ b/pkgs/tools/backup/wal-e/default.nix
@@ -17,7 +17,7 @@ python3Packages.buildPythonApplication rec {
   propagatedBuildInputs = (with python3Packages; [
     boto
     gevent
-    google_cloud_storage
+    google-cloud-storage
   ]) ++ [
     postgresql
     lzop
diff --git a/pkgs/tools/filesystems/ceph/default.nix b/pkgs/tools/filesystems/ceph/default.nix
index 1a43d792ad3e..d87c6331b794 100644
--- a/pkgs/tools/filesystems/ceph/default.nix
+++ b/pkgs/tools/filesystems/ceph/default.nix
@@ -81,7 +81,7 @@ let
      inherit description;
      license = with licenses; [ lgpl21 gpl2 bsd3 mit publicDomain ];
      maintainers = with maintainers; [ adev ak johanot krav ];
-     platforms = [ "x86_64-linux" ];
+     platforms = [ "x86_64-linux" "aarch64-linux" ];
    };
 
   ceph-common = python3Packages.buildPythonPackage rec{
diff --git a/pkgs/tools/inputmethods/evdevremapkeys/default.nix b/pkgs/tools/inputmethods/evdevremapkeys/default.nix
index 0dc6f6739257..d70bf80d1ce2 100644
--- a/pkgs/tools/inputmethods/evdevremapkeys/default.nix
+++ b/pkgs/tools/inputmethods/evdevremapkeys/default.nix
@@ -1,11 +1,8 @@
 { stdenv, fetchFromGitHub, python3Packages }:
 
-let
-  pythonPackages = python3Packages;
-
-in pythonPackages.buildPythonPackage rec {
-  name = "${pname}-0.1.0";
+python3Packages.buildPythonPackage rec {
   pname = "evdevremapkeys";
+  version = "0.1.0";
 
   src = fetchFromGitHub {
     owner = "philipl";
@@ -14,13 +11,18 @@ in pythonPackages.buildPythonPackage rec {
     sha256 = "0c9slflakm5jqd8s1zpxm7gmrrk0335m040d7m70hnsak42jvs2f";
   };
 
-  propagatedBuildInputs = with pythonPackages; [ 
+  propagatedBuildInputs = with python3Packages; [
     pyyaml
     pyxdg
     python-daemon
     evdev
   ];
 
+  # hase no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "evdevremapkeys" ];
+
   meta = with stdenv.lib; {
     homepage = "https://github.com/philipl/evdevremapkeys";
     description = "Daemon to remap events on linux input devices";
diff --git a/pkgs/tools/misc/bibtex2html/default.nix b/pkgs/tools/misc/bibtex2html/default.nix
index ddda4ef4445a..6ca528e2b1a2 100644
--- a/pkgs/tools/misc/bibtex2html/default.nix
+++ b/pkgs/tools/misc/bibtex2html/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml }:
+{ stdenv, fetchurl, ocaml, perl }:
 
 stdenv.mkDerivation {
   pname = "bibtex2html";
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
     sha256 = "07gzrs4lfrkvbn48cgn2gn6c7cx3jsanakkrb2irj0gmjzfxl96j";
   };
 
-  buildInputs = [ ocaml ];
+  buildInputs = [ ocaml perl ];
 
   meta = with stdenv.lib; {
     description = "A collection of tools for translating from BibTeX to HTML";
diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix
index d0e032b7c10e..1a0c9b2e10c8 100644
--- a/pkgs/tools/misc/coreutils/default.nix
+++ b/pkgs/tools/misc/coreutils/default.nix
@@ -76,8 +76,7 @@ stdenv.mkDerivation (rec {
   outputs = [ "out" "info" ];
 
   nativeBuildInputs = [ perl xz.bin ]
-    ++ optionals stdenv.hostPlatform.isCygwin [ autoreconfHook texinfo ]   # due to patch
-    ++ optionals stdenv.hostPlatform.isMusl [ autoreconfHook bison ];   # due to patch
+    ++ optionals stdenv.hostPlatform.isCygwin [ autoreconfHook texinfo ];  # due to patch
   configureFlags = [ "--with-packager=https://NixOS.org" ]
     ++ optional (singleBinary != false)
       ("--enable-single-binary" + optionalString (isString singleBinary) "=${singleBinary}")
diff --git a/pkgs/tools/misc/foma/default.nix b/pkgs/tools/misc/foma/default.nix
new file mode 100644
index 000000000000..d5fed006173f
--- /dev/null
+++ b/pkgs/tools/misc/foma/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, zlib, flex, bison, readline }:
+
+stdenv.mkDerivation rec {
+  pname = "foma";
+  version = "0.9.18alpha";
+
+  src = fetchFromGitHub {
+    owner = "mhulden";
+    repo = "foma";
+    rev = "4456a40e81f46e3fe909c5a97a15fcf1d2a3b6c1";
+    sha256 = "188yxj8wahlj2yf93rj1vx549j5cq0085d2jmj3vwzbfjq1mi1f0";
+  };
+
+  sourceRoot = "source/foma";
+
+  nativeBuildInputs = [ flex bison ];
+  buildInputs = [ zlib readline ];
+
+  patchPhase = ''
+    substituteInPlace Makefile \
+      --replace '-ltermcap' ' ' \
+      --replace '/usr/local' '$(out)'
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A multi-purpose finite-state toolkit designed for applications ranging from natural language processing to research in automata theory";
+    homepage = "https://github.com/mhulden/foma";
+    license = licenses.asl20;
+    maintainers = [ maintainers.tckmn ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/tools/misc/hdf4/default.nix b/pkgs/tools/misc/hdf4/default.nix
index a1aff8575279..b5269a15867a 100644
--- a/pkgs/tools/misc/hdf4/default.nix
+++ b/pkgs/tools/misc/hdf4/default.nix
@@ -8,7 +8,8 @@
 , zlib
 , szip ? null
 }:
-
+let uselibtirpc = stdenv.isLinux;
+in
 stdenv.mkDerivation rec {
   pname = "hdf";
   version = "4.2.15";
@@ -49,12 +50,13 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     libjpeg
-    libtirpc
     szip
     zlib
+  ] ++ stdenv.lib.optionals uselibtirpc [
+    libtirpc
   ];
 
-  preConfigure = ''
+  preConfigure = stdenv.lib.optionalString uselibtirpc ''
     # Make tirpc discovery work with CMAKE_PREFIX_PATH
     substituteInPlace config/cmake/FindXDR.cmake \
       --replace 'find_path(XDR_INCLUDE_DIR NAMES rpc/types.h PATHS "/usr/include" "/usr/include/tirpc")' \
diff --git a/pkgs/tools/misc/mcrypt/default.nix b/pkgs/tools/misc/mcrypt/default.nix
index afbe811e7f2f..b2237ce04839 100644
--- a/pkgs/tools/misc/mcrypt/default.nix
+++ b/pkgs/tools/misc/mcrypt/default.nix
@@ -14,6 +14,7 @@ stdenv.mkDerivation rec {
     ./overflow_CVE-2012-4409.patch
     ./segv.patch
     ./sprintf_CVE-2012-4527.patch
+    ./malloc_to_stdlib.patch
   ];
 
   buildInputs = [ libmcrypt libmhash ];
@@ -26,7 +27,7 @@ stdenv.mkDerivation rec {
       ever-wider range of algorithms and modes.
     '';
     homepage = "http://mcrypt.sourceforge.net";
-    license = stdenv.lib.licenses.gpl2;
+    license = stdenv.lib.licenses.gpl3Only;
     platforms = stdenv.lib.platforms.all;
     maintainers = [ stdenv.lib.maintainers.qknight ];
   };
diff --git a/pkgs/tools/misc/mcrypt/malloc_to_stdlib.patch b/pkgs/tools/misc/mcrypt/malloc_to_stdlib.patch
new file mode 100755
index 000000000000..e92f5a46ae7e
--- /dev/null
+++ b/pkgs/tools/misc/mcrypt/malloc_to_stdlib.patch
@@ -0,0 +1,26 @@
+From e295844e8ef5c13487996ab700e5f12a7fadb1a6 Mon Sep 17 00:00:00 2001
+From: Nima Vasseghi <nmv@fb.com>
+Date: Wed, 30 Dec 2020 16:06:46 -0800
+Subject: [PATCH] malloc.h to stdlib.h in rfc2440.c
+
+The malloc.h is deprecated and should not be used
+---
+ src/rfc2440.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/rfc2440.c b/src/rfc2440.c
+index 5a1f296..4d6a5db 100644
+--- a/src/rfc2440.c
++++ b/src/rfc2440.c
+@@ -23,7 +23,7 @@
+ #include <zlib.h>
+ #endif
+ #include <stdio.h>
+-#include <malloc.h>
++#include <stdlib.h>
+ 
+ #include "xmalloc.h"
+ #include "keys.h"
+-- 
+2.13.5
+
diff --git a/pkgs/tools/misc/mmv-go/default.nix b/pkgs/tools/misc/mmv-go/default.nix
index d05614d579ab..8787e4a838f6 100644
--- a/pkgs/tools/misc/mmv-go/default.nix
+++ b/pkgs/tools/misc/mmv-go/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "mmv-go";
-  version = "0.1.2";
+  version = "0.1.3";
 
   src = fetchFromGitHub {
     owner = "itchyny";
     repo = "mmv";
     rev = "v${version}";
-    sha256 = "0kpf6abzhsikm7vyk5735p8sfjhsh7klla9qnmc43mgh0560f020";
+    sha256 = "12k5zzyr0lhjadc9kza04v0zgb20v7m4syaqwc7qvn3kfvv1mz8s";
   };
 
-  vendorSha256 = "1nnfi5zad7nlp44mj0fdg09q8pm093di7rr7pknl9whqghv36dfi";
+  vendorSha256 = "0xnrai15ww9lfk02bc9p5ssycwnqkyjj5ch1srh7yvnbw3fakx68";
 
   buildFlagsArray = [ "-ldflags=-s -w -X main.revision=${src.rev}" ];
 
diff --git a/pkgs/tools/misc/tab-rs/default.nix b/pkgs/tools/misc/tab-rs/default.nix
new file mode 100644
index 000000000000..e3bd9792c45c
--- /dev/null
+++ b/pkgs/tools/misc/tab-rs/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, rustPlatform, IOKit }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "tab-rs";
+  version = "0.5.5";
+
+  src = fetchFromGitHub {
+    owner = "austinjones";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "06nip7g5y7jslqj8anvn2z7w1c8yr0gl32bpnzv26xschan4gc2h";
+  };
+
+  cargoSha256 = "1clpl9fi07lms0din8f9m4y6br5jg8k5xsklsqmvgdwf83wyn321";
+
+  buildInputs = stdenv.lib.optionals stdenv.isDarwin [ IOKit ];
+
+  # many tests are failing
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Intuitive, config-driven terminal multiplexer designed for software & systems engineers";
+    homepage = "https://github.com/austinjones/tab-rs";
+    license = licenses.mit;
+    maintainers = with maintainers; [ bbigras ];
+  };
+}
diff --git a/pkgs/tools/misc/youtube-dl/default.nix b/pkgs/tools/misc/youtube-dl/default.nix
index 5821bcbe7866..eb75ed2d6ba7 100644
--- a/pkgs/tools/misc/youtube-dl/default.nix
+++ b/pkgs/tools/misc/youtube-dl/default.nix
@@ -18,11 +18,11 @@ buildPythonPackage rec {
   # The websites youtube-dl deals with are a very moving target. That means that
   # downloads break constantly. Because of that, updates should always be backported
   # to the latest stable release.
-  version = "2021.01.03";
+  version = "2021.01.08";
 
   src = fetchurl {
     url = "https://yt-dl.org/downloads/${version}/${pname}-${version}.tar.gz";
-    sha256 = "0qqixcr748nfhnihkjzayzdja26kgrsds45q5s8krmfm3b79ipli";
+    sha256 = "1k870v9xc7g16nvixa272sdjnmc7pl49ymmnn6rdz0mcj2548h3k";
   };
 
   nativeBuildInputs = [ installShellFiles makeWrapper ];
diff --git a/pkgs/tools/networking/dsniff/default.nix b/pkgs/tools/networking/dsniff/default.nix
index db9c608e931b..3a8eab862cb1 100644
--- a/pkgs/tools/networking/dsniff/default.nix
+++ b/pkgs/tools/networking/dsniff/default.nix
@@ -1,6 +1,10 @@
-{ stdenv, fetchFromGitLab, autoreconfHook, libpcap, db, glib, libnet, libnids, symlinkJoin, openssl
+{ gcc9Stdenv, lib, fetchFromGitLab, autoreconfHook, libpcap, db, glib, libnet, libnids, symlinkJoin, openssl
 , rpcsvc-proto, libtirpc, libnsl
 }:
+
+# We compile with GCC 9 since GCC 10 segfaults on the code
+# (see https://bugzilla.redhat.com/show_bug.cgi?id=1862809).
+
 let
   /*
   dsniff's build system unconditionnaly wants static libraries and does not
@@ -38,7 +42,7 @@ let
     inherit (openssl) name;
     paths = with openssl.override { static = true; }; [ out dev ];
   };
-in stdenv.mkDerivation rec {
+in gcc9Stdenv.mkDerivation rec {
   pname = "dsniff";
   version = "2.4b1";
   # upstream is so old that nearly every distribution packages the beta version.
@@ -71,7 +75,7 @@ in stdenv.mkDerivation rec {
     "--with-openssl=${ssl}"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "collection of tools for network auditing and penetration testing";
     longDescription = ''
       dsniff, filesnarf, mailsnarf, msgsnarf, urlsnarf, and webspy passively monitor a network for interesting data (passwords, e-mail, files, etc.). arpspoof, dnsspoof, and macof facilitate the interception of network traffic normally unavailable to an attacker (e.g, due to layer-2 switching). sshmitm and webmitm implement active monkey-in-the-middle attacks against redirected SSH and HTTPS sessions by exploiting weak bindings in ad-hoc PKI.
diff --git a/pkgs/tools/networking/rdrview/default.nix b/pkgs/tools/networking/rdrview/default.nix
new file mode 100644
index 000000000000..628bd9853415
--- /dev/null
+++ b/pkgs/tools/networking/rdrview/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, libxml2, curl, libseccomp }:
+
+stdenv.mkDerivation {
+  name = "rdrview";
+  version = "unstable-2020-12-22";
+
+  src = fetchFromGitHub {
+    owner = "eafer";
+    repo = "rdrview";
+    rev = "7be01fb36a6ab3311a9ad1c8c2c75bf5c1345d93";
+    sha256 = "00hnvrrrkyp5429rzcvabq2z00lp1l8wsqxw4h7qsdms707mjnxs";
+  };
+
+  buildInputs = [ libxml2 curl libseccomp ];
+
+  installPhase = ''
+    install -Dm755 rdrview -t $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Command line tool to extract main content from a webpage";
+    homepage = "https://github.com/eafer/rdrview";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ djanatyn ];
+  };
+}
diff --git a/pkgs/tools/package-management/conda/default.nix b/pkgs/tools/package-management/conda/default.nix
index 325a5c4fa5ee..57b4d17fdfdd 100644
--- a/pkgs/tools/package-management/conda/default.nix
+++ b/pkgs/tools/package-management/conda/default.nix
@@ -62,6 +62,8 @@ in
       export FONTCONFIG_FILE=/etc/fonts/fonts.conf
       export QTCOMPOSE=${xorg.libX11}/share/X11/locale
       export LIBARCHIVE=${libarchive.lib}/lib/libarchive.so
+      # Allows `conda activate` to work properly
+      source ${installationPath}/etc/profile.d/conda.sh
     '';
 
     meta = {
diff --git a/pkgs/tools/package-management/nix-update/default.nix b/pkgs/tools/package-management/nix-update/default.nix
index 4d9365677ab7..3c420a556523 100644
--- a/pkgs/tools/package-management/nix-update/default.nix
+++ b/pkgs/tools/package-management/nix-update/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonApplication rec {
   pname = "nix-update";
-  version = "0.3.1";
+  version = "0.3.2";
 
   src = fetchFromGitHub {
     owner = "Mic92";
     repo = pname;
     rev = version;
-    sha256 = "sha256-0icQi1HClLMVDOugKckF2J8tEDeMfmW5kgCItJ9n2eo=";
+    sha256 = "1ykxr0yah7zl06igm7wiji9zx3y0xpjc37hbfhn6gnir6ssa0kqp";
   };
 
   makeWrapperArgs = [
diff --git a/pkgs/tools/security/cloudbrute/default.nix b/pkgs/tools/security/cloudbrute/default.nix
new file mode 100644
index 000000000000..20f4a9a0d07b
--- /dev/null
+++ b/pkgs/tools/security/cloudbrute/default.nix
@@ -0,0 +1,30 @@
+{ buildGoModule
+, fetchFromGitHub
+, stdenv
+}:
+
+buildGoModule rec {
+  pname = "cloudbrute";
+  version = "1.0.7";
+
+  src = fetchFromGitHub {
+    owner = "0xsha";
+    repo = "CloudBrute";
+    rev = "v${version}";
+    sha256 = "05b9klddk8wvi78j47jyg9pix6qpxyr01l1m7k1j7598siazfv9g";
+  };
+
+  vendorSha256 = "0f3n0wrmg9d2qyn8hlnhf9lsfqd9443myzr04p48v68m8n83j6a9";
+
+  meta = with stdenv.lib; {
+    description = "Cloud enumeration tool";
+    longDescription = ''
+      A tool to find a company (target) infrastructure, files, and apps on
+      the top cloud providers (Amazon, Google, Microsoft, DigitalOcean,
+      Alibaba, Vultr, Linode).
+    '';
+    homepage = "https://github.com/0xsha/CloudBrute";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/security/deepsea/default.nix b/pkgs/tools/security/deepsea/default.nix
new file mode 100644
index 000000000000..5cd7ed48aa34
--- /dev/null
+++ b/pkgs/tools/security/deepsea/default.nix
@@ -0,0 +1,30 @@
+{ buildGoModule
+, fetchFromGitHub
+, stdenv
+}:
+
+buildGoModule rec {
+  pname = "deepsea";
+  version = "0.9";
+
+  src = fetchFromGitHub {
+    owner = "dsnezhkov";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "02s03sha8vwp7dsaw3z446pskhb6wmy0hyj0mhpbx58sf147rkig";
+  };
+
+  vendorSha256 = "0vpkzykfg1rq4qi1v5lsa0drpil9i6ccfw96k48ppi9hiwzpq94w";
+
+  meta = with stdenv.lib; {
+    description = "Phishing tool for red teams and pentesters";
+    longDescription = ''
+      DeepSea phishing gear aims to help RTOs and pentesters with the
+      delivery of opsec-tight, flexible email phishing campaigns carried
+      out on the outside as well as on the inside of a perimeter.
+    '';
+    homepage = "https://github.com/dsnezhkov/deepsea";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/security/grype/default.nix b/pkgs/tools/security/grype/default.nix
new file mode 100644
index 000000000000..9786fd416630
--- /dev/null
+++ b/pkgs/tools/security/grype/default.nix
@@ -0,0 +1,35 @@
+{ buildGoModule
+, docker
+, fetchFromGitHub
+, stdenv
+}:
+
+buildGoModule rec {
+  pname = "grype";
+  version = "0.6.1";
+
+  src = fetchFromGitHub {
+    owner = "anchore";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0schq11vckvdj538mnkdzhxl452nrssqrfapab9qc44yxdi1wf8k";
+  };
+
+  vendorSha256 = "0lna7zhsj3wnw83nv0dp93aj869pplb51gqzrkka7vnqp0rjcw50";
+
+  propagatedBuildInputs = [ docker ];
+
+  # tests require a running Docker instance
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Vulnerability scanner for container images and filesystems";
+    longDescription = ''
+      As a vulnerability scanner is grype abale to scan the contents of a container
+      image or filesystem to find known vulnerabilities.
+    '';
+    homepage = "https://github.com/anchore/grype";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/security/masscan/default.nix b/pkgs/tools/security/masscan/default.nix
index 297d13ef9f95..6acfec9f3be8 100644
--- a/pkgs/tools/security/masscan/default.nix
+++ b/pkgs/tools/security/masscan/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "masscan";
-  version = "1.0.5";
+  version = "1.3.0";
 
   src = fetchFromGitHub {
     owner  = "robertdavidgraham";
     repo   = "masscan";
     rev    = version;
-    sha256 = "0q0c7bsf0pbl8napry1qyg0gl4pd8wn872h4mz9b56dx4rx90vqg";
+    sha256 = "04nlnficybgxa16kq9fwrrfjsbyiaps4mikfqgdr206fkqk9i05y";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/tools/security/pcsc-cyberjack/default.nix b/pkgs/tools/security/pcsc-cyberjack/default.nix
index 7ae062547aa2..015e3938c3ef 100644
--- a/pkgs/tools/security/pcsc-cyberjack/default.nix
+++ b/pkgs/tools/security/pcsc-cyberjack/default.nix
@@ -23,6 +23,8 @@ in stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
+  NIX_CFLAGS_COMPILE = "-Wno-error=narrowing";
+
   configureFlags = [
     "--with-usbdropdir=${placeholder "out"}/pcsc/drivers"
     "--bindir=${placeholder "tools"}/bin"
diff --git a/pkgs/tools/security/sn0int/default.nix b/pkgs/tools/security/sn0int/default.nix
index 8b99649e0c9f..ef2f97cfa111 100644
--- a/pkgs/tools/security/sn0int/default.nix
+++ b/pkgs/tools/security/sn0int/default.nix
@@ -3,16 +3,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "sn0int";
-  version = "0.19.1";
+  version = "0.20.0";
 
   src = fetchFromGitHub {
     owner = "kpcyrd";
     repo = pname;
     rev = "v${version}";
-    sha256 = "10f1wblczxlww09f4dl8i9zzgpr14jj7s329wkvm7lafmwx3qrn5";
+    sha256 = "1zjrbrkk7phv8s5qr0gj6fnssa31j3k3m8c55pdfmajh7ry7wwd1";
   };
 
-  cargoSha256 = "1v0q751ylsfpdjwsbl20pvn7g75w503jwjl5kn5kc8xq3g0lnp65";
+  cargoSha256 = "1jvaavhjyalnh10vfhrdyqg1jnl8b4a3gnp8a31bgi3mb0v466k3";
 
   nativeBuildInputs = [ pkgconfig ];
 
@@ -25,7 +25,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     description = "Semi-automatic OSINT framework and package manager";
     homepage = "https://github.com/kpcyrd/sn0int";
-    license = licenses.gpl3;
+    license = with licenses; [ gpl3Plus ];
     maintainers = with maintainers; [ xrelkd ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/tools/security/subjs/default.nix b/pkgs/tools/security/subjs/default.nix
new file mode 100644
index 000000000000..ad10ef5eaf24
--- /dev/null
+++ b/pkgs/tools/security/subjs/default.nix
@@ -0,0 +1,32 @@
+{ buildGoModule
+, fetchFromGitHub
+, stdenv
+}:
+
+buildGoModule rec {
+  pname = "subjs";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner = "lc";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "01cip5rf35dnh3l325p03y6axyqdpf48ry4zcwiyd7hlfsglbk3j";
+  };
+
+  vendorSha256 = "1y01k8pvv7y9zb15wbk068cvkx0g83484jak2dvcvghqcf5j1fr1";
+
+  buildFlagsArray = [ "-ldflags=-s -w -X main.AppVersion=${version}" ];
+
+  meta = with stdenv.lib; {
+    description = "Fetcher for Javascript files";
+    longDescription = ''
+      subjs fetches Javascript files from a list of URLs or subdomains.
+      Analyzing Javascript files can help you find undocumented endpoints,
+      secrets and more.
+    '';
+    homepage = "https://github.com/lc/subjs";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/security/urlhunter/default.nix b/pkgs/tools/security/urlhunter/default.nix
new file mode 100644
index 000000000000..239eabbe8b36
--- /dev/null
+++ b/pkgs/tools/security/urlhunter/default.nix
@@ -0,0 +1,29 @@
+{ buildGoModule
+, fetchFromGitHub
+, stdenv
+}:
+
+buildGoModule rec {
+  pname = "urlhunter";
+  version = "0.1.1";
+
+  src = fetchFromGitHub {
+    owner = "utkusen";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0ph0pwfd8bb5499bsx3bd8sqhn69y00zk32ayc3n61gpcc6rmvn7";
+  };
+
+  vendorSha256 = "165kplaqigis0anafvzfqzwc3jjhsn2mwgf4phb4ck75n3yf85ys";
+
+  meta = with stdenv.lib; {
+    description = "Recon tool that allows searching shortened URLs";
+    longDescription = ''
+      urlhunter is a recon tool that allows searching on URLs that are
+      exposed via shortener services such as bit.ly and goo.gl.
+    '';
+    homepage = "https://github.com/utkusen/urlhunter";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/system/autocpu-freq/default.nix b/pkgs/tools/system/autocpu-freq/default.nix
new file mode 100644
index 000000000000..348fd689ab96
--- /dev/null
+++ b/pkgs/tools/system/autocpu-freq/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, python3Packages, fetchFromGitHub }:
+
+python3Packages.buildPythonPackage rec {
+  pname = "auto-cpufreq";
+  version = "1.5.1";
+
+  src = fetchFromGitHub {
+    owner = "AdnanHodzic";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "uVhftO6AqFnZ0uaEYRAPvVskkouNOXPtNVYXx7WJKyw=";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ click distro psutil ];
+
+  doCheck = false;
+  pythonImportsCheck = [ "source" ];
+
+  # patch to prevent script copying and to disable install
+  patches = [ ./prevent-install-and-copy.patch ];
+
+  postInstall = ''
+    # copy script manually
+    cp ${src}/scripts/cpufreqctl.sh $out/bin/cpufreqctl
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/AdnanHodzic/auto-cpufreq";
+    description = "Automatic CPU speed & power optimizer for Linux";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.Technical27 ];
+  };
+}
diff --git a/pkgs/tools/system/autocpu-freq/prevent-install-and-copy.patch b/pkgs/tools/system/autocpu-freq/prevent-install-and-copy.patch
new file mode 100644
index 000000000000..28c524e1497c
--- /dev/null
+++ b/pkgs/tools/system/autocpu-freq/prevent-install-and-copy.patch
@@ -0,0 +1,178 @@
+diff --git a/scripts/cpufreqctl.sh b/scripts/cpufreqctl.sh
+index 63a2b5b..e157efe 100755
+--- a/scripts/cpufreqctl.sh
++++ b/scripts/cpufreqctl.sh
+@@ -467,35 +467,21 @@ fi
+ 
+ if [ $OPTION = "--install" ]
+ then
+-  echo 'installing helpers...'
+-  cp $0 /usr/bin/
+-  echo 'installing policy...'
+-  cp $(dirname "$(readlink -f "$0")")/konkor.cpufreq.policy /usr/share/polkit-1/actions/
+-  echo 'installing fonts...'
+-  mkdir -p /usr/share/fonts/truetype/cpufreq
+-  cp $(dirname "$(readlink -f "$0")")/fonts/cpufreq.ttf /usr/share/fonts/truetype/cpufreq/
+-  echo "done"
++  echo "install is disabled in the nix package"
+   exit
+ fi
+ if [ $OPTION = "--update-fonts" ]
+ then
+-  fc-cache -f
++  echo "update-fonts is disabled in the nix package"
+   exit
+ fi
+ if [ $OPTION = "--uninstall" ]
+ then
+-  echo 'uninstalling cpufreqctl helper...'
+-  rm /usr/bin/cpufreqctl
+-  echo 'uninstalling policy...'
+-  rm /usr/share/polkit-1/actions/konkor.cpufreq.policy
+-  echo 'uninstalling fonts...'
+-  rm -rf /usr/share/fonts/truetype/cpufreq
+-  echo "done"
++  echo "uninstall is disabled in the nix package"
+   exit
+ fi
+ if [ $OPTION = "--reset" ]
+ then
+-  echo 'reset to default values...'
+-  dconf reset -f "/org/gnome/shell/extensions/cpufreq/"
++  echo "reset is disabled in the nix package"
+   exit
+ fi
+diff --git a/source/core.py b/source/core.py
+index 531c0c4..2e27e65 100644
+--- a/source/core.py
++++ b/source/core.py
+@@ -24,8 +24,6 @@ warnings.filterwarnings("ignore")
+ # - re-enable CPU fan speed display and make more generic and not only for thinkpad
+ # - replace get system/CPU load from: psutil.getloadavg() | available in 5.6.2)
+ 
+-SCRIPTS_DIR = Path("/usr/local/share/auto-cpufreq/scripts/")
+-
+ # from the highest performance to the lowest
+ ALL_GOVERNORS = ("performance", "ondemand", "conservative", "schedutil", "userspace", "powersave")
+ CPUS = os.cpu_count()
+@@ -156,34 +154,16 @@ def cpufreqctl():
+     """
+     deploy cpufreqctl script
+     """
+-
+-    # detect if running on a SNAP
+-    if os.getenv('PKG_MARKER') == "SNAP":
+-        pass
+-    else:
+-        # deploy cpufreqctl script (if missing)
+-        if os.path.isfile("/usr/bin/cpufreqctl"):
+-            shutil.copy("/usr/bin/cpufreqctl", "/usr/bin/cpufreqctl.auto-cpufreq.bak")
+-            shutil.copy(SCRIPTS_DIR / "cpufreqctl.sh", "/usr/bin/cpufreqctl")
+-        else:
+-            shutil.copy(SCRIPTS_DIR / "cpufreqctl.sh", "/usr/bin/cpufreqctl")
++    # scripts are already in the correct place
++    pass
+ 
+ 
+ def cpufreqctl_restore():
+     """
+     restore original cpufreqctl script
+     """
+-    # detect if running on a SNAP
+-    if os.getenv('PKG_MARKER') == "SNAP":
+-        pass
+-    else:
+-        # restore original cpufreqctl script
+-        if os.path.isfile("/usr/bin/cpufreqctl.auto-cpufreq.bak"):
+-            os.system("cp /usr/bin/cpufreqctl.auto-cpufreq.bak /usr/bin/cpufreqctl")
+-            os.remove("/usr/bin/cpufreqctl.auto-cpufreq.bak")
+-        # ToDo: implement mechanism to make sure cpufreqctl (auto-cpufreq) file is
+-        # restored if overwritten by system. But during tool removal to also remove it
+-        # in def cpufreqctl
++    # no need to restore
++    pass
+ 
+ 
+ def footer(l=79):
+@@ -209,71 +189,13 @@ def remove_complete_msg():
+ 
+ 
+ def deploy_daemon():
+-    print("\n" + "-" * 21 + " Deploying auto-cpufreq as a daemon " + "-" * 22 + "\n")
+-
+-    # deploy cpufreqctl script func call
+-    cpufreqctl()
+-
+-    print("* Turn off bluetooth on boot")
+-    btconf = Path("/etc/bluetooth/main.conf")
+-    try:
+-        orig_set = "AutoEnable=true"
+-        change_set = "AutoEnable=false"
+-        with btconf.open(mode="r+") as f:
+-            content = f.read()
+-            f.seek(0)
+-            f.truncate()
+-            f.write(content.replace(orig_set, change_set))
+-    except:
+-        print("\nERROR:\nWas unable to turn off bluetooth on boot")
+-
+-    auto_cpufreq_log_file.touch(exist_ok=True)
+-
+-    print("\n* Deploy auto-cpufreq install script")
+-    shutil.copy(SCRIPTS_DIR / "auto-cpufreq-install.sh", "/usr/bin/auto-cpufreq-install")
+-
+-    print("\n* Deploy auto-cpufreq remove script")
+-    shutil.copy(SCRIPTS_DIR / "auto-cpufreq-remove.sh", "/usr/bin/auto-cpufreq-remove")
+-
+-    call("/usr/bin/auto-cpufreq-install", shell=True)
++    # prevent needless copying and system changes
++    pass
+ 
+ 
+ # remove auto-cpufreq daemon
+ def remove():
+-
+-    # check if auto-cpufreq is installed
+-    if not os.path.exists("/usr/bin/auto-cpufreq-remove"):
+-        print("\nauto-cpufreq daemon is not installed.\n")
+-        sys.exit(1)
+-        
+-    print("\n" + "-" * 21 + " Removing auto-cpufreq daemon " + "-" * 22 + "\n")
+-
+-    print("* Turn on bluetooth on boot")
+-    btconf = "/etc/bluetooth/main.conf"
+-    try:
+-        orig_set = "AutoEnable=true"
+-        change_set = "AutoEnable=false"
+-        with open(btconf, "r+") as f:
+-            content = f.read()
+-            f.seek(0)
+-            f.truncate()
+-            f.write(content.replace(change_set, orig_set))
+-    except:
+-        print("\nERROR:\nWas unable to turn on bluetooth on boot")
+-
+-    # run auto-cpufreq daemon install script
+-    call("/usr/bin/auto-cpufreq-remove", shell=True)
+-
+-    # remove auto-cpufreq-remove
+-    os.remove("/usr/bin/auto-cpufreq-remove")
+-
+-    # delete log file
+-    if auto_cpufreq_log_file.exists():
+-        auto_cpufreq_log_file.unlink()
+-
+-    # restore original cpufrectl script
+-    cpufreqctl_restore()
+-
++    pass
+ 
+ def gov_check():
+     for gov in get_avail_gov():
+@@ -798,4 +720,4 @@ def running_daemon():
+         exit(1)
+     elif os.getenv("PKG_MARKER") == "SNAP" and dcheck == "enabled":
+         deploy_complete_msg()
+-        exit(1)
+\ No newline at end of file
++        exit(1)
diff --git a/pkgs/tools/system/inxi/default.nix b/pkgs/tools/system/inxi/default.nix
index 14b14fa9ffd1..5efdc5381747 100644
--- a/pkgs/tools/system/inxi/default.nix
+++ b/pkgs/tools/system/inxi/default.nix
@@ -3,7 +3,7 @@
 , withRecommends ? false # Install (almost) all recommended tools (see --recommends)
 , withRecommendedSystemPrograms ? withRecommends, util-linuxMinimal, dmidecode
 , file, hddtemp, iproute, ipmitool, usbutils, kmod, lm_sensors, smartmontools
-, binutils, tree, upower
+, binutils, tree, upower, pciutils
 , withRecommendedDisplayInformationPrograms ? withRecommends, glxinfo, xorg
 }:
 
@@ -12,7 +12,7 @@ let
     "--prefix PATH ':' '${stdenv.lib.makeBinPath programs}'";
   recommendedSystemPrograms = lib.optionals withRecommendedSystemPrograms [
     util-linuxMinimal dmidecode file hddtemp iproute ipmitool usbutils kmod
-    lm_sensors smartmontools binutils tree upower
+    lm_sensors smartmontools binutils tree upower pciutils
   ];
   recommendedDisplayInformationPrograms = lib.optionals
     withRecommendedDisplayInformationPrograms
diff --git a/pkgs/tools/text/mdbook/default.nix b/pkgs/tools/text/mdbook/default.nix
index 8e0350177425..d95f9854d544 100644
--- a/pkgs/tools/text/mdbook/default.nix
+++ b/pkgs/tools/text/mdbook/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mdbook";
-  version = "0.4.4";
+  version = "0.4.5";
 
   src = fetchFromGitHub {
     owner = "rust-lang-nursery";
     repo = "mdBook";
     rev = "v${version}";
-    sha256 = "0nqr5a27i91m71fhpycf60q54qplc920y1fmk9hav3pbb9wcc5dl";
+    sha256 = "11v2x0q8pn7hbmznqy872ksr7szyiki9cfhapymjhkf5nwfvcdbb";
   };
 
-  cargoSha256 = "1p72iwl9ca7a92nf6wyjjbn0qns0xxb4xrbz2r2nmd83cxs0fplg";
+  cargoSha256 = "1psgqj04hzv7p18h4phsahxg4rj9yz38b8mh111k6l8m4r83kd75";
 
   buildInputs = stdenv.lib.optionals stdenv.isDarwin [ CoreServices ];
 
diff --git a/pkgs/tools/text/mdcat/default.nix b/pkgs/tools/text/mdcat/default.nix
index c89d1526257f..eb51ad6d260a 100644
--- a/pkgs/tools/text/mdcat/default.nix
+++ b/pkgs/tools/text/mdcat/default.nix
@@ -11,19 +11,19 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mdcat";
-  version = "0.22.1";
+  version = "0.22.2";
 
   src = fetchFromGitHub {
     owner = "lunaryorn";
     repo = pname;
     rev = "mdcat-${version}";
-    hash = "sha256-4sM1xT/JQ+yM5tZkGwK7r0gUT5so9o1MnDJ7apZkRd4=";
+    hash = "sha256-i36MYTMkbSuWxxlWUDsyYMay/4Mg7M5jEFhHM60UrkM=";
   };
 
   nativeBuildInputs = [ pkgconfig asciidoctor installShellFiles ];
   buildInputs = [ openssl ] ++ stdenv.lib.optional stdenv.isDarwin Security;
 
-  cargoSha256 = "sha256-LoNm2/6/FgTKp95ETODY39D8Ou+9X+IXIy625YW9AFI=";
+  cargoSha256 = "sha256-mnDUIJhEGNoh3eq2Vhww1T/tpZh9RP+RxbRsBNrpOzw=";
 
   checkInputs = [ ansi2html ];
   # Skip tests that use the network and that include files.
diff --git a/pkgs/tools/typesetting/sile/default.nix b/pkgs/tools/typesetting/sile/default.nix
index 239bafa05c97..9ed6c1de0e91 100644
--- a/pkgs/tools/typesetting/sile/default.nix
+++ b/pkgs/tools/typesetting/sile/default.nix
@@ -38,11 +38,11 @@ in
 
 stdenv.mkDerivation rec {
   pname = "sile";
-  version = "0.10.12";
+  version = "0.10.13";
 
   src = fetchurl {
     url = "https://github.com/sile-typesetter/sile/releases/download/v${version}/${pname}-${version}.tar.xz";
-    sha256 = "0bxm3vhba289vcgpzbs1hz5fjamf0zgxkr7h8vcsiijjjavmv64a";
+    sha256 = "19k4r7wfszml4dac8cm1hx9rb1im3psigcidz8bdm9j9jzpd01yj";
   };
 
   configureFlags = [
@@ -109,6 +109,7 @@ stdenv.mkDerivation rec {
     '';
     homepage = "https://sile-typesetter.org/";
     platforms = platforms.unix;
+    broken = stdenv.isDarwin;   # https://github.com/NixOS/nixpkgs/issues/23018
     maintainers = with maintainers; [ doronbehar alerque ];
     license = licenses.mit;
   };
diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix
index 01c80ea3d804..5b5a91c116a3 100644
--- a/pkgs/top-level/aliases.nix
+++ b/pkgs/top-level/aliases.nix
@@ -158,7 +158,7 @@ mapAliases ({
   firefoxWrapper = firefox;           # 2015-09
 
   firestr = throw "firestr has been removed."; # added 2019-12-08
-  fish-foreign-env = fishPlugins.foreign-env; # added 2020-12-29
+  fish-foreign-env = throw "fish-foreign-env has been replaced with fishPlugins.foreign-env"; # added 2020-12-29, modified 2021-01-10
   flameGraph = flamegraph; # added 2018-04-25
   flvtool2 = throw "flvtool2 has been removed."; # added 2020-11-03
   foldingathome = fahclient; # added 2020-09-03
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 65cbdd4b0844..fb80ababf50b 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -730,6 +730,8 @@ in
 
   foot = callPackage ../applications/terminal-emulators/foot { };
 
+  germinal = callPackage ../applications/terminal-emulators/germinal { };
+
   guake = callPackage ../applications/terminal-emulators/guake { };
 
   havoc = callPackage ../applications/terminal-emulators/havoc { };
@@ -811,7 +813,9 @@ in
 
   wayst = callPackage ../applications/terminal-emulators/wayst { };
 
-  wezterm = callPackage ../applications/terminal-emulators/wezterm { };
+  wezterm = callPackage ../applications/terminal-emulators/wezterm {
+    inherit (darwin.apple_sdk.frameworks) Cocoa CoreGraphics Foundation;
+  };
 
   x3270 = callPackage ../applications/terminal-emulators/x3270 { };
 
@@ -827,6 +831,8 @@ in
 
   alpine-make-vm-image = callPackage ../tools/virtualization/alpine-make-vm-image { };
 
+  amazon-ec2-utils = callPackage ../tools/admin/amazon-ec2-utils { };
+
   amazon-ecs-cli = callPackage ../tools/virtualization/amazon-ecs-cli { };
 
   amber = callPackage ../tools/text/amber {
@@ -1406,6 +1412,8 @@ in
     novacomd = callPackage ../development/mobile/webos/novacomd.nix { };
   };
 
+  apprise = with python3Packages; toPythonApplication apprise;
+
   aria2 = callPackage ../tools/networking/aria2 {
     inherit (darwin.apple_sdk.frameworks) Security;
     inherit (python3Packages) sphinx;
@@ -1820,6 +1828,8 @@ in
 
   cloud-init = python3.pkgs.callPackage ../tools/virtualization/cloud-init { };
 
+  cloudbrute = callPackage ../tools/security/cloudbrute { };
+
   cloudflared = callPackage ../applications/networking/cloudflared { };
 
   cloudmonkey = callPackage ../tools/virtualization/cloudmonkey { };
@@ -2486,7 +2496,9 @@ in
 
   monetdb = callPackage ../servers/sql/monetdb { };
 
-  monado = callPackage ../applications/graphics/monado {};
+  monado = callPackage ../applications/graphics/monado {
+    inherit (gst_all_1) gstreamer gst-plugins-base;
+  };
 
   mons = callPackage ../tools/misc/mons {};
 
@@ -2508,6 +2520,8 @@ in
 
   mpd-mpris = callPackage ../tools/audio/mpd-mpris { };
 
+  mpris-scrobbler = callPackage ../tools/audio/mpris-scrobbler { };
+
   mq-cli = callPackage ../tools/system/mq-cli { };
 
   nextdns = callPackage ../applications/networking/nextdns { };
@@ -4576,6 +4590,8 @@ in
 
   gssdp = callPackage ../development/libraries/gssdp { };
 
+  grype = callPackage ../tools/security/grype { };
+
   gt5 = callPackage ../tools/system/gt5 { };
 
   gtest = callPackage ../development/libraries/gtest { };
@@ -6283,6 +6299,8 @@ in
 
   nzbget = callPackage ../tools/networking/nzbget { };
 
+  nzbhydra2 = callPackage ../servers/nzbhydra2 { };
+
   oathToolkit = callPackage ../tools/security/oath-toolkit { };
 
   oatpp = callPackage ../development/libraries/oatpp { };
@@ -6595,6 +6613,8 @@ in
 
   pbzip2 = callPackage ../tools/compression/pbzip2 { };
 
+  pcimem = callPackage ../os-specific/linux/pcimem { };
+
   pciutils = callPackage ../tools/system/pciutils { };
 
   pcsclite = callPackage ../tools/security/pcsclite {
@@ -7022,6 +7042,7 @@ in
 
   rdma-core = callPackage ../os-specific/linux/rdma-core { };
 
+  rdrview = callPackage ../tools/networking/rdrview {};
 
   real_time_config_quick_scan = callPackage ../applications/audio/real_time_config_quick_scan { };
 
@@ -7706,6 +7727,8 @@ in
 
   su = shadow.su;
 
+  subjs = callPackage ../tools/security/subjs { };
+
   subsonic = callPackage ../servers/misc/subsonic { };
 
   subfinder = callPackage ../tools/networking/subfinder { };
@@ -7757,6 +7780,10 @@ in
 
   tabnine = callPackage ../development/tools/tabnine { };
 
+  tab-rs = callPackage ../tools/misc/tab-rs {
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
   t1utils = callPackage ../tools/misc/t1utils { };
 
   talkfilters = callPackage ../misc/talkfilters {};
@@ -7875,7 +7902,7 @@ in
 
   tikzit = libsForQt5.callPackage ../tools/typesetting/tikzit { };
 
-  tinc_pre = callPackage ../tools/networking/tinc/pre.nix {};
+  tinc_pre = callPackage ../tools/networking/tinc/pre.nix { };
 
   tinycbor = callPackage ../development/libraries/tinycbor { };
 
@@ -7883,13 +7910,13 @@ in
 
   tinyemu = callPackage ../applications/virtualization/tinyemu { };
 
-  tinyfecvpn = callPackage ../tools/networking/tinyfecvpn {};
+  tinyfecvpn = callPackage ../tools/networking/tinyfecvpn { };
 
   tinyobjloader = callPackage ../development/libraries/tinyobjloader { };
 
   tinyprog = callPackage ../development/tools/misc/tinyprog { };
 
-  tinyproxy = callPackage ../tools/networking/tinyproxy {};
+  tinyproxy = callPackage ../tools/networking/tinyproxy { };
 
   tio = callPackage ../tools/misc/tio { };
 
@@ -8498,6 +8525,8 @@ in
 
   urjtag = callPackage ../tools/misc/urjtag { };
 
+  urlhunter = callPackage ../tools/security/urlhunter { };
+
   urlwatch = callPackage ../tools/networking/urlwatch { };
 
   valum = callPackage ../development/web/valum { };
@@ -8874,6 +8903,8 @@ in
 
   oil = callPackage ../shells/oil { };
 
+  oksh = callPackage ../shells/oksh { };
+
   pash = callPackage ../shells/pash { };
 
   tcsh = callPackage ../shells/tcsh { };
@@ -9030,6 +9061,8 @@ in
     gmp-static = gmp.override { withStatic = true; };
   };
 
+  cakelisp = callPackage ../development/compilers/cakelisp { };
+
   ciao = callPackage ../development/compilers/ciao { };
 
   colm = callPackage ../development/compilers/colm { };
@@ -10103,6 +10136,8 @@ in
 
   nrpl = callPackage ../development/tools/nrpl { };
 
+  nimlsp = callPackage ../development/tools/misc/nimlsp { };
+
   neko = callPackage ../development/compilers/neko { };
 
   nextpnr = callPackage ../development/compilers/nextpnr { };
@@ -10582,7 +10617,7 @@ in
 
   dhall-text = haskell.lib.justStaticExecutables haskellPackages.dhall-text;
 
-  dhallPackages = callPackages ./dhall-packages.nix { };
+  dhallPackages = callPackage ./dhall-packages.nix { };
 
   duktape = callPackage ../development/interpreters/duktape { };
 
@@ -12371,6 +12406,8 @@ in
 
   ttyd = callPackage ../servers/ttyd { };
 
+  turbogit = callPackage ../development/tools/turbogit { };
+
   tweak = callPackage ../applications/editors/tweak { };
 
   tychus = callPackage ../development/tools/tychus {
@@ -14396,8 +14433,13 @@ in
   libgudev = callPackage ../development/libraries/libgudev { };
 
   libguestfs-appliance = callPackage ../development/libraries/libguestfs/appliance.nix {};
-  libguestfs = callPackage ../development/libraries/libguestfs { };
-  libguestfs-with-appliance = libguestfs.override { appliance = libguestfs-appliance; };
+  libguestfs = callPackage ../development/libraries/libguestfs {
+    autoreconfHook = buildPackages.autoreconfHook264;
+  };
+  libguestfs-with-appliance = libguestfs.override {
+    appliance = libguestfs-appliance;
+    autoreconfHook = buildPackages.autoreconfHook264;
+  };
 
 
   libhangul = callPackage ../development/libraries/libhangul { };
@@ -14808,6 +14850,8 @@ in
 
   libs3 = callPackage ../development/libraries/libs3 { };
 
+  libschrift = callPackage ../development/libraries/libschrift { };
+
   libsearpc = callPackage ../development/libraries/libsearpc { };
 
   libsigcxx = callPackage ../development/libraries/libsigcxx { };
@@ -18991,7 +19035,7 @@ in
         kernelPatches.tag_hardened
         kernelPatches.hardened.${kernel.meta.branch}
       ];
-      modDirVersionArg = kernel.modDirVersion + "-hardened";
+      modDirVersionArg = kernel.modDirVersion + (kernelPatches.hardened.${kernel.meta.branch}).extra + "-hardened";
       isHardened = true;
   });
 
@@ -20621,6 +20665,8 @@ in
 
   appeditor = callPackage ../applications/misc/appeditor { };
 
+  appgate-sdp = callPackage ../applications/networking/appgate-sdp { };
+
   apostrophe = callPackage ../applications/editors/apostrophe {
     pythonPackages = python3Packages;
   };
@@ -21542,7 +21588,7 @@ in
 
   geoipupdate = callPackage ../applications/misc/geoipupdate/default.nix { };
 
-  ghostwriter = libsForQt514.callPackage ../applications/editors/ghostwriter { };
+  ghostwriter = libsForQt5.callPackage ../applications/editors/ghostwriter { };
 
   gitweb = callPackage ../applications/version-management/git-and-tools/gitweb { };
 
@@ -22126,6 +22172,9 @@ in
   heimer = libsForQt5.callPackage ../applications/misc/heimer { };
 
   hello = callPackage ../applications/misc/hello { };
+
+  hello-wayland = callPackage ../applications/graphics/hello-wayland { };
+
   hello-unfree = callPackage ../applications/misc/hello-unfree { };
 
   helmholtz = callPackage ../applications/audio/pd-plugins/helmholtz { };
@@ -22277,6 +22326,8 @@ in
 
   tiramisu = callPackage ../applications/misc/tiramisu { };
 
+  rootbar = callPackage ../applications/misc/rootbar {};
+
   waybar = callPackage ../applications/misc/waybar {};
 
   hikari = callPackage ../applications/window-managers/hikari { };
@@ -23513,6 +23564,12 @@ in
 
   muchsync = callPackage ../applications/networking/mailreaders/notmuch/muchsync.nix { };
 
+  nufraw = callPackage ../applications/graphics/nufraw/default.nix { };
+
+  nufraw-thumbnailer = callPackage ../applications/graphics/nufraw/default.nix {
+    addThumbnailer = true;
+  };
+
   notmuch-addrlookup = callPackage ../applications/networking/mailreaders/notmuch-addrlookup { };
 
   nova-filters =  callPackage ../applications/audio/nova-filters { };
@@ -24583,6 +24640,8 @@ in
 
   taskwarrior = callPackage ../applications/misc/taskwarrior { };
 
+  taskwarrior-tui = callPackage ../applications/misc/taskwarrior-tui { };
+
   dstask = callPackage ../applications/misc/dstask { };
 
   tasksh = callPackage ../applications/misc/tasksh { };
@@ -25512,6 +25571,8 @@ in
 
   xrestop = callPackage ../tools/X11/xrestop { };
 
+  xrgears = callPackage ../applications/graphics/xrgears { };
+
   xsd = callPackage ../development/libraries/xsd { };
 
   xscope = callPackage ../applications/misc/xscope { };
@@ -25641,7 +25702,19 @@ in
 
   zscroll = callPackage ../applications/misc/zscroll {};
 
-  zynaddsubfx = callPackage ../applications/audio/zynaddsubfx { };
+  zynaddsubfx = zyn-fusion;
+
+  zynaddsubfx-fltk = callPackage ../applications/audio/zynaddsubfx {
+    guiModule = "fltk";
+  };
+
+  zynaddsubfx-ntk = callPackage ../applications/audio/zynaddsubfx {
+    guiModule = "ntk";
+  };
+
+  zyn-fusion = callPackage ../applications/audio/zynaddsubfx {
+    guiModule = "zest";
+  };
 
   ### BLOCKCHAINS / CRYPTOCURRENCIES / WALLETS
 
@@ -25715,6 +25788,8 @@ in
 
   lnd = callPackage ../applications/blockchains/lnd.nix { };
 
+  lndconnect = callPackage ../applications/blockchains/lndconnect { };
+
   monero = callPackage ../applications/blockchains/monero {
     inherit (darwin.apple_sdk.frameworks) CoreData IOKit PCSC;
     boost = boost17x;
@@ -26972,6 +27047,8 @@ in
 
   dcm2niix = callPackage ../applications/science/biology/dcm2niix { };
 
+  deepsea = callPackage ../tools/security/deepsea { };
+
   deeptools = callPackage ../applications/science/biology/deeptools { python = python3; };
 
   delly = callPackage ../applications/science/biology/delly { };
@@ -26990,6 +27067,8 @@ in
 
   exonerate = callPackage ../applications/science/biology/exonerate { };
 
+  fastp = callPackage ../applications/science/biology/fastp { };
+
   hisat2 = callPackage ../applications/science/biology/hisat2 { };
 
   htslib = callPackage ../development/libraries/science/biology/htslib { };
@@ -27364,7 +27443,7 @@ in
   cadical = callPackage ../applications/science/logic/cadical {};
 
   inherit (callPackage ./coq-packages.nix {
-    inherit (ocaml-ng) ocamlPackages_4_05 ocamlPackages_4_09;
+    inherit (ocaml-ng) ocamlPackages_4_05 ocamlPackages_4_09 ocamlPackages_4_10;
   }) mkCoqPackages
     coqPackages_8_5  coq_8_5
     coqPackages_8_6  coq_8_6
@@ -27576,6 +27655,8 @@ in
 
   csxcad = callPackage ../applications/science/electronics/csxcad { };
 
+  diylc = callPackage ../applications/science/electronics/diylc { };
+
   flatcam = callPackage ../applications/science/electronics/flatcam { };
 
   fparser = callPackage ../applications/science/electronics/fparser { };
@@ -28037,6 +28118,8 @@ in
   fahcontrol = callPackage ../applications/science/misc/foldingathome/control.nix {};
   fahviewer = callPackage ../applications/science/misc/foldingathome/viewer.nix {};
 
+  foma = callPackage ../tools/misc/foma { };
+
   foo2zjs = callPackage ../misc/drivers/foo2zjs {};
 
   foomatic-filters = callPackage ../misc/drivers/foomatic-filters {};
@@ -28758,6 +28841,8 @@ in
 
   ssh-audit = callPackage ../tools/security/ssh-audit { };
 
+  autocpu-freq = callPackage ../tools/system/autocpu-freq {  };
+
   thermald = callPackage ../tools/system/thermald { };
 
   throttled = callPackage ../tools/system/throttled { };
diff --git a/pkgs/top-level/coq-packages.nix b/pkgs/top-level/coq-packages.nix
index aa7b3c35b82e..c67d489de628 100644
--- a/pkgs/top-level/coq-packages.nix
+++ b/pkgs/top-level/coq-packages.nix
@@ -1,13 +1,15 @@
 { lib, callPackage, newScope, recurseIntoAttrs, ocamlPackages_4_05, ocamlPackages_4_09
-, compcert
-}:
-
+, ocamlPackages_4_10, compcert
+}@args:
+let lib = import ../build-support/coq/extra-lib.nix {inherit (args) lib;}; in
 let
   mkCoqPackages' = self: coq:
     let callPackage = self.callPackage; in {
-      inherit coq;
+      inherit coq lib;
       coqPackages = self;
 
+      mkCoqDerivation = callPackage ../build-support/coq {};
+
       contribs = recurseIntoAttrs
         (callPackage ../development/coq-modules/contribs {});
 
@@ -22,6 +24,7 @@ let
       coq-elpi = callPackage ../development/coq-modules/coq-elpi {};
       coq-ext-lib = callPackage ../development/coq-modules/coq-ext-lib {};
       coq-haskell = callPackage ../development/coq-modules/coq-haskell { };
+      coqeal = callPackage ../development/coq-modules/coqeal {};
       coqhammer = callPackage ../development/coq-modules/coqhammer {};
       coqprime = callPackage ../development/coq-modules/coqprime {};
       coquelicot = callPackage ../development/coq-modules/coquelicot {};
@@ -39,19 +42,20 @@ let
       iris = callPackage ../development/coq-modules/iris {};
       ltac2 = callPackage ../development/coq-modules/ltac2 {};
       math-classes = callPackage ../development/coq-modules/math-classes { };
-      inherit (callPackage ../development/coq-modules/mathcomp {})
-        mathcomp_ mathcomp-config
-        mathcomp ssreflect
-        mathcomp-ssreflect mathcomp-fingroup mathcomp-algebra
-        mathcomp-solvable mathcomp-field mathcomp-character
-      ;
-      inherit (callPackage ../development/coq-modules/mathcomp/extra.nix { })
-        mathcomp-extra-override mathcomp-extra-config mathcomp-extra
-        current-mathcomp-extra mathcomp-extra-fast mathcomp-extra-all
-        mathcomp-finmap mathcomp-bigenough mathcomp-real-closed
-        mathcomp-analysis multinomials coqeal
-      ;
+      mathcomp = callPackage ../development/coq-modules/mathcomp {};
+      ssreflect          = self.mathcomp.ssreflect;
+      mathcomp-ssreflect = self.mathcomp.ssreflect;
+      mathcomp-fingroup  = self.mathcomp.fingroup;
+      mathcomp-algebra   = self.mathcomp.algebra;
+      mathcomp-solvable  = self.mathcomp.solvable;
+      mathcomp-field     = self.mathcomp.field;
+      mathcomp-character = self.mathcomp.character;
+      mathcomp-analysis = callPackage ../development/coq-modules/mathcomp-analysis {};
+      mathcomp-finmap = callPackage ../development/coq-modules/mathcomp-finmap {};
+      mathcomp-bigenough = callPackage ../development/coq-modules/mathcomp-bigenough {};
+      mathcomp-real-closed = callPackage ../development/coq-modules/mathcomp-real-closed {};
       metalib = callPackage ../development/coq-modules/metalib { };
+      multinomials = callPackage ../development/coq-modules/multinomials {};
       paco = callPackage ../development/coq-modules/paco {};
       paramcoq = callPackage ../development/coq-modules/paramcoq {};
       QuickChick = callPackage ../development/coq-modules/QuickChick {};
@@ -64,23 +68,22 @@ let
       VST = callPackage ../development/coq-modules/VST {
         compcert = compcert.override { version = "3.7"; };
       };
-
-      filterPackages = filterCoqPackages;
+      filterPackages = doesFilter: if doesFilter then filterCoqPackages self else self;
     };
 
-  filterCoqPackages = coq: set:
+  filterCoqPackages = set:
     lib.listToAttrs (
-      lib.concatMap (name:
-        let v = set.${name}; in
-        let p = v.compatibleCoqVersions or (_: true); in
-        lib.optional (p coq.coq-version)
-          (lib.nameValuePair name (
-            if lib.isAttrs v && v.recurseForDerivations or false
-            then filterCoqPackages coq v
-            else v))
+      lib.concatMap (name: let v = set.${name} or null; in
+          lib.optional (! v.meta.coqFilter or false)
+            (lib.nameValuePair name (
+              if lib.isAttrs v && v.recurseForDerivations or false
+              then filterCoqPackages v
+              else v))
       ) (lib.attrNames set)
     );
-
+  mkCoq = version: callPackage ../applications/science/logic/coq {
+    inherit version ocamlPackages_4_05 ocamlPackages_4_09 ocamlPackages_4_10;
+  };
 in rec {
 
   /* The function `mkCoqPackages` takes as input a derivation for Coq and produces
@@ -93,41 +96,17 @@ in rec {
    */
   mkCoqPackages = coq:
     let self = lib.makeScope newScope (lib.flip mkCoqPackages' coq); in
-    if coq.dontFilter or false then self else filterCoqPackages coq self;
+    self.filterPackages (! coq.dontFilter or false);
 
-  coq_8_5 = callPackage ../applications/science/logic/coq {
-    ocamlPackages = ocamlPackages_4_05;
-    version = "8.5pl3";
-  };
-  coq_8_6 = callPackage ../applications/science/logic/coq {
-    ocamlPackages = ocamlPackages_4_05;
-    version = "8.6.1";
-  };
-  coq_8_7 = callPackage ../applications/science/logic/coq {
-    ocamlPackages = ocamlPackages_4_09;
-    version = "8.7.2";
-  };
-  coq_8_8 = callPackage ../applications/science/logic/coq {
-    ocamlPackages = ocamlPackages_4_09;
-    version = "8.8.2";
-  };
-  coq_8_9 = callPackage ../applications/science/logic/coq {
-    ocamlPackages = ocamlPackages_4_09;
-    version = "8.9.1";
-  };
-  coq_8_10 = callPackage ../applications/science/logic/coq {
-    ocamlPackages = ocamlPackages_4_09;
-    version = "8.10.2";
-  };
-  coq_8_11 = callPackage ../applications/science/logic/coq {
-    version = "8.11.2";
-  };
-  coq_8_12 = callPackage ../applications/science/logic/coq {
-    version = "8.12.2";
-  };
-  coq_8_13 = callPackage ../applications/science/logic/coq {
-    version = "8.13+beta1";
-  };
+  coq_8_5  = mkCoq "8.5";
+  coq_8_6  = mkCoq "8.6";
+  coq_8_7  = mkCoq "8.7";
+  coq_8_8  = mkCoq "8.8";
+  coq_8_9  = mkCoq "8.9";
+  coq_8_10 = mkCoq "8.10";
+  coq_8_11 = mkCoq "8.11";
+  coq_8_12 = mkCoq "8.12";
+  coq_8_13 = mkCoq "8.13";
 
   coqPackages_8_5 = mkCoqPackages coq_8_5;
   coqPackages_8_6 = mkCoqPackages coq_8_6;
diff --git a/pkgs/top-level/dhall-packages.nix b/pkgs/top-level/dhall-packages.nix
index c1c2c5f0e3bb..5a3fb04748d0 100644
--- a/pkgs/top-level/dhall-packages.nix
+++ b/pkgs/top-level/dhall-packages.nix
@@ -19,6 +19,7 @@ let
 
     in
       { inherit
+          callPackage
           buildDhallPackage
           buildDhallGitHubPackage
           buildDhallDirectoryPackage
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index 9c19463923f8..e54ed17f3d0a 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -6,15 +6,15 @@
    be almost as much code as the function itself. */
 
 { config
-, stdenv, buildPackages, pkgs
+, stdenv, lib, buildPackages, pkgs
 , fetchurl, fetchgit, fetchpatch, fetchFromGitHub
 , perl, overrides, buildPerl, shortenPerlShebang
 }:
 
 # cpan2nix assumes that perl-packages.nix will be used only with perl 5.30.3 or above
-assert stdenv.lib.versionAtLeast perl.version "5.30.3";
+assert lib.versionAtLeast perl.version "5.30.3";
 let
-  inherit (stdenv.lib) maintainers;
+  inherit (lib) maintainers teams;
   self = _self // (overrides pkgs);
   _self = with self; {
 
@@ -27,8 +27,8 @@ let
   hasPerlModule = drv: drv ? perlModule ;
 
   requiredPerlModules = drvs: let
-    modules = stdenv.lib.filter hasPerlModule drvs;
-  in stdenv.lib.unique ([perl] ++ modules ++ stdenv.lib.concatLists (stdenv.lib.catAttrs "requiredPerlModules" modules));
+    modules = lib.filter hasPerlModule drvs;
+  in lib.unique ([perl] ++ modules ++ lib.concatLists (lib.catAttrs "requiredPerlModules" modules));
 
   # Convert derivation to a perl module.
   toPerlModule = drv:
@@ -77,7 +77,7 @@ let
        makePerlPath [ pkgs.perlPackages.libnet ]
        => "/nix/store/n0m1fk9c960d8wlrs62sncnadygqqc6y-perl-Net-SMTP-1.25/lib/perl5/site_perl"
   */
-  makePerlPath = stdenv.lib.makeSearchPathOutput "lib" perl.libPrefix;
+  makePerlPath = lib.makeSearchPathOutput "lib" perl.libPrefix;
 
   /* Construct a perl search path recursively including all dependencies (such as $PERL5LIB)
 
@@ -86,7 +86,7 @@ let
        makeFullPerlPath [ pkgs.perlPackages.CGI ]
        => "/nix/store/fddivfrdc1xql02h9q500fpnqy12c74n-perl-CGI-4.38/lib/perl5/site_perl:/nix/store/8hsvdalmsxqkjg0c5ifigpf31vc4vsy2-perl-HTML-Parser-3.72/lib/perl5/site_perl:/nix/store/zhc7wh0xl8hz3y3f71nhlw1559iyvzld-perl-HTML-Tagset-3.20/lib/perl5/site_perl"
   */
-  makeFullPerlPath = deps: makePerlPath (stdenv.lib.misc.closePropagation deps);
+  makeFullPerlPath = deps: makePerlPath (lib.misc.closePropagation deps);
 
 
   ack = buildPerlPackage {
@@ -100,16 +100,16 @@ let
 
     outputs = ["out" "man"];
 
-    nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin shortenPerlShebang;
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
     propagatedBuildInputs = [ FileNext ];
-    postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    postInstall = lib.optionalString stdenv.isDarwin ''
       shortenPerlShebang $out/bin/ack
     '';
 
     # tests fails on nixos and hydra because of different purity issues
     doCheck = false;
 
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "A grep-like tool tailored to working with large trees of source code";
       homepage    = "https://beyondgrep.com";
       license     = licenses.artistic2;
@@ -136,7 +136,7 @@ let
     };
     meta = {
       description = "A module for merging hierarchies using the C3 algorithm";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -159,7 +159,7 @@ let
     };
     propagatedBuildInputs = [ AlgorithmDiff ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -185,7 +185,7 @@ let
     buildInputs = [ DevelHide Test2Suite ];
     meta = {
       description = "Build external dependencies for use in CPAN";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -200,7 +200,7 @@ let
     buildInputs = [ pkgs.gmp Alienm4 DevelChecklib IOSocketSSL MojoDOM58 NetSSLeay SortVersions Test2Suite URI ];
     meta = {
       description = "Alien package for the GNU Multiple Precision library.";
-      license = with stdenv.lib.licenses; [ lgpl3Plus ];
+      license = with lib.licenses; [ lgpl3Plus ];
     };
   };
 
@@ -215,7 +215,7 @@ let
     buildInputs = [ pkgs.libxml2 MojoDOM58 SortVersions Test2Suite URI ];
     meta = {
       description = "Install the C libxml2 library on your system";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -238,7 +238,7 @@ let
      };
      meta = {
        description = "Lets your class/object say it works like something else";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -259,7 +259,7 @@ let
 
     meta = {
       description = "Get, Build and Use SDL libraries";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -298,7 +298,7 @@ let
     buildInputs = [ pkgs.gnum4 Alienpatch IOSocketSSL MojoDOM58 NetSSLeay SortVersions Test2Suite URI ];
     meta = {
       description = "Find or build GNU m4";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -313,7 +313,7 @@ let
     buildInputs = [ IOSocketSSL MojoDOM58 NetSSLeay SortVersions Test2Suite URI ];
     meta = {
       description = "Find or build patch";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -328,7 +328,7 @@ let
     meta = {
       homepage = "https://github.com/danaj/Alt-Crypt-RSA-BigInt";
       description = "RSA public-key cryptosystem, using Math::BigInt";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -342,7 +342,7 @@ let
     };
     buildInputs = [ CanaryStability ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -356,7 +356,7 @@ let
     propagatedBuildInputs = [ AnyEvent IOAIO ];
     meta = {
       description = "Truly asynchronous file and directory I/O";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -372,7 +372,7 @@ let
     meta = {
       homepage = "https://github.com/potyl/perl-AnyEvent-CacheDNS";
       description = "Simple DNS resolver with caching";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -408,7 +408,7 @@ let
     propagatedBuildInputs = [ AnyEvent JSONXS ];
     meta = {
       description = "Communicate with the i3 window manager";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -423,7 +423,7 @@ let
     propagatedBuildInputs = [ AnyEvent DevelGlobalDestruction FileShareDir ListMoreUtils NetAMQP Readonly namespaceclean ];
     meta = {
       description = "An asynchronous and multi channel Perl AMQP client";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -467,7 +467,7 @@ let
     meta = {
       homepage = "https://github.com/mschout/apache-authcookie";
       description = "Perl Authentication and Authorization via cookies";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -485,7 +485,7 @@ let
     meta = {
       homepage = "https://github.com/kazeburo/Apache-LogFormat-Compiler";
       description = "Compile a log format string to perl-code";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -499,7 +499,7 @@ let
     buildInputs = [ TestDeep TestException ];
     meta = {
       description = "A persistence framework for session data";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -513,7 +513,7 @@ let
     doCheck = false;
     meta = {
       description = "Test.pm wrapper with helpers for testing Apache";
-      license = stdenv.lib.licenses.asl20;
+      license = lib.licenses.asl20;
     };
   };
 
@@ -549,7 +549,7 @@ let
     '';
     meta = {
       description = "A container for functions of the ClusterSSH programs";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       homepage = "https://github.com/duncs/clusterssh/wiki";
     };
   };
@@ -566,7 +566,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/App-Cmd";
       description = "Write command line apps with less suffering";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -592,7 +592,7 @@ let
      };
      meta = {
        description = "pack your dependencies onto your script file";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -606,7 +606,7 @@ let
     meta = {
       homepage = "https://github.com/miyagawa/cpanminus";
       description = "Get, unpack, build and install modules from CPAN";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -619,14 +619,14 @@ let
     };
     buildInputs = [ ModuleBuildTiny ];
     propagatedBuildInputs = [ CPANCommonIndex CPANDistnameInfo ClassTiny CommandRunner ExtUtilsInstallPaths FileCopyRecursive Filepushd HTTPTinyish MenloLegacy ModuleCPANfile ParallelPipes locallib ];
-    nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin shortenPerlShebang;
-    postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    postInstall = lib.optionalString stdenv.isDarwin ''
       shortenPerlShebang $out/bin/cpm
     '';
     meta = {
       homepage = "https://github.com/skaji/cpm";
       description = "A fast CPAN module installer";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.zakame ];
     };
   };
@@ -641,7 +641,7 @@ let
     meta = {
       homepage = "https://github.com/jhthorsen/applify";
       description = "Write object oriented scripts with ease";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -655,16 +655,16 @@ let
     };
     buildInputs = [ PodParser ];
     propagatedBuildInputs = [ AppPackager FileLoadLines IOString ImageInfo PDFAPI2 StringInterpolateNamed TextLayout ]
-      ++ stdenv.lib.optional (!stdenv.isDarwin) [ Wx ];
-    nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin shortenPerlShebang;
-    postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+      ++ lib.optional (!stdenv.isDarwin) [ Wx ];
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    postInstall = lib.optionalString stdenv.isDarwin ''
       shortenPerlShebang $out/bin/chordpro
       rm $out/bin/wxchordpro # Wx not supported on darwin
     '';
     meta = {
       homepage = "http://www.chordpro.org";
       description = "A lyrics and chords formatting program";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -677,7 +677,7 @@ let
     };
     meta = {
       description = "Abstraction for Packagers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -695,7 +695,7 @@ let
 
     meta = {
       description = "Manage perl installations in your $HOME";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -710,7 +710,7 @@ let
      buildInputs = [ ExtUtilsMakeMakerCPANfile TestUseAllModules ];
      meta = {
        description = "simple CPAN package extractor";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -727,7 +727,7 @@ let
     meta = {
       homepage = "https://sqitch.org/";
       description = "Sane database change management";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -744,7 +744,7 @@ let
       '';
     meta = {
       description = "A command that computes simple statistics";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
       homepage = "https://github.com/nferraz/st";
       maintainers = [ maintainers.eelco ];
     };
@@ -762,7 +762,7 @@ let
     doCheck = false;
     meta = {
       description = "Define validation through subroutine attributes";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -788,7 +788,7 @@ let
      propagatedBuildInputs = [ AlgorithmDiff ClassAccessor ];
      meta = {
        description = "Find the differences between two arrays";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -804,7 +804,7 @@ let
     meta = {
       homepage = "https://github.com/dwburke/perl-Array-FIFO";
       description = "A Simple limitable FIFO array, with sum and average methods";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -817,7 +817,7 @@ let
     };
     meta = {
       description = "ping a huge number of servers in several seconds";
-      license = with stdenv.lib.licenses; [ artistic2 ];
+      license = with lib.licenses; [ artistic2 ];
     };
   };
 
@@ -831,7 +831,7 @@ let
     meta = {
       description = "Module for manipulations of cpio archives";
       # See https://rt.cpan.org/Public/Bug/Display.html?id=43597#txn-569710
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -844,7 +844,7 @@ let
     };
     meta = {
       description = "Generic archive extracting mechanism";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -857,7 +857,7 @@ let
     };
     meta = {
       description = "Manipulates TAR archives";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -884,7 +884,7 @@ let
     buildInputs = [ TestMockModule ];
     meta = {
       description = "Provide an interface to ZIP archive files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -898,7 +898,7 @@ let
     meta = {
       homepage = "https://github.com/timj/perl-Astro-FITS-Header/tree/master";
       description = "Object-oriented interface to FITS HDUs";
-      license = stdenv.lib.licenses.free;
+      license = lib.licenses.free;
     };
   };
 
@@ -914,7 +914,7 @@ let
     NIX_CFLAGS_LINK = "-L${pkgs.zlib.out}/lib -lz";
     meta = {
       description = "Fast C metadata and tag reader for all common audio file formats";
-      license = stdenv.lib.licenses.gpl2;
+      license = lib.licenses.gpl2;
     };
   };
 
@@ -925,11 +925,11 @@ let
       url = "mirror://cpan/authors/id/Z/ZE/ZEFRAM/Authen-DecHpwd-2.007.tar.gz";
       sha256 = "f43a93bb02b41f7327d92f9e963b69505f67350a52e8f50796f98afc4fb3f177";
     };
-    perlPreHook = stdenv.lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
+    perlPreHook = lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
     propagatedBuildInputs = [ DataInteger DigestCRC ScalarString ];
     meta = {
       description = "DEC VMS password hashing";
-      license = stdenv.lib.licenses.gpl1Plus;
+      license = lib.licenses.gpl1Plus;
     };
   };
 
@@ -943,7 +943,7 @@ let
     propagatedBuildInputs = [ ClassAccessor CryptPasswdMD5 DigestSHA1 IOLockedFile ];
     meta = {
       description = "Interface to read and modify Apache .htpasswd files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -958,7 +958,7 @@ let
     propagatedBuildInputs = [ pkgs.libkrb5 ];
     meta = {
       description = "XS bindings for Kerberos 5";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ DevelChecklib FileWhich PkgConfig ];
   };
@@ -987,7 +987,7 @@ let
     '';
     meta = {
       description = "Perl extension for MIT Kerberos 5 admin interface";
-      license = stdenv.lib.licenses.bsd3;
+      license = lib.licenses.bsd3;
     };
   };
 
@@ -1006,7 +1006,7 @@ let
     '';
     meta = {
       description = "Generate Tickets (Signed HTTP Cookies) for mod_auth_pubtkt protected websites";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1022,7 +1022,7 @@ let
     meta = {
       homepage = "https://github.com/oalders/authen-oath";
       description = "OATH One Time Passwords";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -1037,7 +1037,7 @@ let
     propagatedBuildInputs = [ AuthenDecHpwd CryptDES CryptEksblowfish CryptMySQL CryptPasswdMD5 CryptUnixCryptXS DataEntropy DigestMD4 ModuleRuntime ];
     meta = {
       description = "Hashed passwords/passphrases as objects";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1052,7 +1052,7 @@ let
     propagatedBuildInputs = [ DataHexDump NetIP ];
     meta = {
       description = "Provide simple Radius client facilities  ";
-      license = with stdenv.lib.licenses; [ artistic2 ];
+      license = with lib.licenses; [ artistic2 ];
     };
   };
 
@@ -1066,7 +1066,7 @@ let
     propagatedBuildInputs = [ DigestHMAC ];
     meta = {
       description = "SASL Authentication framework";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1081,7 +1081,7 @@ let
     propagatedBuildInputs = [ UnicodeStringprep ];
     meta = {
       description = "A Stringprep Profile for User Names and Passwords (RFC 4013)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -1098,7 +1098,7 @@ let
     meta = {
       homepage = "https://github.com/dagolden/Authen-SCRAM";
       description = "Salted Challenge Response Authentication Mechanism (RFC 5802)";
-      license = stdenv.lib.licenses.asl20;
+      license = lib.licenses.asl20;
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -1113,7 +1113,7 @@ let
     propagatedBuildInputs = [ ClassAccessor ClassDataInheritable CryptPasswdMD5 ParamsValidate ];
     meta = {
       description = "Simple Authentication";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1127,7 +1127,7 @@ let
      propagatedBuildInputs = [ AuthenSimple ];
      meta = {
        description = "Simple Passwd authentication";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -1141,7 +1141,7 @@ let
     propagatedBuildInputs = [ ScopeGuard ];
     meta = {
       description = "Call methods on native types";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ IPCSystemSimple TestFatal ];
   };
@@ -1171,7 +1171,7 @@ let
       '';
 
       homepage = "http://www.aarontrevena.co.uk/opensource/autodia/";
-      license = stdenv.lib.licenses.gpl2Plus;
+      license = lib.licenses.gpl2Plus;
     };
     buildInputs = [ DBI ];
   };
@@ -1185,7 +1185,7 @@ let
     };
     meta = {
       description = "Lexically disable autovivification";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1200,7 +1200,7 @@ let
     meta = {
       homepage = "https://github.com/rurban/perl-compiler";
       description = "Perl compiler";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     doCheck = false; /* test fails */
   };
@@ -1214,7 +1214,7 @@ let
     };
     meta = {
       description = "B::COW additional B helpers to check COW status";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1240,7 +1240,7 @@ let
     propagatedBuildInputs = [ ClassAccessor YAMLSyck ];
     meta = {
       description = "Client to communicate with beanstalkd server";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1269,7 +1269,7 @@ let
     propagatedBuildInputs = [ ModuleImplementation SubExporterProgressive ];
     meta = {
       description = "Execute code after a scope finished compilation";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1283,7 +1283,7 @@ let
     buildInputs = [ ExtUtilsDepends ];
     meta = {
       description = "Wrap OP check callbacks";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1306,7 +1306,7 @@ let
     };
     meta = {
       description = "Lists of reserved barewords and symbol names";
-      license = with stdenv.lib.licenses; [ artistic1 gpl2 ];
+      license = with lib.licenses; [ artistic1 gpl2 ];
     };
   };
 
@@ -1320,7 +1320,7 @@ let
     meta = {
       homepage = "https://github.com/ingydotnet/boolean-pm";
       description = "Boolean support for Perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1351,7 +1351,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/Bot-Training";
       description = "Plain text training material for bots like Hailo and AI::MegaHAL";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1367,7 +1367,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/Bot-Training-MegaHAL";
       description = "Provide megahal.trn via Bot::Training";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1383,7 +1383,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/Bot-Training-StarCraft";
       description = "Provide starcraft.trn via Bot::Training";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1395,9 +1395,9 @@ let
       sha256 = "0g8c7825ng2m0yz5sy6838rvfdl8j3vm29524wjgf66ccfhgn74x";
     };
     meta = {
-      maintainers = [ maintainers.limeytexan ];
+      maintainers = teams.deshaw.members;
       description = "BSD process resource limit and priority functions";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -1412,7 +1412,7 @@ let
      buildInputs = [ ExtUtilsDepends ];
      meta = {
        description = "Helper functions for op tree manipulation";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -1439,7 +1439,7 @@ let
     propagatedBuildInputs = [ BusinessISBNData ];
     meta = {
       description = "Parse and validate ISBNs";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1452,7 +1452,7 @@ let
     };
     meta = {
       description = "Data pack for Business::ISBN";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1466,7 +1466,7 @@ let
     propagatedBuildInputs = [ TieCycle ];
     meta = {
       description = "Work with International Standard Music Numbers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1479,7 +1479,7 @@ let
     };
     meta = {
       description = "Work with International Standard Serial Numbers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1493,7 +1493,7 @@ let
     propagatedBuildInputs = [ CryptRandomSeed MathRandomISAAC ];
     meta = {
       description = "Perl extension to generate cryptographically-secure random bytes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -1507,7 +1507,7 @@ let
     };
     meta = {
       description = "A tiny Perl extension to generate cryptographically-secure random bytes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -1543,7 +1543,7 @@ let
     buildInputs = [ FileWhich TestRequires TestSharedFork TestTCP ];
     meta = {
       description = "KyotoTycoon client library";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1567,7 +1567,7 @@ let
     };
     meta = {
       description = "Perl client for B<memcached>, in C language";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1591,7 +1591,7 @@ let
     };
     meta = {
       description = "A lightweight cache with timed expiration";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1606,7 +1606,7 @@ let
     meta = {
       homepage = "http://gtk2-perl.sourceforge.net/";
       description = "Perl interface to the cairo 2D vector graphics library";
-      license = stdenv.lib.licenses.lgpl21Plus;
+      license = lib.licenses.lgpl21Plus;
     };
     propagatedBuildInputs = [ ExtUtilsDepends ExtUtilsPkgConfig ];
   };
@@ -1621,7 +1621,7 @@ let
     buildInputs = [ pkgs.cairo ];
     meta = {
       description = "Integrate Cairo into the Glib type system";
-      license = stdenv.lib.licenses.lgpl21Plus;
+      license = lib.licenses.lgpl21Plus;
     };
     propagatedBuildInputs = [ Cairo Glib ];
   };
@@ -1635,7 +1635,7 @@ let
     };
     meta = {
       description = "Sanity-check calling context";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -1670,7 +1670,7 @@ let
       sha256 = "a5c91c62cf95fcb868f60eab5c832908f6905221013fea2bce3ff57046d7b6ea";
     };
     meta = {
-      license = stdenv.lib.licenses.gpl1Plus;
+      license = lib.licenses.gpl1Plus;
     };
   };
 
@@ -1693,7 +1693,7 @@ let
     };
     meta = {
       description = "Capture STDOUT and STDERR from Perl, XS or external programs";
-      license = stdenv.lib.licenses.asl20;
+      license = lib.licenses.asl20;
     };
   };
 
@@ -1706,7 +1706,7 @@ let
     };
     meta = {
       description = "Warns and dies noisily with stack backtraces";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestBase ];
   };
@@ -1731,7 +1731,7 @@ let
     };
     propagatedBuildInputs = [ CarpAssert ];
     meta = {
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
     buildInputs = [ TestException ];
   };
@@ -1745,7 +1745,7 @@ let
     };
     meta = {
       description = "Report errors from perspective of caller of a \"clan\" of modules";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1760,7 +1760,7 @@ let
     meta = {
       homepage = "https://github.com/perl-carton/carton";
       description = "Perl module dependency manager (aka Bundler for Perl)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1774,7 +1774,7 @@ let
     propagatedBuildInputs = [ CatalystRuntime DataVisitor ];
     meta = {
       description = "Sensible default end action";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ HTTPRequestAsCGI ];
   };
@@ -1790,7 +1790,7 @@ let
     propagatedBuildInputs = [ CatalystRuntime URIFind ];
     meta = {
       description = "Automated REST Method Dispatching";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1805,7 +1805,7 @@ let
     propagatedBuildInputs = [ CatalystPluginAuthentication ClassAccessor DataUUID StringEscape ];
     meta = {
       description = "HTTP Basic and Digest authentication";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1830,7 +1830,7 @@ let
     propagatedBuildInputs = [ CatalystModelDBICSchema CatalystPluginAuthentication ];
     meta = {
       description = "A storage class for Catalyst Authentication using DBIx::Class";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestWarn ];
   };
@@ -1846,7 +1846,7 @@ let
     buildInputs = [ TestMore TestMockObject TestException NetLDAPServerTest ];
     meta = {
       description= "Authentication from an LDAP Directory";
-      license = with stdenv.lib.licenses; [ artistic1 ];
+      license = with lib.licenses; [ artistic1 ];
     };
   };
 
@@ -1860,7 +1860,7 @@ let
     propagatedBuildInputs = [ CatalystRuntime ];
     meta = {
       description = "Moose role to create only one instance of component per context";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1875,7 +1875,7 @@ let
     propagatedBuildInputs = [ CatalystComponentInstancePerContext HTMLFormFuMultiForm RegexpAssemble ];
     meta = {
       description = "Catalyst integration for HTML::FormFu";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     doCheck = false; /* fails with 'open3: exec of .. perl .. failed: Argument list too long at .../TAP/Parser/Iterator/Process.pm line 165.' */
   };
@@ -1891,7 +1891,7 @@ let
     propagatedBuildInputs = [ CatalystPluginStaticSimple ClassAccessor FileSlurp JSONXS ListMoreUtils PodPOMViewTOC XMLSimple ];
     meta = {
       description = "Serves PODs right from your Catalyst application";
-      license = stdenv.lib.licenses.bsd3;
+      license = lib.licenses.bsd3;
     };
   };
 
@@ -1907,7 +1907,7 @@ let
     meta = {
       homepage = "http://wiki.catalystframework.org/wiki/";
       description = "Catalyst Development Tools";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1921,7 +1921,7 @@ let
     propagatedBuildInputs = [ CatalystRuntime ];
     meta = {
       description = "Regex DispatchType";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1934,7 +1934,7 @@ let
     };
     meta = {
       description = "The Catalyst developer's manual";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1949,7 +1949,7 @@ let
     propagatedBuildInputs = [ CatalystComponentInstancePerContext CatalystXComponentTraits DBIxClassSchemaLoader MooseXMarkAsMethods MooseXNonMoose MooseXTypesLoadableClass TieIxHash ];
     meta = {
       description = "DBIx::Class::Schema Model Class";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1965,7 +1965,7 @@ let
     meta = {
       homepage = "http://wiki.catalystframework.org/wiki/";
       description = "The Catalyst Framework Runtime";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1979,7 +1979,7 @@ let
     propagatedBuildInputs = [ CatalystRuntime DateTime ];
     meta = {
       description = "Request logging from within Catalyst";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -1994,7 +1994,7 @@ let
     propagatedBuildInputs = [ CatalystPluginSession ];
     meta = {
       description = "Infrastructure plugin for the Catalyst authentication framework";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2020,7 +2020,7 @@ let
     propagatedBuildInputs = [ CatalystPluginAuthentication SetObject UNIVERSALisa ];
     meta = {
       description = "Role based authorization for Catalyst based on Catalyst::Plugin::Authentication";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2035,7 +2035,7 @@ let
     propagatedBuildInputs = [ CatalystRuntime ];
     meta = {
       description = "Flexible caching support for Catalyst";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2050,7 +2050,7 @@ let
     propagatedBuildInputs = [ ClassAccessor HTTPMessage MROCompat ];
     meta = {
       description = "HTTP/1.1 cache validators for Catalyst";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2087,7 +2087,7 @@ let
     propagatedBuildInputs = [ CatalystRuntime DataFormValidator ];
     meta = {
       description = "Data::FormValidator";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2100,7 +2100,7 @@ let
     };
     propagatedBuildInputs = [ CatalystPluginFormValidator FormValidatorSimple ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2114,7 +2114,7 @@ let
     propagatedBuildInputs = [ ClassAccessor LogHandler MROCompat ];
     meta = {
       description = "Catalyst Plugin for Log::Handler";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2129,7 +2129,7 @@ let
     propagatedBuildInputs = [ CatalystRuntime ObjectSignature ];
     meta = {
       description = "Generic Session plugin - ties together server side storage and client side state required to maintain session data";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2143,7 +2143,7 @@ let
     propagatedBuildInputs = [ CatalystPluginSession ];
     meta = {
       description = "Per-session custom expiry times";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2177,7 +2177,7 @@ let
     propagatedBuildInputs = [ CacheCache CatalystPluginSession ClassDataInheritable ];
     meta = {
       description = "File storage backend for session data";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2192,7 +2192,7 @@ let
     buildInputs = [ CatalystActionREST TestWarnings TimeOut URISmartURI ];
     meta = {
       description = "Configurable URIs for Catalyst";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2206,7 +2206,7 @@ let
     propagatedBuildInputs = [ CatalystRuntime ];
     meta = {
       description = "Display a stack trace on the debug screen";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2221,7 +2221,7 @@ let
     propagatedBuildInputs = [ CatalystRuntime MIMETypes MooseXTypes ];
     meta = {
       description = "Make serving static pages painless";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2235,7 +2235,7 @@ let
     propagatedBuildInputs = [ CatalystRuntime strictures ];
     meta = {
       description = "Handle passing of status messages between screens of a web application";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2250,7 +2250,7 @@ let
     propagatedBuildInputs = [ CatalystRuntime TextCSV ];
     meta = {
       description = "CSV view class";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2263,7 +2263,7 @@ let
     };
     buildInputs = [ CatalystRuntime TestLongString TestSimple13 TestWWWMechanize TestWWWMechanizeCatalyst TextCSV XMLSimple ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2277,7 +2277,7 @@ let
     propagatedBuildInputs = [ CatalystRuntime ];
     meta = {
       description = "JSON view for your data";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2291,7 +2291,7 @@ let
     propagatedBuildInputs = [ CatalystRuntime ClassAccessor TemplateTimer ];
     meta = {
       description = "Template View Class";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2326,7 +2326,7 @@ let
     propagatedBuildInputs = [ Moose URI namespaceautoclean ];
     meta = {
       description = "Replace request base with value passed by HTTP proxy";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2345,7 +2345,7 @@ let
     propagatedBuildInputs = [ CatalystRuntime MooseXTypes PodParser Starman ];
     meta = {
       description = "Replace the development server with Starman";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2359,7 +2359,7 @@ let
     meta = {
       homepage = "https://github.com/toddr/CDB_File";
       description = "Perl extension for access to cdb databases";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ BCOW ];
   };
@@ -2375,7 +2375,7 @@ let
     buildInputs = [ LogAnyAdapterLog4perl LogLog4perl TestDeep TestException TestLWPUserAgent TestPod ];
     meta = {
       description = "a data toolkit";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       homepage = "https://github.com/LibreCat/Catmandu";
     };
   };
@@ -2389,7 +2389,7 @@ let
     };
     meta = {
       description = "Get the CDDB info for an audio cd";
-      license = stdenv.lib.licenses.artistic1;
+      license = lib.licenses.artistic1;
       maintainers = [ maintainers.endgame ];
     };
   };
@@ -2403,7 +2403,7 @@ let
     };
     meta = {
       description = "Parse a CDDB/freedb data file";
-      license = stdenv.lib.licenses.artistic1;
+      license = lib.licenses.artistic1;
     };
   };
 
@@ -2419,7 +2419,7 @@ let
     propagatedBuildInputs = [ HTMLParser ];
     meta = {
       description = "Handle Common Gateway Interface requests and responses";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2434,7 +2434,7 @@ let
      buildInputs = [ CGI CaptureTiny ModuleBuildTiny SubIdentify Switch TestNoWarnings TestRequires TryTiny ];
      meta = {
        description = "Compile .cgi scripts to a code reference like ModPerl::Registry";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/miyagawa/CGI-Compile";
      };
   };
@@ -2460,7 +2460,7 @@ let
     meta = {
       homepage = "https://github.com/tokuhirom/p5-cgi-emulate-psgi";
       description = "PSGI adapter for CGI";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2487,7 +2487,7 @@ let
     propagatedBuildInputs = [ CGI FCGI ];
     doCheck = false;
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2511,7 +2511,7 @@ let
     };
     meta = {
       description = "A lightweight CGI form processing package";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2525,7 +2525,7 @@ let
     propagatedBuildInputs = [ CGI ];
     meta = {
       description = "Adapt CGI.pm to the PSGI protocol";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2549,7 +2549,7 @@ let
     propagatedBuildInputs = [ IOStringy ];
     meta = {
       description = "A Simple totally OO CGI interface that is CGI.pm compliant";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestException TestNoWarnings ];
   };
@@ -2564,7 +2564,7 @@ let
     buildInputs = [ TestDeep ];
     meta = {
       description = "Build structures from CGI data";
-      license = stdenv.lib.licenses.bsd2;
+      license = lib.licenses.bsd2;
     };
   };
 
@@ -2583,7 +2583,7 @@ let
     propagatedBuildInputs = [ CarpAssert ClassLoad DataUUID DigestJHash HashMoreUtils JSONMaybeXS ListMoreUtils LogAny Moo MooXTypesMooseLikeNumeric StringRewritePrefix TaskWeaken TimeDuration TimeDurationParse ];
     meta = {
       description = "Unified cache handling interface";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2597,7 +2597,7 @@ let
     propagatedBuildInputs = [ GD ];
     meta = {
         description = "A series of charting modules";
-        license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+        license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2610,7 +2610,7 @@ let
     };
     meta = {
       description = "Package for creating Cisco IPPhone XML objects";
-      license = with stdenv.lib.licenses; [ artistic1 ];
+      license = with lib.licenses; [ artistic1 ];
     };
   };
 
@@ -2624,7 +2624,7 @@ let
     meta = {
       homepage = "https://metacpan.org/pod/CLASS";
       description = "Alias for __PACKAGE__";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -2637,7 +2637,7 @@ let
       sha256 = "07215zzr4ydf49832vn54i3gf2q5b97lydkv8j56wb2svvjs64mz";
     };
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2662,7 +2662,7 @@ let
     propagatedBuildInputs = [ ModuleRuntime ];
     meta = {
       description = "Lets you build groups of accessors";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2675,7 +2675,7 @@ let
     };
     meta = {
       description = "A minimalistic variant of Class::Accessor";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2688,7 +2688,7 @@ let
     };
     meta = {
       description = "Run-time load a class the first time you call a method in it";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2712,7 +2712,7 @@ let
     propagatedBuildInputs = [ AlgorithmC3 ];
     meta = {
       description = "A pragma to use the C3 method resolution order algorithm";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2727,7 +2727,7 @@ let
     propagatedBuildInputs = [ MROCompat ];
     meta = {
       description = "Make NEXT suck less";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2741,7 +2741,7 @@ let
     buildInputs = [ TestException ];
     propagatedBuildInputs = [ ClassC3 ClassInspector MROCompat ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2764,7 +2764,7 @@ let
     propagatedBuildInputs = [ ParamsValidate ];
     meta = {
       description = "Glues object frameworks together transparently";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2795,8 +2795,8 @@ let
     };
     meta = {
       description = "Base class for hierarchally ordered objects";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
-      maintainers = [ maintainers.limeytexan ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = teams.deshaw.members;
     };
   };
 
@@ -2818,7 +2818,7 @@ let
     };
     meta = {
       description = "Provide utility methods for factory classes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2831,7 +2831,7 @@ let
     };
     meta = {
       description = "another class and object builder";
-      license = with stdenv.lib.licenses; [ artistic1 ];
+      license = with lib.licenses; [ artistic1 ];
     };
   };
 
@@ -2844,7 +2844,7 @@ let
     };
     meta = {
       description = "Get information about a class and its structure";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2877,7 +2877,7 @@ let
     };
     meta = {
       description = "Load modules and create objects on demand";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2905,7 +2905,7 @@ let
     prePatch = "rm configure";
     meta = {
       description = "A module for creating generic methods";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2920,7 +2920,7 @@ let
     meta = {
       homepage = "https://github.com/moose/Class-Method-Modifiers";
       description = "Provides Moose-like method modifiers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2934,7 +2934,7 @@ let
     propagatedBuildInputs = [ ParamsClassify ];
     meta = {
       description = "Dynamic class mixing";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2948,7 +2948,7 @@ let
     propagatedBuildInputs = [ DevelStackTrace ];
     meta = {
       description = "A smart return value object";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -2979,7 +2979,7 @@ let
      };
      meta = {
        description = "Minimalist class construction";
-       license = with stdenv.lib.licenses; [ asl20 ];
+       license = with lib.licenses; [ asl20 ];
        homepage = "https://github.com/dagolden/Class-Tiny";
      };
   };
@@ -2996,7 +2996,7 @@ let
     meta = {
       homepage = "https://github.com/moose/Class-Load";
       description = "A working (require \"Class::Name\") and more";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3012,7 +3012,7 @@ let
     meta = {
       homepage = "https://github.com/moose/Class-Load-XS";
       description = "XS implementation of parts of Class::Load";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -3035,7 +3035,7 @@ let
     };
     meta = {
       description = "Support for creating standard 'inside-out' classes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3048,7 +3048,7 @@ let
     };
     propagatedBuildInputs = [ ClassStd ];
     checkInputs = [ TestPod TestPodCoverage ];
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "Faster but less secure than Class::Std";
       license = with licenses; [ artistic1 gpl1Plus ];
     };
@@ -3075,7 +3075,7 @@ let
     propagatedBuildInputs = [ CarpAssert ClassDataInheritable ClassISA ];
     meta = {
       description = "Base class for virtual base classes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3088,7 +3088,7 @@ let
     };
     meta = {
       description = "Generate fast XS accessors without runtime compilation";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3104,7 +3104,7 @@ let
     meta = {
       homepage = "https://github.com/reyjrar/CLI-Helpers";
       description = "Subroutines for making simple command line scripts";
-      license = stdenv.lib.licenses.bsd3;
+      license = lib.licenses.bsd3;
     };
   };
 
@@ -3117,7 +3117,7 @@ let
     };
     meta = {
       description = "Clipboard - Copy and Paste with any OS";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ CGI ];
     # Disable test on darwin because MacPasteboard fails when not logged in interactively.
@@ -3137,7 +3137,7 @@ let
     };
     meta = {
       description = "Recursively copy Perl datatypes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ BCOW ];
   };
@@ -3152,7 +3152,7 @@ let
      buildInputs = [ Clone ClonePP TestWithoutModule ];
      meta = {
        description = "Choose appropriate clone utility";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -3164,7 +3164,7 @@ let
        sha256 = "15dkhqvih6rx9dnngfwwljcm9s8afb0nbyl2vdvhd8frnw4y31dz";
      };
      meta = {
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -3179,7 +3179,7 @@ let
      buildInputs = [ TestClass TestClassMost TestDeep TestDifferences TestException TestFatal TestMost TestWarn TestWarnings librelative ];
      meta = {
        description = "Engine for tidyall, your all-in-one code tidier and validator";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -3193,7 +3193,7 @@ let
      propagatedBuildInputs = [ CodeTidyAll TextAligner ];
      meta = {
        description = "TidyAll plugin to sort and align Moose-style attributes";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -3209,7 +3209,7 @@ let
     meta = {
       homepage = "https://github.com/skaji/Command-Runner";
       description = "Run external commands and Perl code refs";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.zakame ];
     };
   };
@@ -3223,7 +3223,7 @@ let
     };
     meta = {
       description = "Implements some sane defaults for Perl programs";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3236,7 +3236,7 @@ let
     };
     meta = {
       description = "Interface to Bzip2 compression library";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3255,7 +3255,7 @@ let
 
     meta = {
       description = "Low-Level Interface to bzip2 compression library";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3281,7 +3281,7 @@ let
     doCheck = !stdenv.isDarwin;
 
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3304,7 +3304,7 @@ let
     propagatedBuildInputs = [ ModulePluggable ];
     meta = {
       description = "Load configuration from different file formats, transparently";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3318,7 +3318,7 @@ let
     propagatedBuildInputs = [ CaptureTiny ];
     meta = {
       description = "A module to implement some of AutoConf macros in pure perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3330,7 +3330,7 @@ let
       sha256 = "1bbg3wp0xcpj04cmm86j1x0j5968jqi5s2c87qs7dgmap1vzk6qa";
     };
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3345,7 +3345,7 @@ let
     propagatedBuildInputs = [ Moo MooXTypesMooseLike ];
     meta = {
       description = "Git-compatible config file parsing";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3359,7 +3359,7 @@ let
     meta = {
       homepage = "https://github.com/schweikert/Config-Grammar";
       description = "A grammar-based, user-friendly config parser";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3374,7 +3374,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Config-INI";
       description = "Simple .ini-file format";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3389,7 +3389,7 @@ let
      buildInputs = [ TestDeep ];
      meta = {
        description = "Load (and optionally decrypt via GnuPG) user/pass identity information ";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/dagolden/Config-Identity";
      };
   };
@@ -3404,8 +3404,8 @@ let
     propagatedBuildInputs = [ IOStringy ];
     meta = {
       description = "A module for reading .ini-style configuration files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
-      maintainers = [ maintainers.limeytexan ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = teams.deshaw.members;
     };
   };
 
@@ -3420,7 +3420,7 @@ let
     propagatedBuildInputs = [ ConfigAny ];
     meta = {
       description = "Load a configuration directory tree containing YAML, JSON, XML, Perl, INI or Config::General files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3435,7 +3435,7 @@ let
     buildInputs = [ TestException YAML ];
     meta = {
       description = "Layered configuration, because configs are like ogres";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3451,7 +3451,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Config-MVP";
       description = "Multivalue-property package-oriented configuration";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3466,7 +3466,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Config-MVP-Reader-INI";
       description = "An MVP config reader for .ini files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3479,7 +3479,7 @@ let
     };
     meta = {
       description = "Read and write property files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3529,7 +3529,7 @@ let
     doCheck = false;
     meta = {
       description = "Simple, versioned access to configuration data";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3549,7 +3549,7 @@ let
     '';
     meta = {
       description = "A generic connection to a hierarchical-structured data set";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3564,7 +3564,7 @@ let
      buildInputs = [ ModuleBuildTiny TestFatal ];
      meta = {
        description = "Facility for creating read-only scalars, arrays, and hashes";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -3577,7 +3577,7 @@ let
     };
     meta = {
       description = "Convert binary octets into ASCII armoured messages";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -3602,7 +3602,7 @@ let
     meta = {
       homepage = "https://metacpan.org/pod/Convert::Base32";
       description = "Encoding and decoding of base32 strings";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -3616,7 +3616,7 @@ let
     };
     meta = {
       description = "Functions for converting to/from bencoded strings";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3631,7 +3631,7 @@ let
     propagatedBuildInputs = [ ListUtilsBy ModulePluggable ];
     meta = {
       description = "Color space conversions and named lookups";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3644,7 +3644,7 @@ let
     };
     meta = {
       description = "Perl module for uuencode and uudecode";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3667,7 +3667,7 @@ let
      };
      meta = {
        description = "Create automatic curried method call closures for any class or object";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -3702,7 +3702,7 @@ let
     meta = {
       homepage = "https://github.com/kazeburo/Cookie-Baker";
       description = "Cookie string generator / parser";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3740,7 +3740,7 @@ let
      buildInputs = [ TestSharedFork TestTCP ];
      meta = {
        description = "Coro based PSGI web server";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -3754,7 +3754,7 @@ let
     propagatedBuildInputs = [ ArchiveZip CPANChecksums CPANPerlReleases Expect FileHomeDir LWP LogLog4perl ModuleBuild TermReadKey YAML YAMLLibYAML YAMLSyck ];
     meta = {
       description = "Query, download and build perl modules from CPAN sites";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3765,16 +3765,16 @@ let
       url = "mirror://cpan/authors/id/R/RJ/RJBS/CPAN-Mini-1.111016.tar.gz";
       sha256 = "5a297afc3e367ad80811464d4eb7e4dd3caff8ba499cdd2b558f6279443a7657";
     };
-    nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin shortenPerlShebang;
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
     propagatedBuildInputs = [ FileHomeDir LWPProtocolHttps ];
-    postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    postInstall = lib.optionalString stdenv.isDarwin ''
       shortenPerlShebang $out/bin/minicpan
     '';
 
     meta = {
       homepage = "https://github.com/rjbs/CPAN-Mini";
       description = "Create a minimal mirror of CPAN";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -3788,7 +3788,7 @@ let
     };
     meta = {
       description = "CPanel fork of JSON::XS, fast and correct serializing";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3801,7 +3801,7 @@ let
     };
     meta = {
       description = "Read and write Changes files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3814,7 +3814,7 @@ let
     };
     propagatedBuildInputs = [ CompressBzip2 DataCompare ModuleSignature ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3830,7 +3830,7 @@ let
     meta = {
       homepage = "https://github.com/Perl-Toolchain-Gang/CPAN-Common-Index";
       description = "Common library for searching CPAN modules, authors and distributions";
-      license = stdenv.lib.licenses.asl20;
+      license = lib.licenses.asl20;
     };
   };
 
@@ -3843,7 +3843,7 @@ let
      };
      meta = {
        description = "Extract distribution name and version from a distribution filename";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -3857,7 +3857,7 @@ let
     buildInputs = [ TestDeep ];
     meta = {
       description = "Verify requirements in a CPAN::Meta object";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3871,7 +3871,7 @@ let
     meta = {
       homepage = "https://github.com/bingos/cpan-perl-releases";
       description = "Mapping Perl releases on CPAN to the location of the tarballs";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3886,7 +3886,7 @@ let
     meta = {
       homepage = "https://github.com/jib/cpanplus-devel";
       description = "Ameliorated interface to the CPAN";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3901,7 +3901,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/cpan-uploader";
       description = "Upload things to the CPAN";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3923,7 +3923,7 @@ let
     };
     meta = {
       description = "CAST5 block cipher in pure Perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -3952,7 +3952,7 @@ let
     ];
     meta = {
       description = "Generate shared secret using elliptic-curve Diffie-Hellman function";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -3975,7 +3975,7 @@ let
     propagatedBuildInputs = [ CryptDES ];
     meta = {
       description = "Triple-DES EDE encryption/decryption";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -4012,7 +4012,7 @@ let
     propagatedBuildInputs = [ DataBuffer DigestSHA1 FileWhich ];
     meta = {
       description = "DSA Signatures and Key Generation";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -4024,9 +4024,9 @@ let
       url = "mirror://cpan/authors/id/A/AP/APPEL/Crypt-ECB-2.22.tar.gz";
       sha256 = "f5af62e908cd31a34b2b813135a0718016fd003ffa0021ffbdd84c50158267aa";
     };
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "Use block ciphers using ECB mode";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4038,7 +4038,7 @@ let
       sha256 = "3cc7126d5841107237a9be2dc5c7fbc167cf3c4b4ce34678a8448b850757014c";
     };
     propagatedBuildInputs = [ ClassMix ];
-    perlPreHook = stdenv.lib.optionalString (stdenv.isi686 || stdenv.isDarwin) "export LD=$CC";
+    perlPreHook = lib.optionalString (stdenv.isi686 || stdenv.isDarwin) "export LD=$CC";
   };
 
   CryptFormat = buildPerlPackage {
@@ -4051,7 +4051,7 @@ let
     buildInputs = [ TestException TestFailWarnings ];
     meta = {
       description = "Conversion utilities for encryption applications";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -4075,7 +4075,7 @@ let
     propagatedBuildInputs = [ CryptX JSON ];
     meta = {
       description = "JSON Web Token";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4098,7 +4098,7 @@ let
     buildInputs = [ pkgs.unzip ModuleBuildTiny ];
     propagatedBuildInputs = [ ConvertASN1 ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4113,7 +4113,7 @@ let
     meta = {
       homepage = "https://github.com/danaj/Crypt-Random-Seed";
       description = "Provide strong randomness for seeding";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -4128,7 +4128,7 @@ let
     propagatedBuildInputs = [ ClassLoader MathPari StatisticsChiSquare ];
     meta = {
       description = "Interface to /dev/random and /dev/urandom";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4143,7 +4143,7 @@ let
     propagatedBuildInputs = [ CaptureTiny ModuleFind Moo SubExporter TypeTiny namespaceclean ];
     meta = {
       description = "Get weak or strong random data from pluggable sources";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4157,7 +4157,7 @@ let
     meta = {
       homepage = "https://github.com/danaj/Crypt-Random-TESHA2";
       description = "Random numbers using timer/schedule entropy, aka userspace voodoo entropy";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4189,7 +4189,7 @@ let
     meta = {
       homepage = "https://wiki.github.com/toddr/Crypt-RIPEMD160";
       description = "Perl extension for the RIPEMD-160 Hash function";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -4202,7 +4202,7 @@ let
       sha256 = "93ebdfaaefcfe9ab683f0121c85f24475d8197f0bcec46018219e4111434dde3";
     };
     propagatedBuildInputs = [ DigestSHA1 ];
-    perlPreHook = stdenv.lib.optionalString (stdenv.isi686 || stdenv.isDarwin) "export LD=$CC";
+    perlPreHook = lib.optionalString (stdenv.isi686 || stdenv.isDarwin) "export LD=$CC";
   };
 
   CryptRijndael = buildPerlPackage {
@@ -4232,7 +4232,7 @@ let
     };
     meta = {
       description = "Provide non blocking randomness";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -4248,7 +4248,7 @@ let
     perlPreHook = "export LD=$CC";
     meta = {
       description = "Scrypt password based key derivation function";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       homepage = "https://github.com/DCIT/perl-Crypt-ScryptKDF";
       maintainers = [ maintainers.sgo ];
     };
@@ -4275,7 +4275,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/Crypt-Sodium";
       description = "Perl bindings for libsodium (NaCL)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -4289,7 +4289,7 @@ let
     };
     meta = {
       description = "The Twofish Encryption Algorithm";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -4308,15 +4308,15 @@ let
     buildInputs = [ TestException ];
     propagatedBuildInputs = [ AltCryptRSABigInt CryptCAST5_PP CryptDES_EDE3 CryptDSA CryptIDEA CryptRIPEMD160 CryptRijndael CryptTwofish FileHomeDir LWP ];
 
-    nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin shortenPerlShebang;
-    postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    postInstall = lib.optionalString stdenv.isDarwin ''
       shortenPerlShebang $out/bin/pgplet
     '';
 
     meta = {
       homepage = "https://github.com/btrott/Crypt-OpenPGP";
       description = "Pure-Perl OpenPGP implementation";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
     doCheck = false; /* test fails with 'No random source available!' */
@@ -4331,7 +4331,7 @@ let
     };
     NIX_CFLAGS_COMPILE = "-I${pkgs.openssl.dev}/include";
     NIX_CFLAGS_LINK = "-L${pkgs.openssl.out}/lib -lcrypto";
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "Perl wrapper around OpenSSL's AES library";
       license = with licenses; [ artistic1 gpl1Plus ];
     };
@@ -4357,7 +4357,7 @@ let
      };
      meta = {
        description = "Guess OpenSSL include path";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/akiym/Crypt-OpenSSL-Guess";
      };
   };
@@ -4399,7 +4399,7 @@ let
     meta = {
       homepage = "https://github.com/dsully/perl-crypt-openssl-x509";
       description = "Perl extension to OpenSSL's X509 API";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -4416,7 +4416,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/Crypt-PBKDF2";
       description = "The PBKDF2 password hash algorithm";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -4433,7 +4433,7 @@ let
     propagatedBuildInputs = [ BytesRandomSecureTiny ClassAccessor ConvertASN1 CryptFormat MathProvablePrime SymbolGet TryTiny ];
     meta = {
       description = "Cryptography in pure Perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -4450,7 +4450,7 @@ let
 
     meta = {
       description = "Minimal Ed25519 bindings";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = [ maintainers.thoughtpolice ];
     };
     buildInputs = [ CanaryStability ];
@@ -4486,10 +4486,10 @@ let
       url = "mirror://cpan/authors/id/G/GT/GTERMARS/CSS-Minifier-XS-0.09.tar.gz";
       sha256 = "1myswrmh0sqp5xjpp03x45z8arfmgkjx0srl3r6kjsyzl1zrk9l8";
     };
-    perlPreHook = stdenv.lib.optionalString (stdenv.isi686 || stdenv.isDarwin) "export LD=$CC";
+    perlPreHook = lib.optionalString (stdenv.isi686 || stdenv.isDarwin) "export LD=$CC";
     meta = {
       description = "XS based CSS minifier";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4518,7 +4518,7 @@ let
     NIX_CFLAGS_LINK = "-lncurses";
     meta = {
       description = "Perl bindings to ncurses";
-      license = stdenv.lib.licenses.artistic1;
+      license = lib.licenses.artistic1;
     };
   };
 
@@ -4531,7 +4531,7 @@ let
     };
     meta = {
       description = "curses based OO user interface framework";
-      license = stdenv.lib.licenses.artistic1;
+      license = lib.licenses.artistic1;
     };
     propagatedBuildInputs = [ Curses TermReadKey ];
   };
@@ -4545,7 +4545,7 @@ let
     };
     meta = {
       description = "Crypto toolkit";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4558,7 +4558,7 @@ let
     };
     meta = {
       description = "Temporary changing working directory (chdir)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestRequires ];
   };
@@ -4573,7 +4573,7 @@ let
     buildInputs = [ TestRequires ];
     meta = {
       description = "Polymorphic data cloning";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4596,7 +4596,7 @@ let
     };
     meta = {
       description = "Pretty printing of data structures";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4609,7 +4609,7 @@ let
     };
     meta = {
       description = "Less indentation and newlines plus sub deparsing";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4642,7 +4642,7 @@ let
     propagatedBuildInputs = [ DateCalc EmailValid FileMMagic ImageSize MIMETypes RegexpCommon ];
     meta = {
       description = "Validates user input (usually from an HTML form) based on input profile";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ CGI ];
   };
@@ -4658,7 +4658,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Data-GUID";
       description = "Globally unique identifiers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4684,7 +4684,7 @@ let
     };
     meta = {
       description = "Make binary data human-readable";
-      license = with stdenv.lib.licenses; [ artistic1 gpl2 ];
+      license = with lib.licenses; [ artistic1 gpl2 ];
     };
   };
 
@@ -4709,7 +4709,7 @@ let
     propagatedBuildInputs = [ ClassReturnValue TextvFileasData ];
     meta = {
       description = "Generates iCalendar (RFC 2445) calendar files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4723,7 +4723,7 @@ let
     buildInputs = [ TestBits ];
     meta = {
       description = "Pack and unpack big-endian IEEE754 floats and doubles";
-      license = with stdenv.lib.licenses; [ artistic2 ];
+      license = with lib.licenses; [ artistic2 ];
     };
   };
 
@@ -4747,7 +4747,7 @@ let
     meta = {
       homepage = "https://github.com/msgpack/msgpack-perl";
       description = "MessagePack serializing/deserializing";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -4763,7 +4763,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/data-optlist";
       description = "Parse and validate simple name/value option pairs";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4788,7 +4788,7 @@ let
     buildInputs = [ ClassAccessor DataPage TestException ];
     meta = {
       description = "change long page list to be shorter and well navigate";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4813,7 +4813,7 @@ let
     meta = {
       homepage = "https://github.com/mattp-/Data-Perl";
       description = "Base classes wrapping fundamental Perl data types";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4827,7 +4827,7 @@ let
     propagatedBuildInputs = [ ClonePP FileHomeDir PackageStash SortNaturally ];
     meta = {
       description = "colored pretty-print of Perl data structures and objects";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4842,7 +4842,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/data-section";
       description = "Read multiple hunks of data out of your DATA section";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestFailWarnings ];
   };
@@ -4856,7 +4856,7 @@ let
     };
     meta = {
       description = "Modules that serialize data structures";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4870,7 +4870,7 @@ let
     buildInputs = [ TestDeep ];
     propagatedBuildInputs = [ ClassAccessor ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4883,7 +4883,7 @@ let
     };
     propagatedBuildInputs = [ DataPage MathRound ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4898,7 +4898,7 @@ let
     propagatedBuildInputs = [ Moose PathClass namespaceclean ];
     meta = {
       description = "N at a time iteration API";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4912,7 +4912,7 @@ let
     buildInputs = [ TestPod ];
     meta = {
       description = "Change nature of data within a structure";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4937,7 +4937,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/Data-ULID";
       description = "Universally Unique Lexicographically Sortable Identifier";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = with maintainers; [ sgo ];
     };
   };
@@ -4959,10 +4959,10 @@ let
       sha256 = "1x662pqjg9p0wcigi7pwf969b2ymk66ncm2vd5dfm5i08pdkjpf3";
     };
     buildInputs = [ HashUtilFieldHashCompat ModuleBuildXSUtil ScopeGuard TestException ];
-    perlPreHook = stdenv.lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
+    perlPreHook = lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
     meta = {
       description = "A selection of utilities for data and data types";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       homepage = "https://github.com/gfx/Perl-Data-Util";
     };
   };
@@ -4975,7 +4975,7 @@ let
       sha256 = "51c9efbf8423853616eaa24841e4d1996b2db0036900617fb1dbc76c75a1f360";
     };
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -4999,7 +4999,7 @@ let
     propagatedBuildInputs = [ MathRandomMTAuto ];
     meta = {
       description = "Fast random UUID generator using the Mersenne Twister algorithm";
-      license = stdenv.lib.licenses.asl20;
+      license = lib.licenses.asl20;
     };
   };
 
@@ -5014,7 +5014,7 @@ let
     propagatedBuildInputs = [ NetDomainTLD ];
     meta = {
       description = "Domain and host name validation";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5029,7 +5029,7 @@ let
     propagatedBuildInputs = [ NetAddrIP ];
     meta = {
       description = "IPv4 and IPv6 validation methods";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5043,7 +5043,7 @@ let
     propagatedBuildInputs = [ DataValidateDomain DataValidateIP ];
     meta = {
       description = "Common URL validation methods";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5106,7 +5106,7 @@ let
       sha256 = "29a1926314ce1681a312d6155c29590c771ddacf91b7485873ce449ef209dd04";
     };
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl2Plus ];
+      license = with lib.licenses; [ artistic1 gpl2Plus ];
     };
   };
 
@@ -5121,7 +5121,7 @@ let
     propagatedBuildInputs = [ DateTimeLocale DateTimeTimeZone ];
     meta = {
       description = "A date and time object";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -5134,7 +5134,7 @@ let
     };
     meta = {
       description = "Dates in the Julian calendar";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
     propagatedBuildInputs = [ DateTime ];
   };
@@ -5149,7 +5149,7 @@ let
     propagatedBuildInputs = [ DateTimeEventRecurrence ];
     meta = {
       description = "DateTime rfc2445 recurrences";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5173,7 +5173,7 @@ let
     propagatedBuildInputs = [ DateTimeFormatStrptime ParamsValidate ];
     meta = {
       description = "Create DateTime parser classes and objects";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -5187,7 +5187,7 @@ let
     propagatedBuildInputs = [ DateTime TimeDate ];
     meta = {
       description = "Parses Date::Parse compatible formats";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5201,7 +5201,7 @@ let
     propagatedBuildInputs = [ DateTimeFormatBuilder ListMoreUtils ModulePluggable ];
     meta = {
       description = "Flexibly parse strings and turn them into DateTime objects";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestException TestMockTime TestNoWarnings ];
   };
@@ -5216,7 +5216,7 @@ let
     propagatedBuildInputs = [ DateTime HTTPDate ];
     meta = {
       description = "Date conversion routines";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5230,7 +5230,7 @@ let
     propagatedBuildInputs = [ DateTimeEventICal ];
     meta = {
       description = "Parse and format iCal datetime and duration strings";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5244,7 +5244,7 @@ let
     propagatedBuildInputs = [ DateTimeFormatBuilder ];
     meta = {
       description = "Parses ISO8601 formats";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ Test2Suite ];
   };
@@ -5259,7 +5259,7 @@ let
     propagatedBuildInputs = [ DateTime ParamsValidate ];
     meta = {
       description = "Convert between DateTime and RFC2822/822 formats";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5274,7 +5274,7 @@ let
     propagatedBuildInputs = [ Clone DateTime ListMoreUtils ParamsValidate boolean ];
     meta = {
       description = "Create machine readable date/time with natural parsing logic";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5288,7 +5288,7 @@ let
     propagatedBuildInputs = [ DateTimeFormatBuilder ];
     meta = {
       description = "Parse and format MySQL dates and times";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5302,7 +5302,7 @@ let
     propagatedBuildInputs = [ DateTimeFormatBuilder ];
     meta = {
       description = "Parse and format PostgreSQL dates and times";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ ModuleBuildTiny ];
   };
@@ -5318,7 +5318,7 @@ let
     propagatedBuildInputs = [ DateTime ];
     meta = {
       description = "Parse and format strp and strf time patterns";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -5332,7 +5332,7 @@ let
     propagatedBuildInputs = [ DateTimeFormatBuilder ];
     meta = {
       description = "Parse and format SQLite dates and times";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5346,7 +5346,7 @@ let
     propagatedBuildInputs = [ DateTime ];
     meta = {
       description = "Parse and format W3CDTF datetime strings";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5361,7 +5361,7 @@ let
     propagatedBuildInputs = [ FileShareDir ParamsValidationCompiler Specio namespaceautoclean ];
     meta = {
       description = "Localization support for DateTime.pm";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5375,7 +5375,7 @@ let
     propagatedBuildInputs = [ DateTime ParamsValidate SetInfinite ];
     meta = {
       description = "DateTime set objects";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5390,7 +5390,7 @@ let
     propagatedBuildInputs = [ ClassSingleton ParamsValidationCompiler Specio namespaceautoclean ];
     meta = {
       description = "Time zone object base class and factory";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5406,7 +5406,7 @@ let
     doCheck = false;
     meta = {
       description = "Parse a date/time string using the best method available";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5420,7 +5420,7 @@ let
     propagatedBuildInputs = [ ClassISA DevelStackTrace StringUtil TermReadKey TextTabularDisplay TieIxHash ];
     meta = {
       description = "A collection of handy debugging routines for displaying the values of variables with a minimum of coding";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5434,7 +5434,7 @@ let
     propagatedBuildInputs = [ PadWalker ];
     meta = {
       description = "Meatier versions of C<caller>";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5447,7 +5447,7 @@ let
      };
      meta = {
        description = "check that a command is available";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/tokuhirom/Devel-CheckBin";
      };
   };
@@ -5462,7 +5462,7 @@ let
      buildInputs = [ ModuleBuildTiny ];
      meta = {
        description = "Check the compiler's availability";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/tokuhirom/Devel-CheckCompiler";
      };
   };
@@ -5497,7 +5497,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/Devel-Leak";
       description = "Utility for looking for perl objects that are not reclaimed";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ]; # According to Debian
+      license = with lib.licenses; [ artistic1 gpl1Plus ]; # According to Debian
     };
   };
 
@@ -5512,7 +5512,7 @@ let
     meta = {
       homepage = "https://github.com/bingos/devel-patchperl";
       description = "Patch perl source a la Devel::PPPort's buildperl.pl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5526,7 +5526,7 @@ let
     buildInputs = [ TestFatal ];
     meta = {
       description = "obtain the REFCNT value of a referent";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5539,7 +5539,7 @@ let
     };
     meta = {
       description = "Perl/Pollution/Portability";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5552,7 +5552,7 @@ let
     };
     meta = {
       description = "Print out each line before it is executed (like sh -x)";
-      license = stdenv.lib.licenses.publicDomain;
+      license = lib.licenses.publicDomain;
     };
   };
 
@@ -5567,7 +5567,7 @@ let
     propagatedBuildInputs = [ DeviceOUI Moose ];
     meta = {
       description = "Handle hardware MAC Addresses (EUI-48 and EUI-64)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -5584,7 +5584,7 @@ let
     propagatedBuildInputs = [ ClassAccessorGrouped LWP SubExporter ];
     meta = {
       description = "Resolve an Organizationally Unique Identifier";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -5636,7 +5636,7 @@ let
 
     preCheck = "rm t/65_db_config.t"; # do not run failing tests
 
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "Self Contained SQLite RDBMS in a DBI Driver";
       license = with licenses; [ artistic1 gpl1Plus ];
       platforms = platforms.unix;
@@ -5655,7 +5655,7 @@ let
     meta = {
       homepage = "https://github.com/gooddata/DBD-MariaDB";
       description = "MariaDB and MySQL driver for the Perl5 Database Interface (DBI)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -5691,7 +5691,7 @@ let
     buildInputs = [ pkgs.oracle-instantclient TestNoWarnings ];
     propagatedBuildInputs = [ DBI ];
 
-    postBuild = stdenv.lib.optionalString stdenv.isDarwin ''
+    postBuild = lib.optionalString stdenv.isDarwin ''
       install_name_tool -add_rpath "${pkgs.oracle-instantclient.lib}/lib" blib/arch/auto/DBD/Oracle/Oracle.bundle
     '';
   };
@@ -5715,8 +5715,8 @@ let
 
     meta = {
       description = "DBI PostgreSQL interface";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
-      platforms = stdenv.lib.platforms.unix;
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      platforms = lib.platforms.unix;
     };
   };
 
@@ -5763,7 +5763,7 @@ let
       url = "mirror://cpan/authors/id/T/TI/TIMB/DBI-1.643.tar.gz";
       sha256 = "8a2b993db560a2c373c174ee976a51027dd780ec766ae17620c20393d2e836fa";
     };
-    postInstall = stdenv.lib.optionalString (perl ? crossVersion) ''
+    postInstall = lib.optionalString (perl ? crossVersion) ''
       mkdir -p $out/${perl.libPrefix}/cross_perl/${perl.version}/DBI
       cat > $out/${perl.libPrefix}/cross_perl/${perl.version}/DBI.pm <<EOF
       package DBI;
@@ -5804,7 +5804,7 @@ let
     meta = {
       homepage = "https://dbi.perl.org/";
       description = "Database independent interface for Perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5820,7 +5820,7 @@ let
     meta = {
       homepage = "https://metacpan.org/pod/DBICx::TestDatabase";
       description = "Create a temporary database from a DBIx::Class::Schema";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -5837,7 +5837,7 @@ let
     meta = {
       homepage = "https://metacpan.org/pod/DBIx::Class";
       description = "Extensible and flexible object <-> relational mapper";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5853,7 +5853,7 @@ let
     meta = {
       homepage = "https://github.com/frioux/DBIx-Class-Candy";
       description = "Sugar for your favorite ORM, DBIx::Class";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5868,7 +5868,7 @@ let
     propagatedBuildInputs = [ CarpClan DBIxClass ];
     meta = {
       description = "Cursor class with built-in caching support";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5884,7 +5884,7 @@ let
     meta = {
       homepage = "https://metacpan.org/pod/DBIx::Class::DynamicDefault";
       description = "Automatically set and update fields";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -5911,7 +5911,7 @@ let
     meta = {
       homepage = "https://github.com/frioux/DBIx-Class-Helpers";
       description = "Simplify the common case stuff for DBIx::Class";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5927,7 +5927,7 @@ let
     meta = {
       homepage = "https://metacpan.org/pod/DBIx::Class::InflateColumn::Serializer";
       description = "Inflators to serialize data structures for DBIx::Class";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -5942,7 +5942,7 @@ let
     propagatedBuildInputs = [ DBIxClass ];
     meta = {
       description = "Introspect many-to-many relationships";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5957,7 +5957,7 @@ let
     propagatedBuildInputs = [ CarpClan ClassUnload DBIxClass DataDump StringToIdentifierEN curry ];
     meta = {
       description = "Create a DBIx::Class::Schema based on a database";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5972,7 +5972,7 @@ let
     propagatedBuildInputs = [ DBI ];
     meta = {
       description = "Fast, safe DBI connection and transaction management";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -5997,7 +5997,7 @@ let
     propagatedBuildInputs = [ CacheSimpleTimedExpiry ClassAccessor ClassReturnValue Clone DBIxDBSchema Want capitalization ];
     meta = {
       description = "Encapsulate SQL queries and rows in simple perl objects";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6023,7 +6023,7 @@ let
     };
     meta = {
       description = "Simple detection of binary versus text in strings";
-      license = with stdenv.lib.licenses; [ artistic2 ];
+      license = with lib.licenses; [ artistic2 ];
     };
   };
 
@@ -6036,7 +6036,7 @@ let
     };
     meta = {
       description = "Read/write buffer class";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -6076,7 +6076,7 @@ let
     propagatedBuildInputs = [ BHooksEndOfScope BHooksOPCheck SubName ];
     meta = {
       description = "Adding keywords to perl, in perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6089,7 +6089,7 @@ let
     };
     meta = {
       description = "Find the path to your perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6102,7 +6102,7 @@ let
     };
     propagatedBuildInputs = [ SubExporterProgressive ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6115,7 +6115,7 @@ let
      };
      meta = {
        description = "Detect perl's global phase on older perls.";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -6139,7 +6139,7 @@ let
     meta = {
       homepage = "https://github.com/timbunce/devel-nytprof";
       description = "Powerful fast feature-rich Perl source code profiler";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestDifferences ];
   };
@@ -6155,7 +6155,7 @@ let
      buildInputs = [ TestFatal ];
      meta = {
        description = "introspect overloaded operators";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -6179,7 +6179,7 @@ let
     };
     meta = {
       description = "An object representing a stack trace";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -6193,7 +6193,7 @@ let
     propagatedBuildInputs = [ DevelStackTrace ];
     meta = {
       description = "Displays stack trace in HTML";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6206,7 +6206,7 @@ let
     };
     meta = {
       description = "Dump symbol names or the symbol table";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6219,7 +6219,7 @@ let
     };
     meta = {
       description = "Module that calculates CRC sums of all sorts";
-      license = stdenv.lib.licenses.publicDomain;
+      license = lib.licenses.publicDomain;
     };
   };
 
@@ -6232,7 +6232,7 @@ let
     };
     meta = {
       description = "Keyed-Hashing for Message Authentication";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6245,7 +6245,7 @@ let
     };
     meta = {
       description = "Perl extension for 32 bit Jenkins Hashing Algorithm";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -6258,7 +6258,7 @@ let
     };
     meta = {
       description = "Perl interface to the MD2 Algorithm";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -6294,7 +6294,7 @@ let
     };
     meta = {
       description = "Perl Implementation of Rivest's MD5 algorithm";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6307,7 +6307,7 @@ let
     };
     meta = {
       description = "Perl interface to the SHA-1 algorithm";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6321,7 +6321,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/Digest-SHA3";
       description = "Perl extension for SHA-3";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -6336,7 +6336,7 @@ let
     propagatedBuildInputs = [ Moo PathTiny ];
     meta = {
       description = "treat a directory and a manifest file as a hash/dictionary of keys to texts or blobs";
-      license = with stdenv.lib.licenses; [ mit ];
+      license = with lib.licenses; [ mit ];
     };
   };
 
@@ -6350,7 +6350,7 @@ let
     meta = {
       homepage = "https://github.com/mauke/Dir-Self";
       description = "A __DIR__ constant for the directory your source file is in";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6364,7 +6364,7 @@ let
     propagatedBuildInputs = [ ExporterTiny ];
     meta = {
       description = "dispatch on the type (class) of an argument";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6379,7 +6379,7 @@ let
     propagatedBuildInputs = [ ModuleRuntime ];
     meta = {
       description = "Declare version conflicts for your dist";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6395,7 +6395,7 @@ let
     meta = {
       homepage = "http://dzil.org/";
       description = "Distribution builder; installer not included!";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     doCheck = false;
   };
@@ -6411,7 +6411,7 @@ let
     propagatedBuildInputs = [ DistZillaPluginMojibakeTests DistZillaPluginTestCPANChanges DistZillaPluginTestCPANMetaJSON DistZillaPluginTestCompile DistZillaPluginTestDistManifest DistZillaPluginTestEOL DistZillaPluginTestKwalitee DistZillaPluginTestMinimumVersion DistZillaPluginTestNoTabs DistZillaPluginTestPerlCritic DistZillaPluginTestPodLinkCheck DistZillaPluginTestPortability DistZillaPluginTestSynopsis DistZillaPluginTestUnusedVars DistZillaPluginTestVersion PodCoverageTrustPod ];
     meta = {
       description = "Test your dist with every testing plugin conceivable";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     doCheck = false; /* fails with 'open3: exec of .. perl .. failed: Argument list too long at .../TAP/Parser/Iterator/Process.pm line 165.' */
   };
@@ -6426,7 +6426,7 @@ let
     propagatedBuildInputs = [ DistZilla ];
     meta = {
       description = "Dist::Zilla with Changes check";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ PathClass PodCoverage PodCoverageTrustPod PodMarkdown TestDeep TestException TestPod TestPodCoverage ];
   };
@@ -6442,7 +6442,7 @@ let
     meta = {
       homepage = "https://github.com/creaktive/Dist-Zilla-Plugin-MojibakeTests";
       description = "Release tests for source encoding";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestMojibake ];
   };
@@ -6458,7 +6458,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Dist-Zilla-Plugin-PodWeaver";
       description = "Weave your Pod together from configuration and Dist::Zilla";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6474,7 +6474,7 @@ let
     meta = {
       homepage = "https://github.com/DarwinAwardWinner/Dist-Zilla-Plugin-ReadmeAnyFromPod";
       description = "Automatically convert POD to a README in any format for Dist::Zilla";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6490,7 +6490,7 @@ let
     meta = {
       homepage = "https://github.com/DarwinAwardWinner/Dist-Zilla-Plugin-ReadmeMarkdownFromPod";
       description = "Automatically convert POD to a README.mkdn for Dist::Zilla";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6505,7 +6505,7 @@ let
     propagatedBuildInputs = [ DistZilla ];
     meta = {
       description = "Release tests for your changelog";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6521,7 +6521,7 @@ let
     meta = {
       homepage = "http://p3rl.org/Dist::Zilla::Plugin::Test::CPAN::Meta::JSON";
       description = "Release tests for your META.json";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6537,7 +6537,7 @@ let
     meta = {
       homepage = "https://github.com/karenetheridge/Dist-Zilla-Plugin-Test-Compile";
       description = "Common tests to check syntax of your modules, only using core modules";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6552,7 +6552,7 @@ let
     propagatedBuildInputs = [ DistZilla ];
     meta = {
       description = "Release tests for the manifest";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6567,7 +6567,7 @@ let
     propagatedBuildInputs = [ DistZilla ];
     meta = {
       description = "Author tests making sure correct line endings are used";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -6582,7 +6582,7 @@ let
     propagatedBuildInputs = [ DistZilla ];
     meta = {
       description = "Release tests for kwalitee";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6597,7 +6597,7 @@ let
     propagatedBuildInputs = [ DistZilla ];
     meta = {
       description = "Release tests for minimum required versions";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6612,7 +6612,7 @@ let
      buildInputs = [ ModuleBuildTiny TestDeep TestNoTabs TestRequires ];
      meta = {
        description = "Author tests that ensure hard tabs are not used";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/karenetheridge/Dist-Zilla-Plugin-Test-NoTabs";
      };
   };
@@ -6628,7 +6628,7 @@ let
     propagatedBuildInputs = [ DistZilla ];
     meta = {
       description = "Tests to check your code against best practices";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6644,7 +6644,7 @@ let
     meta = {
       homepage = "https://github.com/rwstauner/Dist-Zilla-Plugin-Test-Pod-LinkCheck";
       description = "Add release tests for POD links";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestPodLinkCheck ];
   };
@@ -6660,7 +6660,7 @@ let
     propagatedBuildInputs = [ DistZilla ];
     meta = {
       description = "Release tests for portability";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6675,7 +6675,7 @@ let
     propagatedBuildInputs = [ DistZilla ];
     meta = {
       description = "Release tests for synopses";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6690,7 +6690,7 @@ let
     propagatedBuildInputs = [ DistZilla ];
     meta = {
       description = "Release tests for unused variables";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6705,7 +6705,7 @@ let
     propagatedBuildInputs = [ DistZilla ];
     meta = {
       description = "Release Test::Version tests";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -6720,7 +6720,7 @@ let
      buildInputs = [ ModuleBuildTiny TestDeep TestFatal ];
      meta = {
        description = "Receive notification when something changes a file's contents";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/karenetheridge/Dist-Zilla-Role-FileWatcher";
      };
   };
@@ -6736,7 +6736,7 @@ let
     propagatedBuildInputs = [ PathTiny ];
     meta = {
       description = "Support for C<dotenv> in Perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6750,7 +6750,7 @@ let
     propagatedBuildInputs = [ CaptureTiny ClassXSAccessor DevelCheckOS NumberWithError StatisticsCaseResampling ];
     meta = {
       description = "More reliable benchmarking with the least amount of thinking";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       homepage = "https://github.com/briandfoy/dumbbench";
     };
   };
@@ -6766,7 +6766,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Email-Abstract";
       description = "Unified interface to mail representations";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6779,7 +6779,7 @@ let
     };
     meta = {
       description = "RFC 2822 Address Parsing";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6794,7 +6794,7 @@ let
     propagatedBuildInputs = [ EmailAddress ];
     meta = {
       description = "RFC close address list parsing";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6807,7 +6807,7 @@ let
      };
      meta = {
        description = "Parse and format RFC 2822 email addresses and groups";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -6821,7 +6821,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Email-Date-Format";
       description = "Produce RFC 2822 date strings";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6835,7 +6835,7 @@ let
     propagatedBuildInputs = [ EmailAbstract EmailAddress EmailMIME ];
     meta = {
       description = "Reply to an email message";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6848,7 +6848,7 @@ let
     };
     meta = {
       description = "Generate world unique message-ids";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6863,7 +6863,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Email-MIME";
       description = "Easy MIME message handling";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6879,7 +6879,7 @@ let
     };
     meta = {
         description = "Strip the attachments from an email";
-        license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+        license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6893,7 +6893,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Email-MIME-ContentType";
       description = "Parse a MIME Content-Type Header";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ TextUnidecode ];
   };
@@ -6909,7 +6909,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Email-MIME-Encodings";
       description = "A unified interface to MIME encoding and decoding";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6924,7 +6924,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Email-Send";
       description = "Simply Sending Email";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ MIMETools MailTools ];
   };
@@ -6938,10 +6938,10 @@ let
     };
     propagatedBuildInputs = [ EmailMIME EmailSender IOAll IOString OLEStorage_Lite ];
     preCheck = "rm t/internals.t t/plain_jpeg_attached.t"; # these tests expect EmailMIME version 1.946 and fail with 1.949 (the output difference in benign)
-    meta = with stdenv.lib; {
+    meta = with lib; {
       homepage = "https://www.matijs.net/software/msgconv/";
       description = "A .MSG to mbox converter";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = with maintainers; [ peterhoeg ];
     };
   };
@@ -6955,17 +6955,17 @@ let
     };
     buildInputs = [ CaptureTiny ];
     propagatedBuildInputs = [ EmailAbstract EmailAddress MooXTypesMooseLike SubExporter Throwable TryTiny ];
-    nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin shortenPerlShebang;
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
     postPatch = ''
       patchShebangs --build util
     '';
-    preCheck = stdenv.lib.optionalString stdenv.isDarwin ''
+    preCheck = lib.optionalString stdenv.isDarwin ''
       shortenPerlShebang util/sendmail
     '';
     meta = {
       homepage = "https://github.com/rjbs/Email-Sender";
       description = "A library for sending email";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6980,7 +6980,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Email-Simple";
       description = "Simple parsing of RFC2822 message format and headers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7004,7 +7004,7 @@ let
     };
     propagatedBuildInputs = [ EmailValid ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7017,7 +7017,7 @@ let
     };
     meta = {
       description = "Character encodings in Perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7033,7 +7033,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/Encode-Base32-GMP";
       description = "High speed Base32 encoding using GMP with BigInt and MD5 support";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
       maintainers = with maintainers; [ sgo ];
     };
   };
@@ -7048,7 +7048,7 @@ let
     nativeBuildInputs = [ pkgs.ld-is-cc-hook ];
     meta = {
       description = "An Encode::Encoding subclass that detects the encoding of data";
-      license = stdenv.lib.licenses.free;
+      license = lib.licenses.free;
     };
   };
 
@@ -7063,7 +7063,7 @@ let
     outputs = [ "out" ];
     meta = {
       description = "EucJP-ascii - An eucJP-open mapping";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7076,7 +7076,7 @@ let
     };
     meta = {
       description = "Extra sets of Chinese encodings";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -7106,7 +7106,7 @@ let
     '' else null;
     meta = {
       description = "Determine the locale encoding";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7119,7 +7119,7 @@ let
      };
      meta = {
        description = "Normalize line ending sequences";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/neilb/Encode-Newlines";
      };
   };
@@ -7132,7 +7132,7 @@ let
       sha256 = "d2f36b5015f1e35f640159867b60bf5d5cd66b56cd5e42d33f531be68e5eee35";
     };
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7145,7 +7145,7 @@ let
     };
     meta = {
       description = "Perl module that imports environment variables as scalars or arrays";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7167,7 +7167,7 @@ let
     };
     meta = {
       description = "Lexically scoped sanctification of %ENV";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       homepage = "https://github.com/bingos/env-sanctify";
     };
   };
@@ -7191,7 +7191,7 @@ let
     buildInputs = [ CanaryStability ];
     propagatedBuildInputs = [ commonsense ];
     meta = {
-      license = stdenv.lib.licenses.gpl1Plus;
+      license = lib.licenses.gpl1Plus;
     };
   };
 
@@ -7205,7 +7205,7 @@ let
     buildInputs = [ TestFatal TestRequires ];
     meta = {
       description = "Safely and cleanly create closures via string eval";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7219,7 +7219,7 @@ let
     buildInputs = [ TestUnitLite ];
     meta = {
       description = "Lightweight exceptions";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7267,7 +7267,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/Exporter-Declare";
       description = "Exporting done right";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7279,7 +7279,7 @@ let
       sha256 = "1hns15imih8z2h6zv3m1wwmv9fiysacsb52y94v6zf2cmw4kjny0";
     };
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7292,7 +7292,7 @@ let
     };
     meta = {
       description = "An exporter with the features of Sub::Exporter but only core dependencies";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7305,7 +7305,7 @@ let
     };
     meta = {
       description = "Compile and link C code for Perl modules";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       homepage = "https://metacpan.org/release/ExtUtils-CBuilder";
     };
   };
@@ -7320,7 +7320,7 @@ let
     propagatedBuildInputs = [ IOTty ];
     meta = {
       description = "Automate interactions with command line programs that expose a text terminal interface";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7334,7 +7334,7 @@ let
     propagatedBuildInputs = [ Expect ];
     meta = {
       description = "Wrapper around the Expect module";
-      license = stdenv.lib.licenses.free;
+      license = lib.licenses.free;
     };
   };
 
@@ -7348,7 +7348,7 @@ let
     buildInputs = [ TestFatal ];
     meta = {
       description = "Configure-time utilities for using C headers,";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7361,7 +7361,7 @@ let
     };
     meta = {
       description = "A wrapper for perl's configuration";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7394,7 +7394,7 @@ let
       sha256 = "165y1cjirbq64w39svkz82cb5jjqkjm8f4c0wqi2lk6050hzf3vq";
     };
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7408,7 +7408,7 @@ let
     buildInputs = [ pkgs.gfortran ];
     meta = {
       description = "A simple interface to F77 libs";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ FileWhich ];
   };
@@ -7422,7 +7422,7 @@ let
     };
     meta = {
       description = "Various portability utilities for module builders";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7435,7 +7435,7 @@ let
     };
     meta = {
       description = "Install files from here to there";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7449,7 +7449,7 @@ let
     propagatedBuildInputs = [ ExtUtilsConfig ];
     meta = {
       description = "Build.PL install path logic made easy";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7463,7 +7463,7 @@ let
     perlPreHook = "export LD=$CC";
     meta = {
       description = "A tool to build C libraries";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7476,7 +7476,7 @@ let
     };
     meta = {
       description = "Create a module Makefile";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7490,7 +7490,7 @@ let
      propagatedBuildInputs = [ ModuleCPANfile ];
      meta = {
        description = "cpanfile support for EUMM";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -7507,7 +7507,7 @@ let
     meta = {
       homepage = "http://gtk2-perl.sourceforge.net";
       description = "Simplistic interface to pkg-config";
-      license = stdenv.lib.licenses.lgpl21Plus;
+      license = lib.licenses.lgpl21Plus;
     };
   };
 
@@ -7578,7 +7578,7 @@ let
       url = "mirror://cpan/authors/id/E/ET/ETHER/FCGI-0.79.tar.gz";
       sha256 = "1r1lzd74lzzdl2brcanw4n70m37nd8n6gv9clb55m3gv2hdlxylc";
     };
-    postPatch = stdenv.lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
+    postPatch = lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
       sed -i '/use IO::File/d' Makefile.PL
     '';
   };
@@ -7593,7 +7593,7 @@ let
      propagatedBuildInputs = [ Moo TypeTiny ];
      meta = {
        description = "client library for fastcgi protocol";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
     buildInputs = [ ModuleBuildTiny ];
   };
@@ -7620,7 +7620,7 @@ let
     buildInputs = [ Test2Suite ];
     meta = {
       description = "Check that a library is available for FFI";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7634,7 +7634,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/Fennec-Lite";
       description = "Minimalist Fennec, the commonly used bits";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7647,7 +7647,7 @@ let
     };
     buildInputs = [ Test2Suite TestRequires TestWithoutModule ];
     propagatedBuildInputs = [ ModulePluggable Moo TypeTiny namespaceautoclean ];
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "Watch for changes to files, cross-platform style";
       license = licenses.artistic2;
     };
@@ -7688,7 +7688,7 @@ let
     propagatedBuildInputs = [ Readonly ];
     meta = {
       description = "Utilities for handling Byte Order Marks";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7701,7 +7701,7 @@ let
     };
     meta = {
       description = "Run many filetest checks on a tree";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7725,7 +7725,7 @@ let
      buildInputs = [ CaptureTiny PathTiny ];
      meta = {
        description = "Recursive copying of files and directories within Perl 5 toolchain";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "http://thenceforward.net/perl/modules/File-Copy-Recursive-Reduced/";
      };
   };
@@ -7739,7 +7739,7 @@ let
     };
     meta = {
       description = "Efficiently count the number of line breaks in a file";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7775,7 +7775,7 @@ let
     propagatedBuildInputs = [ ClassXSAccessor ];
     meta = {
       description = "An object oriented File::Find replacement";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -7794,7 +7794,7 @@ let
     meta = {
       homepage = "https://www.shlomifish.org/open-source/projects/File-Find-Object/";
       description = "Alternative interface to File::Find::Object";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7818,7 +7818,7 @@ let
     propagatedBuildInputs = [ FileFindRule ParamsUtil ];
     meta = {
       description = "Common rules for searching for Perl things";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7831,7 +7831,7 @@ let
     };
     propagatedBuildInputs = [ TextGlob ];
     meta = {
-      license = stdenv.lib.licenses.free; # Same as Perl
+      license = lib.licenses.free; # Same as Perl
     };
   };
 
@@ -7843,9 +7843,9 @@ let
       sha256 = "05p9m7kpmjv8bmmbs5chb5fqyshcgmskbbzq5c9qpskbx2w5894n";
     };
     meta = {
-      maintainers = [ maintainers.limeytexan ];
+      maintainers = teams.deshaw.members;
       description = "simple filename and pathname matching";
-      license = stdenv.lib.licenses.free; # Same as Perl
+      license = lib.licenses.free; # Same as Perl
     };
   };
 
@@ -7858,7 +7858,7 @@ let
     };
     meta = {
       description = "Find matches to a pattern in a series of files and related functions";
-      maintainers = [ maintainers.limeytexan ];
+      maintainers = teams.deshaw.members;
     };
   };
 
@@ -7873,7 +7873,7 @@ let
     meta = {
       homepage = "https://github.com/coppit/filehandle-unget/";
       description = "FileHandle which supports multi-byte unget";
-      license = stdenv.lib.licenses.gpl2;
+      license = lib.licenses.gpl2;
       maintainers = with maintainers; [ romildo ];
     };
   };
@@ -7888,7 +7888,7 @@ let
     propagatedBuildInputs = [ FileWhich ];
     meta = {
       description = "Find your home and other directories on any platform";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     preCheck = "export HOME=$TMPDIR";
     doCheck = !stdenv.isDarwin;
@@ -7912,10 +7912,10 @@ let
       sha256 = "a02fbf285406a8a4d9399284f032f2d55c56975154c2e1674bd109837b8096ec";
     };
     buildInputs = [ ExtUtilsCChecker ];
-    perlPreHook = stdenv.lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
+    perlPreHook = lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
     meta = {
       description = "Modify attributes of symlinks without dereferencing them";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7934,7 +7934,7 @@ let
     '';
     meta = {
       description = "Determine MIME types of data or files using libmagic";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7957,7 +7957,7 @@ let
     };
     meta = {
       description = "Load lines from file";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -7981,7 +7981,7 @@ let
     };
     meta = {
       description = "Guess file type from contents";
-      license = stdenv.lib.licenses.free; # Some form of BSD4/Apache mix.
+      license = lib.licenses.free; # Some form of BSD4/Apache mix.
     };
   };
 
@@ -7996,7 +7996,7 @@ let
     buildInputs = [ TestFatal TestWarnings ];
     meta = {
       description = "Memory mapping made simple and safe.";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8010,7 +8010,7 @@ let
     meta = {
       homepage = "https://github.com/neilbowers/File-Modified";
       description = "Checks intelligently if files have changed";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8041,7 +8041,7 @@ let
     };
     meta = {
       description = "Create or remove directory trees";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8059,9 +8059,9 @@ let
     })];
     propagatedBuildInputs = [ ClassAccessor ];
     meta = {
-      license = stdenv.lib.licenses.free; # Same as Perl
+      license = lib.licenses.free; # Same as Perl
       description = "Pid File Manipulation";
-      maintainers = [ maintainers.limeytexan ];
+      maintainers = teams.deshaw.members;
     };
   };
 
@@ -8074,7 +8074,7 @@ let
     };
     meta = {
       description = "Change directory temporarily for a limited scope";
-      license = stdenv.lib.licenses.asl20;
+      license = lib.licenses.asl20;
     };
   };
 
@@ -8087,7 +8087,7 @@ let
     };
     meta = {
       description = "Read a file backwards by lines";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8111,7 +8111,7 @@ let
     meta = {
       homepage = "https://github.com/ingydotnet/file-share-pm";
       description = "Extend File::ShareDir to Local Libraries";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8125,7 +8125,7 @@ let
     propagatedBuildInputs = [ ClassInspector ];
     meta = {
       description = "Locate per-dist and per-module shared files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ FileShareDirInstall ];
   };
@@ -8139,7 +8139,7 @@ let
     };
     meta = {
       description = "Install shared files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8152,7 +8152,7 @@ let
     };
     meta = {
       description = "Perl extension for filesystem disk space information.";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8165,7 +8165,7 @@ let
     };
     meta = {
       description = "Simple and dumb file system watcher";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestSharedFork ];
   };
@@ -8180,7 +8180,7 @@ let
     buildInputs = [ TestWarn ];
     meta = {
       description = "Estimate file space usage (similar to `du`)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8193,7 +8193,7 @@ let
     };
     meta = {
       description = "Simple and Efficient Reading/Writing/Modifying of Complete Files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8207,7 +8207,7 @@ let
     buildInputs = [ TestWarnings ];
     meta = {
       description = "A simple, sane and efficient module to slurp a file";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8220,7 +8220,7 @@ let
     };
     meta = {
       description = "A simple, sane and efficient file slurper [DISCOURAGED]";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8233,8 +8233,8 @@ let
     };
     meta = {
       description = "Perl extension for reading from continously updated files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
-      maintainers = [ maintainers.limeytexan ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = teams.deshaw.members;
     };
   };
 
@@ -8248,8 +8248,8 @@ let
     meta = {
       homepage = "https://github.com/neilb/File-Touch";
       description = "Update file access and modification times, optionally creating files if needed";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
-      maintainers = [ maintainers.limeytexan ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = teams.deshaw.members;
     };
   };
 
@@ -8262,7 +8262,7 @@ let
     };
     meta = {
       description = "File::Type uses magic numbers (typically at the start of a file) to determine the MIME type of that file.";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8277,7 +8277,7 @@ let
     meta = {
       homepage = "https://github.com/tommybutler/file-util/wiki";
       description = "Easy, versatile, portable file handling";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8292,7 +8292,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/File-Util-Tempdir";
       description = "Cross-platform way to get system-wide & user private temporary directory";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -8307,7 +8307,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/File-Which";
       description = "Perl implementation of the which utility as an API";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8320,7 +8320,7 @@ let
      };
      meta = {
        description = "Extended globs.";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -8333,7 +8333,7 @@ let
     };
     meta = {
       description = "Source Filters";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8345,7 +8345,7 @@ let
       sha256 = "0lxz9fsm4ld3l900zxh2w91wjygk0ifn4miw6q5k4mm67d2c9nwm";
     };
     propagatedBuildInputs = [ CGI DateTimeFormatStrptime HTMLTableExtract JSON JSONParse LWPProtocolHttps StringUtil TextTemplate ];
-    meta = with stdenv.lib; {
+    meta = with lib; {
       homepage = "http://finance-quote.sourceforge.net/";
       description = "Get stock and mutual fund quotes from various exchanges";
       license = licenses.gpl2;
@@ -8360,9 +8360,9 @@ let
       url = "mirror://cpan/authors/id/Y/YA/YANNK/Find-Lib-1.04.tar.gz";
       sha256 = "0lg88v0sqfpq4d3jwvk6c9blqnpxbz8f4s22zr3b1qb160g94wqx";
     };
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "Helper to smartly find libs to use in the filesystem tree";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8384,7 +8384,7 @@ let
     };
     meta = {
       description = "TTF font support for Perl";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
     buildInputs = [ IOString ];
   };
@@ -8399,7 +8399,7 @@ let
     doCheck = false;
     meta = {
       description = "Extensions and convenience methods to manage background processes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ URI ];
   };
@@ -8414,7 +8414,7 @@ let
     propagatedBuildInputs = [ ClassAccessor ClassDataAccessor DateCalc DateTimeFormatStrptime EmailValidLoose ListMoreUtils TieIxHash UNIVERSALrequire YAML ];
     meta = {
       description = "Validation with simple chains of constraints";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ CGI ];
   };
@@ -8440,7 +8440,7 @@ let
     buildInputs = [ HTTPCookieJar HTTPProxy ModuleBuildTiny Plack Starlet TestFakeHTTPD TestRequires TestSharedFork TestTCP TestValgrind URI ];
     meta = {
       description = "Lightning-fast URL fetcher";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8454,7 +8454,7 @@ let
     buildInputs = [ TestFatal TestIdentity TestRefcount ];
     meta = {
       description = "represent an operation awaiting completion";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8467,10 +8467,10 @@ let
     };
     buildInputs = [ TestRefcount ];
     propagatedBuildInputs = [ Future XSParseSublike ];
-    perlPreHook = stdenv.lib.optionalString stdenv.isDarwin "export LD=$CC";
+    perlPreHook = lib.optionalString stdenv.isDarwin "export LD=$CC";
     meta = {
       description = "Deferred subroutine syntax for futures";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.zakame ];
     };
   };
@@ -8486,7 +8486,7 @@ let
     propagatedBuildInputs = [ ClassXSAccessor ExceptionClass PathTiny ];
     meta = {
       description = "Verify solutions for solitaire games";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -8517,7 +8517,7 @@ let
     buildInputs = [ CaptureTiny TestException ];
     meta = {
       description = "Graph Plotting Module for Perl 5";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8531,7 +8531,7 @@ let
     propagatedBuildInputs = [ GD ];
     meta = {
       description = "Security image (captcha) generator";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8570,7 +8570,7 @@ let
     buildInputs = [ PathClass TestFatal TestNumberDelta ];
     meta = {
       description = "Perl API for MaxMind's GeoIP2 web services and databases";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8582,7 +8582,7 @@ let
       sha256 = "3709aa513ce6fd71d1a55a02e34d2f090017d5350a9bd447005653c9b0835b22";
     };
     meta = {
-      license = stdenv.lib.licenses.artistic1;
+      license = lib.licenses.artistic1;
       maintainers = [ maintainers.pSub ];
     };
   };
@@ -8608,7 +8608,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Getopt-Long-Descriptive";
       description = "Getopt::Long, but simpler and more powerful";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8630,9 +8630,9 @@ let
     };
     propagatedBuildInputs = [ Error ];
     meta = {
-      maintainers = [ maintainers.limeytexan ];
+      maintainers = teams.deshaw.members;
       description = "This is the Git.pm, plus the other files in the perl/Git directory, from github's git/git";
-      license = stdenv.lib.licenses.free;
+      license = lib.licenses.free;
     };
   };
 
@@ -8646,7 +8646,7 @@ let
     meta = {
       maintainers = [ maintainers.DamienCassou ];
       description = "Create fixup commits for topic branches";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -8662,7 +8662,7 @@ let
     doCheck = false;
     meta = {
       description = "A Pure Perl interface to Git repositories";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8677,7 +8677,7 @@ let
     propagatedBuildInputs = [ GitVersionCompare SystemCommand namespaceclean ];
     meta = {
       description = "Perl interface to Git repositories";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8691,7 +8691,7 @@ let
     buildInputs = [ TestNoWarnings ];
     meta = {
       description = "Functions to compare Git versions";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8707,7 +8707,7 @@ let
     meta = {
       homepage = "http://gtk2-perl.sourceforge.net/";
       description = "Perl wrappers for the GLib utility and Object libraries";
-      license = stdenv.lib.licenses.lgpl21Plus;
+      license = lib.licenses.lgpl21Plus;
     };
     propagatedBuildInputs = [ ExtUtilsDepends ExtUtilsPkgConfig ];
   };
@@ -8727,7 +8727,7 @@ let
       # and https://github.com/NixOS/nixpkgs/issues/68116
       # adding pkgs.gnome3.gjs does not fix it
       description = "Dynamically create Perl language bindings";
-      license = stdenv.lib.licenses.lgpl2Plus;
+      license = lib.licenses.lgpl2Plus;
     };
   };
 
@@ -8743,7 +8743,7 @@ let
     meta = {
       homepage = "http://gtk2-perl.sourceforge.net";
       description = "Perl interface to the 2.x series of the GNOME libraries";
-      license = stdenv.lib.licenses.lgpl21Plus;
+      license = lib.licenses.lgpl21Plus;
     };
   };
 
@@ -8756,7 +8756,7 @@ let
     };
     buildInputs = [ pkgs.gnome2.libgnomecanvas ];
     meta = {
-      license = stdenv.lib.licenses.lgpl2Plus;
+      license = lib.licenses.lgpl2Plus;
     };
     propagatedBuildInputs = [ Gtk2 ];
   };
@@ -8771,7 +8771,7 @@ let
     propagatedBuildInputs = [ pkgs.gnome2.gnome_vfs Glib ];
     meta = {
       description = "Perl interface to the 2.x series of the GNOME VFS library";
-      license = stdenv.lib.licenses.lgpl21Plus;
+      license = lib.licenses.lgpl21Plus;
     };
   };
 
@@ -8786,7 +8786,7 @@ let
     propagatedBuildInputs = [ Gtk2 ];
     meta = {
       description = "Perl interface to the Window Navigator Construction Kit";
-      license = stdenv.lib.licenses.lgpl21Plus;
+      license = lib.licenses.lgpl21Plus;
     };
   };
 
@@ -8813,7 +8813,7 @@ let
     doCheck = false;
     meta = {
       description = "Supply object methods for interacting with GnuPG";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8841,7 +8841,7 @@ let
     propagatedBuildInputs = [ pkgs.goocanvas pkgs.gtk2 Gtk2 ];
     meta = {
       description = "Perl interface to the GooCanvas";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8856,7 +8856,7 @@ let
     propagatedBuildInputs = [ pkgs.goocanvas2 Gtk3 ];
     meta = {
       description = "Perl binding for GooCanvas2 widget using Glib::Object::Introspection";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8872,7 +8872,7 @@ let
       [ ../development/perl-modules/Google-ProtocolBuffers-multiline-comments.patch ];
     meta = {
       description = "Simple interface to Google Protocol Buffers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -8897,7 +8897,7 @@ let
     buildInputs = [ pkgs.graphviz TestPod ];
     propagatedBuildInputs = [ FileWhich IPCRun ParseRecDescent XMLTwig XMLXPath ];
 
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "Perl interface to the GraphViz graphing tool";
       license = licenses.artistic2;
     };
@@ -8916,7 +8916,7 @@ let
     meta = {
       homepage = "https://github.com/coppit/grepmail";
       description = "Search mailboxes for mail matching a regular expression";
-      license = stdenv.lib.licenses.gpl2;
+      license = lib.licenses.gpl2;
       maintainers = with maintainers; [ romildo ];
     };
   };
@@ -8941,9 +8941,9 @@ let
     };
     propagatedBuildInputs = [ pkgs.krb5Full.dev ];
     meta = {
-      maintainers = [ maintainers.limeytexan ];
+      maintainers = teams.deshaw.members;
       description = "Perl extension providing access to the GSSAPIv2 library";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     makeMakerFlags = "--gssapiimpl ${pkgs.krb5Full.dev}";
   };
@@ -8962,7 +8962,7 @@ let
     meta = {
       homepage = "http://gtk2-perl.sourceforge.net/";
       description = "Perl interface to the 2.x series of the Gimp Toolkit library";
-      license = stdenv.lib.licenses.lgpl21Plus;
+      license = lib.licenses.lgpl21Plus;
     };
     propagatedBuildInputs = [ Pango ];
   };
@@ -8977,7 +8977,7 @@ let
     propagatedBuildInputs = [ pkgs.gnome2.libglade pkgs.gtk2 Gtk2 ];
     meta = {
       description = "Create user interfaces directly from Glade XML files";
-      license = stdenv.lib.licenses.lgpl2Plus;
+      license = lib.licenses.lgpl2Plus;
     };
   };
 
@@ -8990,7 +8990,7 @@ let
     };
     propagatedBuildInputs = [ pkgs.gtk2 Gtk2 ];
     meta = {
-      license = stdenv.lib.licenses.gpl2;
+      license = lib.licenses.gpl2;
     };
   };
 
@@ -9007,7 +9007,7 @@ let
     doCheck = false;
     meta = {
       description = "Perl extension for libappindicator";
-      license = stdenv.lib.licenses.artistic1;
+      license = lib.licenses.artistic1;
     };
   };
 
@@ -9026,7 +9026,7 @@ let
     doCheck = false;
     meta = {
       description = "Perl bindings for the GtkImageView widget";
-      license = stdenv.lib.licenses.free;
+      license = lib.licenses.free;
     };
   };
 
@@ -9040,7 +9040,7 @@ let
     propagatedBuildInputs = [ pkgs.libunique pkgs.gtk2 Gtk2 ];
     meta = {
       description = "Use single instance applications";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9054,7 +9054,7 @@ let
     propagatedBuildInputs = [ pkgs.gtk3 CairoGObject GlibObjectIntrospection ];
     meta = {
       description = "Perl interface to the 3.x series of the GTK toolkit";
-      license = stdenv.lib.licenses.lgpl21Plus;
+      license = lib.licenses.lgpl21Plus;
     };
   };
 
@@ -9067,7 +9067,7 @@ let
     };
     meta = {
       description = "A simple interface to Gtk3's complex MVC list widget";
-      license = stdenv.lib.licenses.lgpl21Plus;
+      license = lib.licenses.lgpl21Plus;
     };
     propagatedBuildInputs = [ Gtk3 ];
   };
@@ -9089,7 +9089,7 @@ let
       sha256 = "e01b455d46f44710dbcf21b6fa843f09358ce60eee1c4141bc74e0a204d3a020";
     };
     propagatedBuildInputs = [ DateCalc ];
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "Finnish APRS Parser (Fabulous APRS Parser)";
       maintainers = with maintainers; [ andrew-d ];
       license = with licenses; [ artistic1 gpl1Plus ];
@@ -9105,17 +9105,17 @@ let
     };
     buildInputs = [ BotTrainingMegaHAL BotTrainingStarCraft DataSection FileSlurp PodSection TestException TestExpect TestOutput TestScript TestScriptRun ];
     propagatedBuildInputs = [ ClassLoad DBDSQLite DataDump DirSelf FileCountLines GetoptLongDescriptive IOInteractive IPCSystemSimple ListMoreUtils Moose MooseXGetopt MooseXStrictConstructor MooseXTypes RegexpCommon TermSk namespaceclean ];
-    nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin shortenPerlShebang;
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
     postPatch = ''
       patchShebangs bin
     '';
-    postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    postInstall = lib.optionalString stdenv.isDarwin ''
       shortenPerlShebang $out/bin/hailo
     '';
     meta = {
       homepage = "https://github.com/hailo/hailo";
       description = "A pluggable Markov engine analogous to MegaHAL";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9129,7 +9129,7 @@ let
     propagatedBuildInputs = [ HashMerge ];
 
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 ];
+      license = with lib.licenses; [ artistic1 ];
       description = "Return difference between two hashes as a hash";
     };
     buildInputs = [ TestSimple13 ];
@@ -9173,7 +9173,7 @@ let
     propagatedBuildInputs = [ Clone ];
     meta = {
       description = "Recursively merge two or more hashes, simply";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9186,7 +9186,7 @@ let
     };
     meta = {
       description = "Provide the stuff missing in Hash::Util";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9199,7 +9199,7 @@ let
     };
     meta = {
       description = "Store multiple values per key";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9232,7 +9232,7 @@ let
     meta = {
       homepage = "https://github.com/chorny/Hook-LexWrap";
       description = "Lexically scoped subroutine wrappers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9245,7 +9245,7 @@ let
     };
     meta = {
       description = "Cleans up HTML code for web browsers, not humans";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9267,11 +9267,11 @@ let
       sha256 = "b1cbac4157ad8dedac6914e1628855e05b8dc885a4007d2e4df8177c6a9b70fb";
     };
     buildInputs = [ ModuleBuildPluggablePPPort TestRequires ];
-    perlPreHook = stdenv.lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
+    perlPreHook = lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
     meta = {
       homepage = "https://github.com/tokuhirom/HTML-Escape";
       description = "Extremely fast HTML escaping";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9297,7 +9297,7 @@ let
     propagatedBuildInputs = [ HTMLParser ];
     meta = {
       description = "Class that represents an HTML form element";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9312,7 +9312,7 @@ let
     propagatedBuildInputs = [ FontAFM HTMLTree ];
     meta = {
       description = "Base class for HTML formatters";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9326,7 +9326,7 @@ let
     propagatedBuildInputs = [ HTMLFormatter ];
     meta = {
       description = "HTML to text conversion with links as footnotes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9340,7 +9340,7 @@ let
     propagatedBuildInputs = [ HTMLFormatTextWithLinks ];
     meta = {
       description = "Converts HTML to Text with tables intact";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9355,7 +9355,7 @@ let
     propagatedBuildInputs = [ ConfigAny DataVisitor DateTimeFormatBuilder DateTimeFormatNatural EmailValid HTMLScrubber HTMLTokeParserSimple HashFlatten JSONMaybeXS MooseXAliases MooseXAttributeChained NumberFormat PathClass Readonly RegexpCommon TaskWeaken YAMLLibYAML ];
     meta = {
       description = "HTML Form Creation, Rendering and Validation Framework";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9369,7 +9369,7 @@ let
      propagatedBuildInputs = [ CryptCBC CryptDES HTMLFormFu ];
      meta = {
        description = "Handle multi-page/stage forms with FormFu";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/FormFu/HTML-FormFu-MultiForm";
      };
   };
@@ -9387,7 +9387,7 @@ let
     propagatedBuildInputs = [ CryptBlowfish CryptCBC DataClone DateTimeFormatStrptime EmailValid HTMLTree JSONMaybeXS MooseXGetopt MooseXTypesCommon MooseXTypesLoadableClass aliased ];
     meta = {
       description = "HTML forms using Moose";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9402,7 +9402,7 @@ let
     propagatedBuildInputs = [ CGI CacheCache ClassContainer ExceptionClass LogAny ];
     meta = {
       description = "High-performance, dynamic web site authoring system";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9417,7 +9417,7 @@ let
     propagatedBuildInputs = [ CGIPSGI HTMLMason ];
     meta = {
       description = "PSGI handler for HTML::Mason";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9431,7 +9431,7 @@ let
     propagatedBuildInputs = [ HTMLTagset HTTPMessage ];
     meta = {
       description = "HTML parser class";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9444,7 +9444,7 @@ let
     };
     meta = {
       description = "Generate An HTML Tag Cloud";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9458,7 +9458,7 @@ let
     propagatedBuildInputs = [ HTMLParser ];
     meta = {
       description = "Extract structure of quoted HTML mail message";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9472,7 +9472,7 @@ let
     propagatedBuildInputs = [ HTMLParser ];
     meta = {
       description = "Concise attribute rewriting";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9506,7 +9506,7 @@ let
     };
     meta = {
       description = "Strip scripting constructs out of HTML";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9520,7 +9520,7 @@ let
     propagatedBuildInputs = [ HTMLParser HTMLStripScripts ];
     meta = {
       description = "XSS filter using HTML::Parser";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9578,7 +9578,7 @@ let
     };
     meta = {
       description = "Lightweight, dependency free HTML/XML generation";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9603,7 +9603,7 @@ let
     propagatedBuildInputs = [ HTMLParser ];
     meta = {
       description = "Work with HTML in a DOM-like tree structure";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9617,7 +9617,7 @@ let
     propagatedBuildInputs = [ HTMLTree XMLXPathEngine ];
     meta = {
       description = "Add XPath support to HTML::TreeBuilder";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9644,7 +9644,7 @@ let
     propagatedBuildInputs = [ HTTPMessage ];
     meta = {
       description = "HTTP Body Parser";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9659,7 +9659,7 @@ let
     buildInputs = [ TestDeep TestRequires URI ];
     meta = {
       description = "A minimalist HTTP user agent cookie jar";
-      license = with stdenv.lib.licenses; [ asl20 ];
+      license = with lib.licenses; [ asl20 ];
       homepage = "https://github.com/dagolden/HTTP-CookieJar";
     };
   };
@@ -9674,7 +9674,7 @@ let
     propagatedBuildInputs = [ HTTPMessage ];
     meta = {
       description = "HTTP cookie jars";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9688,7 +9688,7 @@ let
     propagatedBuildInputs = [ HTTPMessage ];
     meta = {
       description = "A simple http server class";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9701,7 +9701,7 @@ let
     };
     meta = {
       description = "Date conversion routines";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ TimeDate ];
   };
@@ -9717,7 +9717,7 @@ let
      buildInputs = [ HTTPMessage ModuleBuildTiny ];
      meta = {
        description = "PSGI compliant HTTP Entity Parser";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/kazeburo/HTTP-Entity-Parser";
      };
   };
@@ -9757,7 +9757,7 @@ let
     meta = {
       homepage = "https://github.com/tokuhirom/HTTP-Headers-Fast";
       description = "Faster implementation of HTTP::Headers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9783,7 +9783,7 @@ let
     meta = {
       homepage = "https://github.com/libwww-perl/HTTP-Message";
       description = "HTTP style message (base class)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9797,7 +9797,7 @@ let
      buildInputs = [ TestDeep ];
      meta = {
        description = "HTTP MultiPart Parser";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -9811,7 +9811,7 @@ let
     propagatedBuildInputs = [ HTTPMessage ];
     meta = {
       description = "Choose a variant to serve";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9834,7 +9834,7 @@ let
     propagatedBuildInputs = [ LWP ];
     meta = {
       description = "A pure Perl HTTP proxy";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     # tests fail because they require network access
     doCheck = false;
@@ -9873,7 +9873,7 @@ let
     };
     doCheck = false;
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ CGI ];
   };
@@ -9887,7 +9887,7 @@ let
     };
     propagatedBuildInputs = [ AuthenSimple HTTPServerSimple ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9901,7 +9901,7 @@ let
     propagatedBuildInputs = [ HTMLMason HTTPServerSimple HookLexWrap ];
     meta = {
       description = "A simple mason server";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9915,7 +9915,7 @@ let
      propagatedBuildInputs = [ HTTPServerSimple ];
      meta = {
        description = "PSGI handler for HTTP::Server::Simple";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/miyagawa/HTTP-Server-Simple-PSGI";
      };
   };
@@ -9931,7 +9931,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/HTTP-Tiny-Cache";
       description = "Cache HTTP::Tiny responses";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -9947,7 +9947,7 @@ let
     meta = {
       homepage = "https://github.com/miyagawa/HTTP-Tinyish";
       description = "HTTP::Tiny compatible HTTP client wrappers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9960,7 +9960,7 @@ let
     };
     propagatedBuildInputs = [ DateTimeFormatICal FreezeThaw IOString TextvFileasData ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9976,7 +9976,7 @@ let
     meta = {
       homepage = "http://imager.perl.org/";
       description = "Perl extension for Generating 24 bit Images";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -9990,7 +9990,7 @@ let
     propagatedBuildInputs = [ Imager ];
     meta = {
       description = "Generate QR Code with Imager using libqrencode";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = with maintainers; [ sgo ];
     };
   };
@@ -10005,7 +10005,7 @@ let
     propagatedBuildInputs = [ IOStringy ];
     meta = {
       description = "Extract meta information from image files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10020,7 +10020,7 @@ let
     propagatedBuildInputs = [ ExceptionClass Readonly ];
     meta = {
       description = "Perl extension for the SANE (Scanner Access Now Easy) Project";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10036,7 +10036,7 @@ let
     makeMakerFlags = "--with-jpeg-includes=${pkgs.libjpeg.dev}/include --with-jpeg-libs=${pkgs.libjpeg.out}/lib --with-png-includes=${pkgs.libpng.dev}/include --with-png-libs=${pkgs.libpng.out}/lib";
     meta = {
       description = "Fast, high-quality fixed-point image resizing";
-      license = stdenv.lib.licenses.gpl2Plus;
+      license = lib.licenses.gpl2Plus;
     };
   };
 
@@ -10050,7 +10050,7 @@ let
     buildInputs = [ ModuleBuild ];
     meta = {
       description = "Read the dimensions of an image in several popular formats";
-      license = with stdenv.lib.licenses; [ artistic1 lgpl21Plus ];
+      license = with lib.licenses; [ artistic1 lgpl21Plus ];
     };
   };
 
@@ -10073,7 +10073,7 @@ let
     };
     meta = {
       description = "Alternative but compatible interface to modules that export symbols";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10087,7 +10087,7 @@ let
     propagatedBuildInputs = [ ModuleRuntime ];
     meta = {
       description = "Import packages into other packages";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10101,7 +10101,7 @@ let
     doCheck = false;
     meta = {
       description = "Perl core IO modules";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10114,13 +10114,13 @@ let
     };
     buildInputs = [ CanaryStability ];
     propagatedBuildInputs = [ commonsense ];
-    nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin shortenPerlShebang;
-    postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    postInstall = lib.optionalString stdenv.isDarwin ''
       shortenPerlShebang $out/bin/treescan
     '';
     meta = {
       description = "Asynchronous/Advanced Input/Output";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10134,7 +10134,7 @@ let
     meta = {
       homepage = "https://github.com/ingydotnet/io-all-pm";
       description = "IO::All of it to Graham and Damian!";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10150,7 +10150,7 @@ let
     buildInputs = [ TestFatal TestIdentity TestMetricsAny TestRefcount ];
     meta = {
       description = "Asynchronous event-driven programming";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10165,7 +10165,7 @@ let
     propagatedBuildInputs = [ Future IOAsync IOSocketSSL ];
     meta = {
       description = "Use SSL/TLS with IO::Async";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.zakame ];
     };
   };
@@ -10178,7 +10178,7 @@ let
       sha256 = "c2c15a254ca74fb8c57d25d7b6cbcaff77a3b4fb5695423f1f80bb423abffea9";
     };
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10192,7 +10192,7 @@ let
     meta = {
       homepage = "https://github.com/dagolden/IO-CaptureOutput";
       description = "Capture STDOUT and STDERR from Perl code, subprocesses or XS";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10206,7 +10206,7 @@ let
     propagatedBuildInputs = [ CompressRawBzip2 CompressRawZlib ];
     meta = {
       description = "IO Interface to compressed data files/buffers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     # Same as CompressRawZlib
     doCheck = false && !stdenv.isDarwin;
@@ -10231,7 +10231,7 @@ let
     };
     meta = {
       description = "Open an HTML file with automatic charset detection";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10257,7 +10257,7 @@ let
     };
     meta = {
       description = "Utilities for interactive I/O";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10343,7 +10343,7 @@ let
     meta = {
       homepage = "https://github.com/noxxi/p5-io-socket-ssl";
       description = "Nearly transparent SSL encapsulation for IO::Socket::INET";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     doCheck = false; # tries to connect to facebook.com etc.
   };
@@ -10359,7 +10359,7 @@ let
     propagatedBuildInputs = [ PerlIOviaTimeout ];
     meta = {
       description = "IO::Socket with read/write timeout";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10400,7 +10400,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/io-tiecombine";
       description = "Produce tied (and other) separate but combined variables";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10424,7 +10424,7 @@ let
     propagatedBuildInputs = [ GeographyCountries ];
     meta = {
       description = "Fast lookup of country codes from IP addresses";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -10437,7 +10437,7 @@ let
     };
     meta = {
       description = "2-letter, 3-letter, and numerical codes for countries";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -10452,7 +10452,7 @@ let
     doCheck = false; /* attempts a network connection to localhost */
     meta = {
       description = "System() and background procs w/ piping, redirs, ptys (Unix, Win32)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ IOTty ];
     buildInputs = [ Readonly ];
@@ -10485,7 +10485,7 @@ let
     };
     meta = {
       description = "Run commands simply, with detailed diagnostics";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10498,7 +10498,7 @@ let
     };
     meta = {
       description = "System V IPC constants and system calls";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10512,7 +10512,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/IRC-Utils";
       description = "Common utilities for IRC-related tasks";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = with maintainers; [ sgo ];
     };
   };
@@ -10526,12 +10526,12 @@ let
       sha256 = "0nl5djf6hs6brnp7qnqvj3xwhj1qnjwcv35ih4yqp2mm9b4jqyfh";
     };
 
-    nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin shortenPerlShebang;
-    postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    postInstall = lib.optionalString stdenv.isDarwin ''
       shortenPerlShebang $out/bin/exiftool
     '';
 
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "A tool to read, write and edit EXIF meta information";
       homepage = "https://exiftool.org/";
 
@@ -10570,7 +10570,7 @@ let
         module. The code is automatically compiled as needed, and then loaded
         for immediate access from Perl.
       '';
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10591,7 +10591,7 @@ let
     meta = {
       homepage = "https://github.com/ingydotnet/inline-c-pm";
       description = "C Language Support for Inline";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10623,7 +10623,7 @@ let
         available to the Perl program as if they had been written in Perl.
       '';
 
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -10643,10 +10643,10 @@ let
       url = "mirror://cpan/authors/id/G/GT/GTERMARS/JavaScript-Minifier-XS-0.11.tar.gz";
       sha256 = "1vlyhckpjbrg2v4dy9szsxxl0q44n0y1xl763mg2y2ym9g5144hm";
     };
-    perlPreHook = stdenv.lib.optionalString (stdenv.isi686 || stdenv.isDarwin) "export LD=$CC";
+    perlPreHook = lib.optionalString (stdenv.isi686 || stdenv.isDarwin) "export LD=$CC";
     meta = {
       description = "XS based JavaScript minifier";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10659,7 +10659,7 @@ let
      };
      meta = {
        description = "Avoid XSS with JavaScript value interpolation";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/kazeburo/JavaScript-Value-Escape";
      };
   };
@@ -10672,13 +10672,13 @@ let
       sha256 = "0z32x2lijij28c9fhmzgxc41i9nw24fyvd2a8ajs5zw9b9sqhjj4";
     };
     # Do not abort cross-compilation on failure to load native JSON module into host perl
-    preConfigure = stdenv.lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
+    preConfigure = lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
       substituteInPlace Makefile.PL --replace "exit 0;" ""
     '';
     buildInputs = [ TestPod ];
     meta = {
       description = "JSON (JavaScript Object Notation) encoder/decoder";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10691,7 +10691,7 @@ let
     };
     meta = {
       description = "Wrapper Class for the various JSON classes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestFatal TestRequires TestWarnings TestWithoutModule ];
   };
@@ -10705,7 +10705,7 @@ let
     };
     meta = {
       description = "Use L<Cpanel::JSON::XS> with a fallback to L<JSON::XS> and L<JSON::PP>";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestNeeds ];
   };
@@ -10719,7 +10719,7 @@ let
     };
     meta = {
       description = "JSON::XS compatible pure-Perl module";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10732,7 +10732,7 @@ let
     };
     meta = {
       description = "Helper module in using JSON::PP in Perl 5.6";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10745,7 +10745,7 @@ let
     };
     meta = {
       description = "Read JSON into a Perl variable";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10761,7 +10761,7 @@ let
     meta = {
       homepage = "https://github.com/mojolicious/json-validator";
       description = "Validate data against a JSON schema";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -10778,7 +10778,7 @@ let
     meta = {
       homepage = "https://github.com/xaicron/p5-JSON-WebToken";
       description = "JSON Web Token (JWT) implementation";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10802,7 +10802,7 @@ let
     };
     propagatedBuildInputs = [ JSONXS ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10826,18 +10826,18 @@ let
     preCheck = ''
       rm t/931_epub.t # epub test fails
     '';
-    nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin shortenPerlShebang;
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
     # shebangs need to be patched before executables are copied to $out
     preBuild = ''
       patchShebangs bin/
-    '' + stdenv.lib.optionalString stdenv.isDarwin ''
+    '' + lib.optionalString stdenv.isDarwin ''
       for file in bin/*; do
         shortenPerlShebang "$file"
       done
     '';
     meta = {
       description = "Transforms TeX and LaTeX into XML/HTML/MathML";
-      license = stdenv.lib.licenses.free;
+      license = lib.licenses.free;
     };
   };
 
@@ -10895,7 +10895,7 @@ let
     '';
     doCheck = false; # test would need to start apache httpd
     meta = {
-      license = stdenv.lib.licenses.asl20;
+      license = lib.licenses.asl20;
     };
   };
 
@@ -10917,7 +10917,7 @@ let
     };
     meta = {
       description = "Collection of network protocol modules";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10930,7 +10930,7 @@ let
      };
      meta = {
        description = "Add paths relative to the current file to @INC";
-       license = with stdenv.lib.licenses; [ artistic2 ];
+       license = with lib.licenses; [ artistic2 ];
        homepage = "https://github.com/Grinnz/lib-relative";
      };
   };
@@ -10956,7 +10956,7 @@ let
     meta = {
       homepage = "https://github.com/neilbowers/Lingua-EN-FindNumber";
       description = "Locate (written) numbers in English text";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10969,7 +10969,7 @@ let
     };
     meta = {
       description = "Convert singular to plural. Select 'a' or 'an'";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10984,7 +10984,7 @@ let
     meta = {
       homepage = "https://github.com/neilbowers/Lingua-EN-Inflect-Number";
       description = "Force number of words to singular or plural";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -10999,7 +10999,7 @@ let
     propagatedBuildInputs = [ LinguaENInflectNumber LinguaENNumberIsOrdinal LinguaENTagger ];
     meta = {
       description = "Inflect short English Phrases";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11014,7 +11014,7 @@ let
     propagatedBuildInputs = [ LinguaENFindNumber ];
     meta = {
       description = "Detect if English number is ordinal or cardinal";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11028,7 +11028,7 @@ let
     propagatedBuildInputs = [ HTMLParser LinguaStem MemoizeExpireLRU ];
     meta = {
       description = "Part-of-speech tagger for English natural language processing";
-      license = stdenv.lib.licenses.gpl3;
+      license = lib.licenses.gpl3;
     };
   };
 
@@ -11053,7 +11053,7 @@ let
      };
      meta = {
        description = "Portuguese language stemming";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/neilb/Lingua-PT-Stemmer";
      };
   };
@@ -11100,7 +11100,7 @@ let
      };
      meta = {
        description = "Porter's stemming algorithm for Russian (KOI8-R only)";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/neilb/Lingua-Stem-Ru";
      };
   };
@@ -11138,7 +11138,7 @@ let
     meta = {
       homepage = "https://github.com/jhthorsen/linkembedder";
       description = "Embed / expand oEmbed resources and other URL / links";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = with maintainers; [ sgo ];
     };
   };
@@ -11153,9 +11153,9 @@ let
     buildInputs = [ pkgs.acl ];
     NIX_CFLAGS_LINK = "-L${pkgs.acl.out}/lib -lacl";
     meta = {
-      maintainers = [ maintainers.limeytexan ];
+      maintainers = teams.deshaw.members;
       description = "Perl extension for reading and setting Access Control Lists for files by libacl linux library";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11169,7 +11169,7 @@ let
     meta = {
       homepage = "https://github.com/trizen/Linux-DesktopFiles";
       description = "Fast parsing of the Linux desktop files";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -11185,8 +11185,8 @@ let
     doCheck = false;
     meta = {
       description = "Perl extension to detect on which Linux distribution we are running";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
-      platforms = stdenv.lib.platforms.linux;
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      platforms = lib.platforms.linux;
     };
   };
 
@@ -11199,11 +11199,11 @@ let
     };
     buildInputs = [ TestException ];
     propagatedBuildInputs = [ SubExporter ];
-    perlPreHook = stdenv.lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
+    perlPreHook = lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
     meta = {
       description = "Linux specific special filehandles";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
-      platforms = stdenv.lib.platforms.linux;
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      platforms = lib.platforms.linux;
     };
   };
 
@@ -11218,8 +11218,8 @@ let
 
     meta = {
       description = "Scalable directory/file change notification for Perl on Linux";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
-      platforms = stdenv.lib.platforms.linux;
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      platforms = lib.platforms.linux;
     };
   };
 
@@ -11233,7 +11233,7 @@ let
     propagatedBuildInputs = [ ListSomeUtils ListUtilsBy ];
     meta = {
       description = "Combines List::Util and List::MoreUtils in one bite-sized package";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11257,7 +11257,7 @@ let
     meta = {
       homepage = "http://thenceforward.net/perl/modules/List-Compare/";
       description = "Compare elements of two or more lists";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11271,7 +11271,7 @@ let
     propagatedBuildInputs = [ ExporterTiny ListMoreUtilsXS ];
     meta = {
       description = "Provide the stuff missing in List::Util";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestLeakTrace ];
   };
@@ -11288,7 +11288,7 @@ let
      '';
      meta = {
        description = "Provide the stuff missing in List::Util in XS";
-       license = with stdenv.lib.licenses; [ asl20 ];
+       license = with lib.licenses; [ asl20 ];
      };
   };
 
@@ -11303,7 +11303,7 @@ let
     propagatedBuildInputs = [ ModuleImplementation ];
     meta = {
       description = "Provide the stuff missing in List::Util";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11325,7 +11325,7 @@ let
     };
     meta = {
       description = "A distribution of modules to handle locale codes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestInter ];
   };
@@ -11352,7 +11352,7 @@ let
      buildInputs = [ TestDifferences TestException TestHexDifferences TestNoWarnings ];
      meta = {
        description = "Locale::MO::File - Write or read gettext MO files.";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -11391,7 +11391,7 @@ let
     };
     meta = {
       description = "Compile .po files to .mo files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11419,7 +11419,7 @@ let
      buildInputs = [ TestDifferences TestException TestNoWarnings ];
      meta = {
        description = "Locale::TextDomain::OO - Perl OO Interface to Uniforum Message Translation";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -11434,7 +11434,7 @@ let
      buildInputs = [ TestDifferences TestException TestNoWarnings ];
      meta = {
        description = "Locale::TextDomain::OO::Util - Lexicon utils";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -11449,7 +11449,7 @@ let
      buildInputs = [ TestDifferences TestException TestNoWarnings ];
      meta = {
        description = "Locale::Utils::PlaceholderBabelFish - Utils to expand BabelFish palaceholders";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -11464,7 +11464,7 @@ let
      buildInputs = [ TestDifferences TestException TestNoWarnings ];
      meta = {
        description = "Locale::Utils::PlaceholderMaketext - Utils to expand maketext placeholders";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -11479,7 +11479,7 @@ let
      buildInputs = [ TestDifferences TestException TestNoWarnings ];
      meta = {
        description = "Locale::Utils::PlaceholderNamed - Utils to expand named placeholders";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -11492,7 +11492,7 @@ let
     };
     meta = {
       description = "Create and use a local lib/ for perl modules with PERL5LIB";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ ModuleBuild ];
   };
@@ -11518,7 +11518,7 @@ let
     meta = {
       homepage = "https://github.com/preaction/Log-Any";
       description = "Bringing loggers and listeners together";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11532,7 +11532,7 @@ let
     propagatedBuildInputs = [ LogAny LogLog4perl ];
     meta = {
       description = "Log::Any adapter for Log::Log4perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       homepage = "https://github.com/preaction/Log-Any-Adapter-Log4perl";
     };
   };
@@ -11549,7 +11549,7 @@ let
     meta = {
       homepage = "https://github.com/frioux/Log-Contextual";
       description = "Simple logging interface with a contextual log";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11563,7 +11563,7 @@ let
     propagatedBuildInputs = [ DevelGlobalDestruction ParamsValidationCompiler Specio namespaceautoclean ];
     meta = {
       description = "Dispatches messages to one or more outputs";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
     buildInputs = [ IPCRun3 TestFatal TestNeeds ];
   };
@@ -11578,7 +11578,7 @@ let
     propagatedBuildInputs = [ DateManip LogDispatch ];
     meta = {
       description = "Log to Files that Archive/Rotate Themselves";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ PathTiny TestWarn ];
   };
@@ -11593,7 +11593,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/Log-ger";
       description = "A lightweight, flexible logging framework";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -11608,7 +11608,7 @@ let
     propagatedBuildInputs = [ ParamsValidate ];
     meta = {
       description = "Log messages to several outputs";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11621,7 +11621,7 @@ let
     };
     meta = {
       description = "Powerful and flexible message logging mechanism";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11635,7 +11635,7 @@ let
      propagatedBuildInputs = [ LogMessage ];
      meta = {
        description = "Simplified interface to Log::Message";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -11657,7 +11657,7 @@ let
      };
      meta = {
        description = "Many-Core Engine for Perl providing parallel processing capabilities";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/marioroy/mce-perl";
      };
   };
@@ -11672,7 +11672,7 @@ let
     meta = {
       homepage = "https://mschilli.github.io/log4perl/";
       description = "Log4j implementation for Perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11688,7 +11688,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/log-dispatch-array";
       description = "Log events to an array (reference)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11704,7 +11704,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Log-Dispatchouli";
       description = "A simple wrapper around Log::Dispatch";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11722,7 +11722,7 @@ let
     '';
     meta = {
       description = "Send messages to a systemd journal";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11736,7 +11736,7 @@ let
     propagatedBuildInputs = [ IOLockedFile ];
     meta = {
       description = "Helps us create simple logs for our application";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11749,11 +11749,11 @@ let
     };
     propagatedBuildInputs = [ FileListing HTMLParser HTTPCookies HTTPDaemon HTTPNegotiate NetHTTP TryTiny WWWRobotRules ];
     # support cross-compilation by avoiding using `has_module` which does not work in miniperl (it requires B native module)
-    postPatch = stdenv.lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
+    postPatch = lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
       substituteInPlace Makefile.PL --replace 'if has_module' 'if 0; #'
     '';
     doCheck = !stdenv.isDarwin;
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "The World-Wide Web library for Perl";
       license = with licenses; [ artistic1 gpl1Plus ];
     };
@@ -11770,7 +11770,7 @@ let
     propagatedBuildInputs = [ LWP ];
     meta = {
       description = "Generate signed OAuth requests";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11783,7 +11783,7 @@ let
     };
     meta = {
       description = "Guess media type for a file or a URL";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestFatal ];
   };
@@ -11799,7 +11799,7 @@ let
     propagatedBuildInputs = [ LWPProtocolHttps ];
     meta = {
       description = "Provides HTTP/CONNECT proxy support for LWP::UserAgent";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -11815,7 +11815,7 @@ let
     doCheck = false; # tries to connect to https://www.apache.org/.
     meta = {
       description = "Provide https support for LWP::UserAgent";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestRequiresInternet ];
   };
@@ -11830,7 +11830,7 @@ let
      propagatedBuildInputs = [ LWP ];
      meta = {
        description = "Legacy HTTP/1.0 support for LWP";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -11845,7 +11845,7 @@ let
     buildInputs = [ ModuleBuildTiny TestFakeHTTPD TestSharedFork TestTCP TestUseAllModules ];
     meta = {
       description = "Override LWP HTTP/HTTPS request's host like /etc/hosts";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       homepage = "https://github.com/masaki/p5-LWP-UserAgent-DNS-Hosts";
     };
   };
@@ -11898,7 +11898,7 @@ let
       url = "mirror://cpan/authors/id/W/WY/WYANT/Mac-Pasteboard-0.009.tar.gz";
       sha256 = "85b1d5e9630973b997c3c1634e2df964d6a8d6cb57d9abe1f7093385cf26cf54";
     };
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "Manipulate Mac OS X pasteboards";
       license = with licenses; [ artistic1 gpl1Plus ];
       platforms = platforms.darwin;
@@ -11916,7 +11916,7 @@ let
     buildInputs = [ TestException ];
     meta = {
       description = "Object Oriented Authentication-Results Headers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ JSON ];
   };
@@ -11955,7 +11955,7 @@ let
     meta = {
       homepage = "https://github.com/coppit/mail-mbox-messageparser";
       description = "A fast and simple mbox folder reader";
-      license = stdenv.lib.licenses.gpl2;
+      license = lib.licenses.gpl2;
       maintainers = with maintainers; [ romildo ];
     };
   };
@@ -11970,7 +11970,7 @@ let
      propagatedBuildInputs = [ IOStringy MIMETypes MailTools URI UserIdentity ];
      meta = {
        description = "Processing MIME messages";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -12005,7 +12005,7 @@ let
     };
     meta = {
       description = "Perl 5 module to talk to a POP3 (RFC1939) server";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12028,7 +12028,7 @@ let
     meta = {
       homepage = "https://github.com/Perl-Email-Project/Mail-Sender";
       description = "(DEPRECATED) module for sending mails with attachments through an SMTP server";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12047,9 +12047,9 @@ let
       perl -I blib/lib -MMail::Sendmail -e 'print "1..1\nok 1\n"'
     '';
     meta = {
-      maintainers = [ maintainers.limeytexan ];
+      maintainers = teams.deshaw.members;
       description = "Simple platform independent mailer";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12070,7 +12070,7 @@ let
     doCheck = false; # The main test performs network access
     meta = {
       description = "An object-oriented implementation of Sender Policy Framework";
-      license = stdenv.lib.licenses.bsd3;
+      license = lib.licenses.bsd3;
     };
   };
 
@@ -12085,7 +12085,7 @@ let
     propagatedBuildInputs = [ TimeDate ];
     meta = {
       description = "Various e-mail related modules";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12099,7 +12099,7 @@ let
      propagatedBuildInputs = [ MailMessage ];
      meta = {
        description = "Email message exchange";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -12112,7 +12112,7 @@ let
     };
     meta = {
       description = "Perl extension for base 85 numbers, as referenced by RFC 1924";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12145,7 +12145,7 @@ let
     meta = {
       homepage = "https://github.com/Grinnz/Math-Calc-Parser";
       description = "Parse and evaluate mathematical expressions";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = with maintainers; [ sgo ];
     };
   };
@@ -12159,7 +12159,7 @@ let
     };
     meta = {
       description = "Human-readable unit-aware calculator";
-      license = with stdenv.lib.licenses; [ artistic1 gpl2 ];
+      license = with lib.licenses; [ artistic1 gpl2 ];
     };
   };
 
@@ -12172,7 +12172,7 @@ let
     };
     meta = {
       description = "Arbitrary size integer/float math package";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12199,7 +12199,7 @@ let
      };
 
      meta = {
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -12235,7 +12235,7 @@ let
     NIX_CFLAGS_LINK = "-L${pkgs.gmp.out}/lib -lgmp";
     meta = {
       description = "High speed arbitrary size integer math";
-      license = with stdenv.lib.licenses; [ lgpl21Plus ];
+      license = with lib.licenses; [ lgpl21Plus ];
     };
   };
 
@@ -12251,7 +12251,7 @@ let
     meta = {
       homepage = "https://github.com/sisyphus/math-gmpz";
       description = "Perl interface to the GMP integer functions";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = with maintainers; [ sgo ];
     };
   };
@@ -12276,7 +12276,7 @@ let
     propagatedBuildInputs = [ MathInt64 ];
     meta = {
       description = "Manipulate 128 bits integers in Perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       broken = stdenv.is32bit; # compiler doesn't support a 128-bit integer type
     };
   };
@@ -12290,7 +12290,7 @@ let
     };
     meta = {
       description = "Manipulate 64 bits integers in Perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12311,7 +12311,7 @@ let
     };
     meta = {
       description = "Perl interface to PARI";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12337,7 +12337,7 @@ let
     meta = {
       homepage = "https://github.com/danaj/Math-Prime-Util";
       description = "Utilities related to prime numbers, including fast sieves and factoring";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
     buildInputs = [ TestWarn ];
@@ -12356,7 +12356,7 @@ let
     meta = {
       homepage = "https://github.com/danaj/Math-Prime-Util-GMP";
       description = "Utilities related to prime numbers, using GMP";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -12372,7 +12372,7 @@ let
     propagatedBuildInputs = [ BytesRandomSecureTiny ];
     meta = {
       description = "Generate a provable prime number, in pure Perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -12398,7 +12398,7 @@ let
     buildInputs = [ TestNoWarnings ];
     meta = {
       description = "Perl interface to the ISAAC PRNG algorithm";
-      license = with stdenv.lib.licenses; [ publicDomain mit artistic2 gpl3 ];
+      license = with lib.licenses; [ publicDomain mit artistic2 gpl3 ];
     };
   };
 
@@ -12427,7 +12427,7 @@ let
     propagatedBuildInputs = [ CryptRandomSource MathRandomISAAC ];
     meta = {
       description = "Cryptographically-secure, cross-platform replacement for rand()";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -12459,7 +12459,7 @@ let
     propagatedBuildInputs = [ DataDumperConcise DateTime ListAllUtils MooXStrictConstructor ];
     meta = {
       description = "Code shared by the MaxMind DB reader and writer modules";
-      license = with stdenv.lib.licenses; [ artistic2 ];
+      license = with lib.licenses; [ artistic2 ];
     };
   };
 
@@ -12474,7 +12474,7 @@ let
     buildInputs = [ PathClass TestBits TestFatal TestNumberDelta TestRequires ];
     meta = {
       description = "Read MaxMind DB files and look up IP addresses";
-      license = with stdenv.lib.licenses; [ artistic2 ];
+      license = with lib.licenses; [ artistic2 ];
     };
   };
 
@@ -12489,7 +12489,7 @@ let
     buildInputs = [ NetWorks PathClass TestFatal TestNumberDelta TestRequires ];
     meta = {
       description = "Fast XS implementation of MaxMind DB reader";
-      license = with stdenv.lib.licenses; [ artistic2 ];
+      license = with lib.licenses; [ artistic2 ];
     };
   };
 
@@ -12505,7 +12505,7 @@ let
     hardeningDisable = [ "format" ];
     meta = {
       description = "Create MaxMind DB database files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12527,7 +12527,7 @@ let
      };
      meta = {
        description = "Expiry plug-in for Memoize that adds LRU cache expiration";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/neilb/Memoize-ExpireLRU";
      };
   };
@@ -12543,7 +12543,7 @@ let
     meta = {
       homepage = "https://github.com/miyagawa/cpanminus";
       description = "A CPAN client";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12558,7 +12558,7 @@ let
     meta = {
       homepage = "https://github.com/miyagawa/cpanminus";
       description = "Legacy internal and client support for Menlo";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12572,7 +12572,7 @@ let
     buildInputs = [ FennecLite TestException ];
     meta = {
       description = "Tools for creating Meta objects to track custom metrics";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12596,7 +12596,7 @@ let
     meta = {
       homepage = "https://github.com/metacpan/metacpan-client";
       description = "A comprehensive, DWIM-featured client to the MetaCPAN API";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = with maintainers; [ sgo ];
     };
   };
@@ -12611,7 +12611,7 @@ let
     propagatedBuildInputs = [ DevelDeclare ];
     meta = {
       description = "Basic method declarations with signatures, without source filters";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12625,7 +12625,7 @@ let
     buildInputs = [ TestFatal ];
     meta = {
       description = "abstract collection of monitoring metrics";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12645,7 +12645,7 @@ let
 
     installTargets = [ "install" ];
 
-    meta = with stdenv.lib; {
+    meta = with lib; {
       homepage = "https://www.mhonarc.org/";
       description = "A mail-to-HTML converter";
       maintainers = with maintainers; [ lovek323 ];
@@ -12662,7 +12662,7 @@ let
     };
     meta = {
       description = "Charset Information for MIME";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12688,7 +12688,7 @@ let
     meta = {
       homepage = "https://metacpan.org/pod/MIME::EncWords";
       description = "Deal with RFC 2047 encoded words (improved)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -12703,7 +12703,7 @@ let
     propagatedBuildInputs = [ EmailDateFormat ];
     meta = {
       description = "Low-calorie MIME generator (DEPRECATED)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12718,7 +12718,7 @@ let
     propagatedBuildInputs = [ LWP MIMELite ];
     meta = {
       description = "Provide routine to transform a HTML page in a MIME-Lite mail";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12733,7 +12733,7 @@ let
     buildInputs = [ TestDeep ];
     meta = {
       description = "class for parsed-and-decoded MIME message";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12746,7 +12746,7 @@ let
     };
     meta = {
       description = "Definition of MIME types";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12761,7 +12761,7 @@ let
     meta = {
       homepage = "https://github.com/mojolicious/minion";
       description = "A high performance job queue for Perl";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -12778,7 +12778,7 @@ let
     meta = {
       homepage = "https://github.com/Grinnz/Minion-Backend-SQLite";
       description = "SQLite backend for Minion job queue";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -12795,7 +12795,7 @@ let
     meta = {
       homepage = "https://github.com/preaction/Minion-Backend-mysql";
       description = "MySQL backend for Minion job queue";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -12811,7 +12811,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/mixin-linewise";
       description = "Write your linewise code for handles; this does the rest";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12824,7 +12824,7 @@ let
     };
     meta = {
       description = "Store multi-level Perl hash structure in single level tied hash";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12839,7 +12839,7 @@ let
      };
      meta = {
        description = "Micro Objects. Mo is less.";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/ingydotnet/mo-pm";
      };
   };
@@ -12853,7 +12853,7 @@ let
      };
      meta = {
        description = "temporarily set Config or XSConfig values";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus artistic2 ];
+       license = with lib.licenses; [ artistic1 gpl1Plus artistic2 ];
      };
   };
 
@@ -12868,7 +12868,7 @@ let
     meta = {
       homepage = "https://github.com/chromatic/Modern-Perl";
       description = "Enable all of the features of Modern Perl with one import";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12881,7 +12881,7 @@ let
     };
     meta = {
       description = "Build and install Perl modules";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12895,7 +12895,7 @@ let
     doCheck = false;
     meta = {
       description = "A collection of modules removed from Module-Build";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12910,7 +12910,7 @@ let
     meta = {
       homepage = "https://github.com/tokuhirom/Module-Build-Pluggable";
       description = "Module::Build meets plugins";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestSharedFork ];
   };
@@ -12926,7 +12926,7 @@ let
     propagatedBuildInputs = [ ModuleBuildPluggable ];
     meta = {
       description = "Generate ppport.h";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12941,7 +12941,7 @@ let
     propagatedBuildInputs = [ ExtUtilsHelpers ExtUtilsInstallPaths ];
     meta = {
       description = "A tiny replacement for Module::Build";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12967,7 +12967,7 @@ let
     perlPreHook = "export LD=$CC";
     meta = {
       description = "A Module::Build class for building XS modules";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12982,7 +12982,7 @@ let
     meta = {
       homepage = "https://github.com/ingydotnet/module-compile-pm";
       description = "Perl Module Compilation";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -12997,7 +12997,7 @@ let
      buildInputs = [ ExtUtilsMakeMakerCPANfile TestFailWarnings ];
      meta = {
        description = "Generate Kwalitee ratings for a distribution";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://cpants.cpanauthors.org";
      };
   };
@@ -13011,7 +13011,7 @@ let
      };
      meta = {
        description = "Parse cpanfile";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/miyagawa/cpanfile";
      };
     buildInputs = [ Filepushd ];
@@ -13028,7 +13028,7 @@ let
      buildInputs = [ TestDeep TestNoWarnings ];
      meta = {
        description = "Find out what modules are used";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -13041,7 +13041,7 @@ let
     };
     meta = {
       description = "Find and use installed modules in a (sub)category";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13056,7 +13056,7 @@ let
     propagatedBuildInputs = [ ModuleRuntime TryTiny ];
     meta = {
       description = "Loads one of several alternate underlying implementations for a module";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -13070,7 +13070,7 @@ let
     buildInputs = [ TestPod TestPodCoverage ];
     meta = {
       description = "Information about Perl modules";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ BUtils ];
   };
@@ -13085,7 +13085,7 @@ let
     propagatedBuildInputs = [ FileRemove ModuleBuild ModuleScanDeps YAMLTiny ];
     meta = {
       description = "Standalone, extensible Perl module installer";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13099,7 +13099,7 @@ let
     propagatedBuildInputs = [ ModuleInstall ];
     meta = {
       description = "Declare author-only dependencies";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13113,7 +13113,7 @@ let
     propagatedBuildInputs = [ ModuleInstall ];
     meta = {
       description = "Designate tests only run by module authors";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13129,7 +13129,7 @@ let
     meta = {
       homepage = "https://github.com/bingos/module-install-githubmeta/";
       description = "A Module::Install extension to include GitHub meta information in META.yml";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -13146,7 +13146,7 @@ let
     meta = {
       homepage = "https://github.com/bingos/module-install-readmefrompod/";
       description = "A Module::Install extension to automatically convert POD to a README";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -13163,7 +13163,7 @@ let
     meta = {
       homepage = "http://search.cpan.org/dist/Module-Install-ReadmeMarkdownFromPod/";
       description = "Create README.mkdn from POD";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -13178,7 +13178,7 @@ let
     buildInputs = [ PathClass ];
     meta = {
       description = "Automatically sets repository URL from svn/svk/Git checkout";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -13194,7 +13194,7 @@ let
     propagatedBuildInputs = [ ParamsUtil ];
     meta = {
       description = "Parse and examine a Perl distribution MANIFEST file";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13209,7 +13209,7 @@ let
     meta = {
       homepage = "https://github.com/neilbowers/Module-Path";
       description = "Get the full path to a locally installed module";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13226,7 +13226,7 @@ let
     ];
     meta = {
       description = "Automatically give your module the ability to have plugins";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ AppFatPacker ];
   };
@@ -13251,7 +13251,7 @@ let
     buildInputs = [ PathClass ];
     meta = {
       description = "Refresh %INC files when updated on disk";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13264,7 +13264,7 @@ let
     };
     meta = {
       description = "Runtime module handling";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13279,7 +13279,7 @@ let
     meta = {
       homepage = "https://github.com/karenetheridge/Module-Runtime-Conflicts";
       description = "Provide information on conflicts for Module::Runtime";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13293,7 +13293,7 @@ let
     buildInputs = [ TestRequires ];
     meta = {
       description = "Recursively scan Perl code for dependencies";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13307,7 +13307,7 @@ let
     buildInputs = [ IPCRun ];
     meta = {
       description = "Module signature file manipulation";
-      license = stdenv.lib.licenses.cc0;
+      license = lib.licenses.cc0;
     };
   };
 
@@ -13320,7 +13320,7 @@ let
     };
     meta = {
       description = "Module name tools and transformations";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13343,7 +13343,7 @@ let
     };
     meta = {
       description = "Report versions of all modules in memory";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13356,7 +13356,7 @@ let
     };
     meta = {
       description = "Minimalistic HTML/XML DOM parser with CSS selectors";
-      license = with stdenv.lib.licenses; [ artistic2 ];
+      license = with lib.licenses; [ artistic2 ];
       homepage = "https://github.com/Grinnz/Mojo-DOM58";
     };
   };
@@ -13373,7 +13373,7 @@ let
     doCheck = false; # would try to start Apache HTTP server
     meta = {
       description = "Embed a Perl interpreter in the Apache HTTP server";
-      license = stdenv.lib.licenses.asl20;
+      license = lib.licenses.asl20;
     };
   };
 
@@ -13387,7 +13387,7 @@ let
     meta = {
       homepage = "https://mojolicious.org";
       description = "Real-time web framework";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = with maintainers; [ thoughtpolice sgo ];
     };
   };
@@ -13403,7 +13403,7 @@ let
     meta = {
       homepage = "https://github.com/jhthorsen/mojolicious-plugin-assetpack";
       description = "Compress and convert css, less, sass, javascript and coffeescript files";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = with maintainers; [ sgo ];
     };
   };
@@ -13418,7 +13418,7 @@ let
     propagatedBuildInputs = [ Mojolicious ];
     meta = {
       description = "Globally Recognized Avatars for Mojolicious";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = with maintainers; [ sgo ];
     };
   };
@@ -13434,7 +13434,7 @@ let
     meta = {
       homepage = "https://github.com/sharifulin/Mojolicious-Plugin-Mail";
       description = "Mojolicious Plugin for send mail";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -13450,7 +13450,7 @@ let
     meta = {
       homepage = "https://github.com/jhthorsen/mojolicious-plugin-openapi";
       description = "OpenAPI / Swagger plugin for Mojolicious";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -13466,7 +13466,7 @@ let
     meta = {
       homepage = "https://github.com/mojolicious/mojo-status";
       description = "Mojolicious server status plugin";
-      license = with stdenv.lib.licenses; [ artistic2 ];
+      license = with lib.licenses; [ artistic2 ];
       maintainers = [ maintainers.thoughtpolice ];
     };
   };
@@ -13482,7 +13482,7 @@ let
     meta = {
       homepage = "https://github.com/marcusramberg/mojolicious-plugin-textexceptions";
       description = "Render exceptions as text in command line user agents";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -13498,7 +13498,7 @@ let
     meta = {
       homepage = "https://github.com/jhthorsen/mojolicious-plugin-webpack";
       description = "Mojolicious <3 Webpack";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = with maintainers; [ sgo ];
     };
   };
@@ -13514,7 +13514,7 @@ let
     meta = {
       homepage = "https://github.com/jhthorsen/mojo-redis";
       description = "Redis driver based on Mojo::IOLoop";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -13530,7 +13530,7 @@ let
     propagatedBuildInputs = [ CryptOpenSSLRSA CryptOpenSSLX509 DataGUID Mojolicious XMLCanonicalizeXML ];
     meta = {
       description = "A SAML2 toolkit using the Mojo toolkit";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -13547,7 +13547,7 @@ let
     meta = {
       homepage = "https://github.com/Grinnz/Mojo-SQLite";
       description = "A tiny Mojolicious wrapper for SQLite";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -13564,7 +13564,7 @@ let
     meta = {
       homepage = "https://github.com/jhthorsen/mojo-mysql";
       description = "Mojolicious and Async MySQL/MariaDB";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -13579,7 +13579,7 @@ let
     propagatedBuildInputs = [ IOPipely Mojolicious ];
     meta = {
       description = "Run blocking functions asynchronously by forking";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13595,7 +13595,7 @@ let
     meta = {
       homepage = "https://github.com/jberger/Mojo-JWT";
       description = "JSON Web Token the Mojo way";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -13612,7 +13612,7 @@ let
     meta = {
       homepage = "https://github.com/mojolicious/mojo-pg";
       description = "Mojolicious <3 PostgreSQL";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -13630,7 +13630,7 @@ let
     meta = {
       homepage = "https://github.com/nicomen/mojo-useragent-cached";
       description = "Caching, Non-blocking I/O HTTP, Local file and WebSocket user agent";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -13648,7 +13648,7 @@ let
         A family of perl modules to streamline writing Naemon,
         Nagios, Icinga or Shinken (and compatible) plugins
       '';
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13661,7 +13661,7 @@ let
     };
     meta = {
       description = "Portably create pipe() or pipe-like handles";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13676,7 +13676,7 @@ let
     propagatedBuildInputs = [ ClassMethodModifiers ModuleRuntime RoleTiny SubQuote ];
     meta = {
       description = "Minimalist Object Orientation (with Moose compatibility)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13695,7 +13695,7 @@ let
     meta = {
       homepage = "http://moose.perl.org/";
       description = "A postmodern object system for Perl 5";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.eelco ];
     };
   };
@@ -13711,7 +13711,7 @@ let
     propagatedBuildInputs = [ DataPerl Moo ];
     meta = {
       description = "NativeTrait-like behavior for Moo";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13725,7 +13725,7 @@ let
      propagatedBuildInputs = [ Moo ];
      meta = {
        description = "provide API used in translator modules without translating";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -13739,7 +13739,7 @@ let
      propagatedBuildInputs = [ LocaleTextDomainOO MooXLocalePassthrough ];
      meta = {
        description = "provide API used in translator modules without translating";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -13755,7 +13755,7 @@ let
      preCheck = "rm t/16-namespace_clean.t"; # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=942275
      meta = {
        description = "Explicit Options eXtension for Object Class";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -13770,7 +13770,7 @@ let
      buildInputs = [ Moo ];
      meta = {
        description = "turn your Moo class into singleton";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -13785,7 +13785,7 @@ let
      buildInputs = [ TestFatal ];
      meta = {
        description = "Make your Moo-based object constructors blow up on unknown attributes.";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -13811,7 +13811,7 @@ let
     propagatedBuildInputs = [ MooXTypesMooseLike ];
     meta = {
       description = "Moo types for numbers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13826,7 +13826,7 @@ let
     propagatedBuildInputs = [ ListMoreUtils Moose SyntaxKeywordJunction autobox namespaceautoclean ];
     meta = {
       description = "Autoboxed wrappers for Native Perl datatypes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13841,7 +13841,7 @@ let
     propagatedBuildInputs = [ Moose ];
     meta = {
       description = "Abstract base classes for Moose";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13868,7 +13868,7 @@ let
     meta = {
       homepage = "https://github.com/moose/MooseX-App-Cmd";
       description = "Mashes up MooseX::Getopt and App::Cmd";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13883,7 +13883,7 @@ let
     meta = {
       homepage = "https://github.com/Getty/p5-moox";
       description = "Using Moo and MooX:: packages the most lazy way";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13898,7 +13898,7 @@ let
     buildInputs = [ TestFatal ];
     meta = {
       description = "easy aliasing of methods and attributes in Moo";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13913,7 +13913,7 @@ let
      buildInputs = [ CaptureTiny ];
      meta = {
        description = "Giving an easy Moo style way to make command organized CLI apps";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -13928,7 +13928,7 @@ let
     propagatedBuildInputs = [ Moo SubHandlesVia ];
     meta = {
       description = "Easily translate Moose code to Moo";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13942,7 +13942,7 @@ let
     propagatedBuildInputs = [ ConfigAny MouseXConfigFromFile ];
     meta = {
       description = "A Mouse role for setting attributes from a simple configfile";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13955,7 +13955,7 @@ let
     };
     meta = {
       description = "Do use_ok() for all the MANIFESTed modules";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -13969,7 +13969,7 @@ let
     propagatedBuildInputs = [ EnvSanctify FileHomeDir PerlDestructLevel XMLTwig ];
     meta = {
       description = "Generate suppressions, analyse and test any command with valgrind.";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       homepage = "http://search.cpan.org/dist/Test-Valgrind/";
     };
   };
@@ -13985,7 +13985,7 @@ let
     propagatedBuildInputs = [ MouseXTypes PathClass ];
     meta = {
       description = "A Path::Class type library for Mouse";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14000,7 +14000,7 @@ let
     propagatedBuildInputs = [ AnyMoose ];
     meta = {
       description = "Organize your Mouse types in libraries";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14015,7 +14015,7 @@ let
     propagatedBuildInputs = [ MouseXTypesPathClass ];
     meta = {
       description = "An abstract Mouse role for setting attributes from a configfile";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14031,7 +14031,7 @@ let
     meta = {
       homepage = "https://github.com/gfx/mousex-getopt";
       description = "A Mouse role for processing command line options";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14056,7 +14056,7 @@ let
     propagatedBuildInputs = [ Moose ];
     meta = {
       description = "Extend your attribute interfaces (deprecated)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14083,7 +14083,7 @@ let
     meta = {
       homepage = "https://github.com/moose/MooseX-ConfigFromFile";
       description = "An abstract Moose role for setting attributes from a configfile";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14099,7 +14099,7 @@ let
     meta = {
       homepage = "https://github.com/moose/MooseX-Daemonize";
       description = "Role for daemonizing your Moose based application";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14114,7 +14114,7 @@ let
     propagatedBuildInputs = [ Moose namespaceclean ];
     meta = {
       description = "Emulate Class::Accessor::Fast behavior using Moose attributes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14130,7 +14130,7 @@ let
     meta = {
       homepage = "https://github.com/moose/MooseX-Getopt";
       description = "A Moose role for processing command line options";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14146,7 +14146,7 @@ let
     meta = {
       homepage = "https://github.com/pshangov/moosex-has-options";
       description = "Succinct options for Moose";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14162,7 +14162,7 @@ let
     meta = {
       homepage = "https://github.com/kentfredric/MooseX-Has-Sugar";
       description = "Sugar Syntax for moose 'has' fields";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14178,7 +14178,7 @@ let
     meta = {
       homepage = "https://github.com/moose/MooseX-LazyRequire";
       description = "Required attributes which fail only when trying to use them";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14192,7 +14192,7 @@ let
     propagatedBuildInputs = [ Moose namespaceautoclean ];
     meta = {
       description = "Mark overload code symbols as methods";
-      license = stdenv.lib.licenses.lgpl21;
+      license = lib.licenses.lgpl21;
     };
   };
 
@@ -14208,7 +14208,7 @@ let
     meta = {
       homepage = "https://github.com/karenetheridge/moosex-methodattributes";
       description = "Code attribute introspection";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14223,7 +14223,7 @@ let
     propagatedBuildInputs = [ ListMoreUtils Moose ];
     meta = {
       description = "Easy subclassing of non-Moose classes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14238,7 +14238,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/moosex-oneargnew";
       description = "Teach ->new to accept single, non-hashref arguments";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14263,7 +14263,7 @@ let
     propagatedBuildInputs = [ DevelCaller Moose ParamsValidate ];
     meta = {
       description = "An extension of Params::Validate using Moose's types";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14279,7 +14279,7 @@ let
     meta = {
       homepage = "https://github.com/moose/MooseX-Role-Parameterized";
       description = "Roles with composition parameters";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14293,7 +14293,7 @@ let
     propagatedBuildInputs = [ Moose aliased namespaceautoclean ];
     meta = {
       description = "Roles which support overloading";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14309,7 +14309,7 @@ let
     meta = {
       homepage = "https://github.com/moose/MooseX-Runnable";
       description = "Tag a class as a runnable application";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14356,7 +14356,7 @@ let
     propagatedBuildInputs = [ Moose namespaceautoclean ];
     meta = {
       description = "Make your object constructors blow up on unknown attributes";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -14372,7 +14372,7 @@ let
     meta = {
       homepage = "https://github.com/moose/MooseX-Traits";
       description = "Automatically apply roles at object creation time";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14399,7 +14399,7 @@ let
     meta = {
       homepage = "https://github.com/moose/MooseX-Types";
       description = "Organise your Moose types in libraries";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14415,7 +14415,7 @@ let
     meta = {
       homepage = "https://github.com/moose/MooseX-Types-Common";
       description = "A library of commonly used type constraints";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14431,7 +14431,7 @@ let
     meta = {
       homepage = "https://github.com/moose/MooseX-Types-DateTime";
       description = "DateTime related constraints and coercions for Moose";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14447,7 +14447,7 @@ let
     meta = {
       homepage = "https://github.com/moose/MooseX-Types-DateTime-MoreCoercions";
       description = "Extensions to MooseX::Types::DateTime";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14463,7 +14463,7 @@ let
     meta = {
       homepage = "https://github.com/moose/MooseX-Types-LoadableClass";
       description = "ClassName type constraint with coercion to load the class";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14477,7 +14477,7 @@ let
     propagatedBuildInputs = [ MooseXTypes PathClass ];
     meta = {
       description = "A Path::Class type library for Moose";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ ModuleBuildTiny TestNeeds ];
   };
@@ -14494,7 +14494,7 @@ let
     meta = {
       homepage = "https://github.com/karenetheridge/moosex-types-path-tiny";
       description = "Path::Tiny types and coercions for Moose";
-      license = stdenv.lib.licenses.asl20;
+      license = lib.licenses.asl20;
     };
   };
 
@@ -14508,7 +14508,7 @@ let
     propagatedBuildInputs = [ MooseXTypes ];
     meta = {
       description = "Moose types that check against Perl syntax";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14523,7 +14523,7 @@ let
     meta = {
       homepage = "https://github.com/dagolden/moosex-types-stringlike";
       description = "Moose type constraints for strings or string-like objects";
-      license = stdenv.lib.licenses.asl20;
+      license = lib.licenses.asl20;
     };
   };
 
@@ -14538,7 +14538,7 @@ let
     propagatedBuildInputs = [ DevelPartialDump MooseXTypes ];
     meta = {
       description = "MooseX::Types::Structured - Structured Type Constraints for Moose";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14554,7 +14554,7 @@ let
     meta = {
       homepage = "https://github.com/moose/MooseX-Types-URI";
       description = "URI related types and coercions for Moose";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14567,7 +14567,7 @@ let
     };
     meta = {
       description = "Manipulate / fetch info from MP3 audio files";
-      license = with stdenv.lib.licenses; [ artistic1 ];
+      license = with lib.licenses; [ artistic1 ];
     };
   };
 
@@ -14589,7 +14589,7 @@ let
     outputs = [ "out" ];
     meta = {
       description = "Module for reading tags of MP3 audio files";
-      license = with stdenv.lib.licenses; [ artistic1 ];
+      license = with lib.licenses; [ artistic1 ];
     };
   };
 
@@ -14602,8 +14602,8 @@ let
     };
     buildInputs = [ ModuleBuildXSUtil TestException TestFatal TestLeakTrace TestOutput TestRequires TryTiny ];
     perlPreHook = "export LD=$CC";
-    NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isi686 "-fno-stack-protector";
-    hardeningDisable = stdenv.lib.optional stdenv.isi686 "stackprotector";
+    NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isi686 "-fno-stack-protector";
+    hardeningDisable = lib.optional stdenv.isi686 "stackprotector";
   };
 
   MouseXNativeTraits = buildPerlPackage {
@@ -14617,7 +14617,7 @@ let
     propagatedBuildInputs = [ Mouse ];
     meta = {
       description = "Extend attribute interfaces for Mouse";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14635,7 +14635,7 @@ let
 
     meta = {
       description = "Mozilla's CA cert bundle in PEM format";
-      license = stdenv.lib.licenses.mpl20;
+      license = lib.licenses.mpl20;
     };
   };
 
@@ -14650,7 +14650,7 @@ let
     };
     meta = {
       description = "Mro::* interface compatibility for Perls < 5.9.5";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14661,7 +14661,7 @@ let
       url = "mirror://cpan/authors/id/N/NJ/NJH/MusicBrainz-DiscID-0.03.tar.gz";
       sha256 = "0fjph2q3yp0aa87gckv3391s47m13wbyylj7jb7vqx7hv0pzj0jh";
     };
-    perlPreHook = stdenv.lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
+    perlPreHook = lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
     # Build.PL in this package uses which to find pkg-config -- make it use path instead
     patchPhase = ''sed -ie 's/`which pkg-config`/"pkg-config"/' Build.PL'';
     doCheck = false; # The main test performs network access
@@ -14690,7 +14690,7 @@ let
     propagatedBuildInputs = [ YAMLLibYAML ];
     meta = {
       description = "A simple Mustache Renderer";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14705,7 +14705,7 @@ let
     meta = {
       homepage = "https://github.com/estrabd/mysqldiff";
       description = "Generates a database upgrade instruction set";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -14722,7 +14722,7 @@ let
     meta = {
       homepage = "https://github.com/moose/namespace-autoclean";
       description = "Keep imports out of your namespace";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14736,7 +14736,7 @@ let
     propagatedBuildInputs = [ BHooksEndOfScope PackageStash ];
     meta = {
       description = "Keep imports and functions out of your namespace";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14750,7 +14750,7 @@ let
     meta = {
       homepage = "https://github.com/toddr/Net-Ident";
       description = "Lookup the username on the remote end of a TCP/IP connection";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -14763,7 +14763,7 @@ let
     };
     meta = {
       description = "Manages IPv4 and IPv6 addresses and subnets";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14791,7 +14791,7 @@ let
     buildInputs = [ TestException ];
     meta = {
       description = "Perl interface to the Amazon Elastic Compute Cloud (EC2) environment.";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14819,7 +14819,7 @@ let
     propagatedBuildInputs = [ DataStreamBulk DateTimeFormatHTTP DigestHMAC DigestMD5File FileFindRule LWPUserAgentDetermined MIMETypes MooseXRoleParameterized MooseXStrictConstructor MooseXTypesDateTimeMoreCoercions RefUtil RegexpCommon SafeIsa SubOverride TermEncoding TermProgressBarSimple XMLLibXML ];
     meta = {
       description = "Use the Amazon S3 - Simple Storage Service";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14833,7 +14833,7 @@ let
     propagatedBuildInputs = [ JSON ];
     meta = {
       description = "Manage Amazon S3 policies for HTTP POST forms";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14846,14 +14846,14 @@ let
     };
     buildInputs = [ HTTPCookies TestIdentity TestMetricsAny TestRefcount ];
     propagatedBuildInputs = [ Future HTTPMessage IOAsync MetricsAny StructDumb URI ];
-    preCheck = stdenv.lib.optionalString stdenv.isDarwin ''
+    preCheck = lib.optionalString stdenv.isDarwin ''
       # network tests fail on Darwin/sandbox, so disable these
       rm -f t/20local-connect.t t/22local-connect-pipeline.t t/23local-connect-redir.t
       rm -f t/90rt75615.t t/90rt75616.t t/90rt93232.t
     '';
     meta = {
       description = "Use HTTP with IO::Async";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.zakame ];
     };
   };
@@ -14869,7 +14869,7 @@ let
     buildInputs = [ TestFatal ];
     meta = {
       description = "asyncronously check remote host for reachability";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       homepage = "https://github.com/frioux/Net-Async-Ping";
     };
   };
@@ -14882,13 +14882,13 @@ let
       sha256 = "000nw7gnj7ks55nib3fiikxx9bfmbla6fimxrbn2z2n7sd187b0d";
     };
     propagatedBuildInputs = [ IOAsync ProtocolWebSocket URI ];
-    preCheck = stdenv.lib.optionalString stdenv.isDarwin ''
+    preCheck = lib.optionalString stdenv.isDarwin ''
       # network tests fail on Darwin/sandbox, so disable these
       rm -f t/02server.t t/03cross.t
     '';
     meta = {
       description = "Use WebSockets with IO::Async";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.zakame ];
     };
   };
@@ -14905,7 +14905,7 @@ let
     propagatedBuildInputs = [ ClassAccessor ClassDataInheritable XMLLibXML ];
     meta = {
       description = "Advanced Message Queue Protocol (de)serialization and representation";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14918,7 +14918,7 @@ let
     };
     meta = {
       description = "Manipulate IPv4/IPv6 netblocks in CIDR notation";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.bjornfor ];
     };
   };
@@ -14947,7 +14947,7 @@ let
     meta = {
       homepage = "https://github.com/metabrainz/CoverArtArchive";
       description = "Query the coverartarchive.org";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14975,7 +14975,7 @@ let
     meta = {
       homepage = "http://www.freedesktop.org/wiki/Software/dbus";
       description = "Extension for the DBus bindings";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -14990,7 +14990,7 @@ let
     makeMakerFlags = "--noonline-tests";
     meta = {
       description = "Perl Interface to the Domain Name System";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -15004,7 +15004,7 @@ let
      propagatedBuildInputs = [ NetDNS ];
      meta = {
        description = "Mock a DNS Resolver object for testing";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
     buildInputs = [ TestException ];
   };
@@ -15018,7 +15018,7 @@ let
     };
     meta = {
       description = "Work with TLD names";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15032,7 +15032,7 @@ let
      buildInputs = [ TestException TestHexString ];
      meta = {
        description = "FastCGI Toolkit";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -15047,7 +15047,7 @@ let
     preCheck = "rm t/13-gethostsubs.t"; # it performs DNS queries
     meta = {
       description = "the base framework for frame crafting";
-      license = with stdenv.lib.licenses; [ artistic1 ];
+      license = with lib.licenses; [ artistic1 ];
     };
   };
 
@@ -15061,7 +15061,7 @@ let
     propagatedBuildInputs = [ NetFrame ];
     meta = {
       description = "Internet Protocol v6 layer object";
-      license = with stdenv.lib.licenses; [ artistic1 ];
+      license = with lib.licenses; [ artistic1 ];
     };
   };
 
@@ -15076,7 +15076,7 @@ let
     propagatedBuildInputs = [ CDDBFile Moo ];
     meta = {
       description = "Perl interface to freedb server(s)";
-      license = with stdenv.lib.licenses; [ artistic1 ];
+      license = with lib.licenses; [ artistic1 ];
     };
   };
 
@@ -15092,7 +15092,7 @@ let
     meta = {
       homepage = "https://github.com/libwww-perl/Net-HTTP";
       description = "Low-level HTTP connection (client)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     doCheck = false; /* wants network */
   };
@@ -15147,7 +15147,7 @@ let
     meta = {
       homepage = "https://metacpan.org/pod/Net::IP::Lite";
       description = "Perl extension for manipulating IPv4/IPv6 addresses";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -15173,7 +15173,7 @@ let
     propagatedBuildInputs = [ MathBase85 NetIPv4Addr ];
     meta = {
       description = "Check and manipulate IPv6 addresses";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15187,7 +15187,7 @@ let
     propagatedBuildInputs = [ NetLDAP ConvertASN1 ];
     meta = {
       description = "LDAP server side protocol handling";
-      license = with stdenv.lib.licenses; [ artistic1 ];
+      license = with lib.licenses; [ artistic1 ];
     };
   };
 
@@ -15200,7 +15200,7 @@ let
     };
     meta = {
       description= "Active Directory Security Identifier manipulation";
-      license = with stdenv.lib.licenses; [ artistic2 ];
+      license = with lib.licenses; [ artistic2 ];
     };
   };
 
@@ -15214,7 +15214,7 @@ let
     propagatedBuildInputs = [ NetLDAP NetLDAPServer TestMore DataDump NetLDAPSID ];
     meta = {
       description= "test Net::LDAP code";
-      license = with stdenv.lib.licenses; [ artistic1 ];
+      license = with lib.licenses; [ artistic1 ];
     };
   };
 
@@ -15242,7 +15242,7 @@ let
     propagatedBuildInputs = [ ClassAccessor ClassDataInheritable DigestHMAC DigestSHA1 LWP ];
     meta = {
       description = "An implementation of the OAuth protocol";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15278,7 +15278,7 @@ let
     propagatedBuildInputs = [ NetDNS ];
     meta = {
       description = "Programmable DNS resolver class for offline emulation of DNS";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15293,7 +15293,7 @@ let
     buildInputs = [ HTTPMessage TestFatal ];
     meta = {
       description = "export monitoring metrics for F<prometheus>";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15310,7 +15310,7 @@ let
     '';
     meta = {
       description = "Simple wrappers around ssh and scp commands.";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ NetSSH StringShellQuote ];
   };
@@ -15341,7 +15341,7 @@ let
     '';
     meta = {
       description = "Secure File Transfer Protocol client";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15355,7 +15355,7 @@ let
      propagatedBuildInputs = [ Coro NetServer ];
      meta = {
        description = "A co-operative multithreaded server using Coro";
-       license = with stdenv.lib.licenses; [ mit ];
+       license = with lib.licenses; [ mit ];
      };
   };
 
@@ -15373,7 +15373,7 @@ let
      propagatedBuildInputs = [ NetServer ServerStarter ];
      meta = {
        description = "A hot-deployable variant of Net::Server::PreFork";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -15428,7 +15428,7 @@ let
     doCheck = false;
     meta = {
       description = "Simple Network Pager Protocol Client";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15445,7 +15445,7 @@ let
     '';
     meta = {
       description = "Simple wrappers around ssh commands.";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15460,7 +15460,7 @@ let
     preCheck = "export HOME=$TMPDIR";
     meta = {
       description = "Perl client Interface to SSH";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15482,7 +15482,7 @@ let
     '';
     meta = {
       description = "Perl extension for using OpenSSL";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -15495,7 +15495,7 @@ let
     };
     meta = {
       description = "Sends statistics to the stats daemon over UDP";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15508,7 +15508,7 @@ let
     };
     meta = {
       description = "Interact with TELNET port or other TCP ports";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15525,7 +15525,7 @@ let
     meta = {
       homepage = "https://github.com/semifor/Net-Twitter-Lite";
       description = "A perl interface to the Twitter API";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15556,7 +15556,7 @@ let
     buildInputs = [ TestFatal ];
     meta = {
       description = "Sane APIs for IP addresses and networks";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15587,7 +15587,7 @@ let
     };
     meta = {
       description = "Perl extension for formatting numbers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15601,7 +15601,7 @@ let
     propagatedBuildInputs = [ Moose ];
     meta = {
       description = "Perl extension to model fractions";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15614,7 +15614,7 @@ let
      };
      meta = {
        description = "Number::Misc - handy utilities for numbers";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -15629,7 +15629,7 @@ let
     buildInputs = [ TestLectroTest ];
     meta = {
       description = "Numbers with error propagation and scientific rounding";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15642,7 +15642,7 @@ let
     };
     propagatedBuildInputs = [ DigestHMAC ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.pSub ];
     };
   };
@@ -15656,7 +15656,7 @@ let
     };
     meta = {
       description = "Per object accessors";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15670,7 +15670,7 @@ let
     propagatedBuildInputs = [ ExceptionClass ];
     meta = {
       description = "Comprehensive inside-out object support module";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15683,7 +15683,7 @@ let
     };
     meta = {
       description = "Generate cryptographic signatures for objects";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15699,7 +15699,7 @@ let
     doCheck = false;
     meta = {
       description = "An object-oriented interface to Ogg Vorbis information and comment fields";
-      license = with stdenv.lib.licenses; [ artistic1 ];
+      license = with lib.licenses; [ artistic1 ];
     };
   };
 
@@ -15712,7 +15712,7 @@ let
     };
     meta = {
       description = "Read and write OLE storage files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15725,7 +15725,7 @@ let
     };
     meta = {
       description = "More Opcodes information from opnames.h and opcode.h";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15740,7 +15740,7 @@ let
     meta = {
       homepage = "https://github.com/jhthorsen/openapi-client";
       description = "A client for talking to an Open API powered server";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -15760,7 +15760,7 @@ let
 
     configurePhase = ''
       substituteInPlace Makefile.PL \
-        --replace "@@libpaths@@" '${stdenv.lib.concatStringsSep "\n" (map (f: "-L${f}/lib") buildInputs)}'
+        --replace "@@libpaths@@" '${lib.concatStringsSep "\n" (map (f: "-L${f}/lib") buildInputs)}'
 
       cp -v ${../development/perl-modules/perl-opengl-gl-extensions.txt} utils/glversion.txt
 
@@ -15800,7 +15800,7 @@ let
     };
     meta = {
       description = "Perl SSH client package implemented on top of OpenSSH";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15825,14 +15825,14 @@ let
     # https://github.com/NixOS/nixpkgs/pull/104889#issuecomment-737144513
     preCheck = ''
       rm t/35_log.t
-    '' + stdenv.lib.optionalString stdenv.isDarwin ''
+    '' + lib.optionalString stdenv.isDarwin ''
       rm t/30_connect.t
       rm t/45_class.t
     '';
     meta = {
-      maintainers = with maintainers; [ limeytexan ztzg ];
+      maintainers = teams.deshaw.members ++ [ maintainers.ztzg ];
       homepage = "https://github.com/mark-5/p5-net-zookeeper";
-      license = stdenv.lib.licenses.asl20;
+      license = lib.licenses.asl20;
     };
   };
 
@@ -15845,7 +15845,7 @@ let
     };
     meta = {
       description = "List constants defined in a package";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15860,7 +15860,7 @@ let
     propagatedBuildInputs = [ PackageStash ParamsUtil SubInstall SubName ];
     meta = {
       description = "Manage deprecation warnings for your distribution";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -15873,7 +15873,7 @@ let
     };
     meta = {
       description = "Utilities to read and manipulate patches and CVS";
-      license = with stdenv.lib.licenses; [ artistic1 ];
+      license = with lib.licenses; [ artistic1 ];
     };
   };
 
@@ -15888,7 +15888,7 @@ let
     propagatedBuildInputs = [ DistCheckConflicts ModuleImplementation ];
     meta = {
       description = "Routines for manipulating stashes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15902,7 +15902,7 @@ let
     buildInputs = [ TestFatal TestRequires ];
     meta = {
       description = "Faster and more correct implementation of the Package::Stash API";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15918,7 +15918,7 @@ let
     meta = {
       homepage = "http://gtk2-perl.sourceforge.net/";
       description = "Layout and render international text";
-      license = stdenv.lib.licenses.lgpl21Plus;
+      license = lib.licenses.lgpl21Plus;
     };
   };
 
@@ -15933,7 +15933,7 @@ let
     meta = {
       homepage = "https://github.com/dluxhu/perl-parallel-forkmanager";
       description = "A simple parallel processing fork manager";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ Moo ];
   };
@@ -15949,7 +15949,7 @@ let
     meta = {
       homepage = "https://github.com/skaji/Parallel-Pipes";
       description = "Parallel processing using pipe(2) for communication and synchronization";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.zakame ];
     };
   };
@@ -15965,7 +15965,7 @@ let
     propagatedBuildInputs = [ ClassAccessorLite ListMoreUtils ProcWait3 ScopeGuard SignalMask ];
     meta = {
       description = "A simple prefork server framework";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -15976,7 +15976,7 @@ let
       url = "mirror://cpan/authors/id/Z/ZE/ZEFRAM/Params-Classify-0.015.tar.gz";
       sha256 = "052r198xyrsv8wz21gijdigz2cgnidsa37nvyfzdiz4rv1fc33ir";
     };
-    perlPreHook = stdenv.lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
+    perlPreHook = lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
   };
 
   ParamsUtil = buildPerlPackage {
@@ -15988,7 +15988,7 @@ let
     };
     meta = {
       description = "Simple, compact and correct param-checking functions";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16004,7 +16004,7 @@ let
     perlPreHook = "export LD=$CC";
     meta = {
       description = "Validate method/function parameters";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -16019,7 +16019,7 @@ let
      buildInputs = [ Specio Test2PluginNoWarnings Test2Suite TestWithoutModule ];
      meta = {
        description = "Build an optimized subroutine parameter validator once, use it forever";
-       license = with stdenv.lib.licenses; [ artistic2 ];
+       license = with lib.licenses; [ artistic2 ];
      };
   };
 
@@ -16038,8 +16038,8 @@ let
     '';
     meta = {
       description = "General function library for safer, more secure programming";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
-      maintainers = [ maintainers.limeytexan ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = teams.deshaw.members;
     };
   };
 
@@ -16066,7 +16066,7 @@ let
      buildInputs = [ PathTiny ];
      meta = {
        description = "interface to PAUSE's module permissions file (06perms.txt)";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/neilb/PAUSE-Permissions";
      };
   };
@@ -16088,7 +16088,7 @@ let
       sha256 = "0ad78qri4sg9agghqdm83xsjgks94yvffs23kppy7mqjy8gwwjxn";
     };
     propagatedBuildInputs = [ IOStringy LWP ];
-    meta = with stdenv.lib; {
+    meta = with lib; {
       license = with licenses; [ artistic1 gpl1Plus ];
     };
   };
@@ -16103,7 +16103,7 @@ let
     meta = {
       homepage = "https://github.com/bingos/parse-irc";
       description = "A parser for the IRC protocol";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = with maintainers; [ sgo ];
     };
   };
@@ -16119,7 +16119,7 @@ let
      buildInputs = [ ExtUtilsMakeMakerCPANfile TestUseAllModules ];
      meta = {
        description = "parses local .pm files as PAUSE does";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -16133,8 +16133,8 @@ let
     propagatedBuildInputs = [ ClassEHierarchy Paranoid ];
     meta = {
       description = "Parser/Generator of human-readable conf files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
-      maintainers = [ maintainers.limeytexan ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = teams.deshaw.members;
     };
   };
 
@@ -16148,7 +16148,7 @@ let
      buildInputs = [ ExtUtilsMakeMakerCPANfile ];
      meta = {
        description = "parses .pm file as PAUSE does";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -16161,7 +16161,7 @@ let
     };
     meta = {
       description = "Generate Recursive-Descent Parsers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16184,7 +16184,7 @@ let
     propagatedBuildInputs = [ FileSlurpTiny ];
     meta = {
       description = "build simple recursive-descent parsers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16197,7 +16197,7 @@ let
     };
     meta = {
       description = "Perl extension for generating and using LALR parsers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16210,7 +16210,7 @@ let
     };
     meta = {
       description = "Cross-platform path specification manipulation";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16225,7 +16225,7 @@ let
     buildInputs = [ Filepushd PathTiny TestDeep TestFilename ];
     meta = {
       description = "Iterative, recursive file finder";
-      license = with stdenv.lib.licenses; [ asl20 ];
+      license = with lib.licenses; [ asl20 ];
       homepage = "https://github.com/dagolden/Path-Iterator-Rule";
     };
   };
@@ -16239,7 +16239,7 @@ let
     };
     meta = {
       description = "File path utility";
-      license = stdenv.lib.licenses.asl20;
+      license = lib.licenses.asl20;
     };
     preConfigure =
       ''
@@ -16273,7 +16273,7 @@ let
     meta = {
       homepage = "https://github.com/dagolden/PBKDF2-Tiny";
       description = "Minimalist PBKDF2 (RFC 2898) with HMAC-SHA1 or HMAC-SHA2";
-      license = stdenv.lib.licenses.asl20;
+      license = lib.licenses.asl20;
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -16287,13 +16287,13 @@ let
     };
     buildInputs = [ pkgs.pcsclite ];
     nativeBuildInputs = [ pkgs.pkgconfig ];
-    NIX_CFLAGS_LINK = "-L${stdenv.lib.getLib pkgs.pcsclite}/lib -lpcsclite";
+    NIX_CFLAGS_LINK = "-L${lib.getLib pkgs.pcsclite}/lib -lpcsclite";
     # tests fail; look unfinished
     doCheck = false;
     meta = {
       homepage = "http://ludovic.rousseau.free.fr/softwares/pcsc-perl/";
       description = "Communicate with a smart card using PC/SC";
-      license = stdenv.lib.licenses.gpl2Plus;
+      license = lib.licenses.gpl2Plus;
       maintainers = with maintainers; [ abbradar ];
     };
   };
@@ -16309,7 +16309,7 @@ let
     propagatedBuildInputs = [ FontTTF ];
     meta = {
       description = "Facilitates the creation and modification of PDF files";
-      license = stdenv.lib.licenses.lgpl21Plus;
+      license = lib.licenses.lgpl21Plus;
     };
   };
 
@@ -16353,8 +16353,8 @@ let
     meta = {
       homepage = "http://pdl.perl.org/";
       description = "Perl Data Language";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
-      platforms = stdenv.lib.platforms.linux;
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      platforms = lib.platforms.linux;
     };
   };
 
@@ -16369,7 +16369,7 @@ let
     meta = {
       homepage = "https://github.com/ingydotnet/pegex-pm";
       description = "Acmeist PEG Parser Framework";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ FileShareDirInstall XXX ];
   };
@@ -16394,7 +16394,7 @@ let
     };
     meta = {
       description = "List possible $^O ($OSNAME) values, with description";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16410,7 +16410,7 @@ let
     meta = {
       homepage = "http://perlcritic.com";
       description = "Critique Perl source code for best-practices";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16424,7 +16424,7 @@ let
     propagatedBuildInputs = [ PerlCritic Readonly namespaceautoclean ];
     meta = {
       description = "Policies for Perl::Critic concerned with using Moose";
-      license = stdenv.lib.licenses.artistic1;
+      license = lib.licenses.artistic1;
     };
   };
 
@@ -16448,7 +16448,7 @@ let
     };
     meta = {
       description = "Querying your filehandle's capabilities";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16472,7 +16472,7 @@ let
     NIX_CFLAGS_LINK = "-L${pkgs.zlib.out}/lib -lz";
     meta = {
       description = "Perl extension to provide a PerlIO layer to gzip/gunzip";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16486,7 +16486,7 @@ let
     buildInputs = [ TestException ];
     meta = {
       description = "Fast and correct UTF-8 IO";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16526,7 +16526,7 @@ let
     buildInputs = [ ModuleBuildTiny TestSharedFork TestTCP ];
     meta = {
       description = "A PerlIO layer that adds read & write timeout to a handle";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16542,8 +16542,8 @@ let
     meta = {
       homepage = "http://ldap.perl.org/";
       description = "LDAP client library";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
-      maintainers = [ maintainers.limeytexan ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = teams.deshaw.members;
     };
   };
 
@@ -16571,7 +16571,7 @@ let
     };
     meta = {
       description = "Indent and reformat perl scripts";
-      license = stdenv.lib.licenses.gpl2Plus;
+      license = lib.licenses.gpl2Plus;
     };
   };
 
@@ -16596,8 +16596,8 @@ let
     };
     meta = {
       description = "Pure-Perl Core-Only replacement for pkg-config";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
-      maintainers = [ maintainers.limeytexan ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = teams.deshaw.members;
     };
   };
 
@@ -16613,7 +16613,7 @@ let
     meta = {
       homepage = "https://github.com/plack/Plack";
       description = "Perl Superglue for Web frameworks and Web Servers (PSGI toolkit)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16628,7 +16628,7 @@ let
      buildInputs = [ TestRequires TestSharedFork TestTCP ];
      meta = {
        description = "proxy requests";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -16643,7 +16643,7 @@ let
      buildInputs = [ LWP ModuleBuildTiny TestSharedFork TestTCP ];
      meta = {
        description = "Digest authentication";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/miyagawa/Plack-Middleware-Auth-Digest";
      };
   };
@@ -16659,7 +16659,7 @@ let
      buildInputs = [ ModuleBuildTiny TestRequires ];
      meta = {
        description = "Write logs to Firebug or Webkit Inspector";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/miyagawa/Plack-Middleware-ConsoleLogger";
      };
   };
@@ -16676,7 +16676,7 @@ let
     meta = {
       homepage = "https://github.com/miyagawa/Plack-Middleware-Debug";
       description = "Display information about the current request/response";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16691,7 +16691,7 @@ let
      buildInputs = [ TestRequires TestSharedFork TestTCP ];
      meta = {
        description = "Compress response body with Gzip or Deflate";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -16706,7 +16706,7 @@ let
     meta = {
       homepage = "https://github.com/Sweet-kid/Plack-Middleware-FixMissingBodyInRedirect";
       description = "Plack::Middleware which sets body for redirect response, if it's not already set";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16720,7 +16720,7 @@ let
      propagatedBuildInputs = [ Plack ];
      meta = {
        description = "modify HTTP response headers";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -16734,7 +16734,7 @@ let
     propagatedBuildInputs = [ Plack ];
     meta = {
       description = "Override REST methods to Plack apps via POST";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16749,7 +16749,7 @@ let
     meta = {
       homepage = "https://github.com/Sweet-kid/Plack-Middleware-RemoveRedundantBody";
       description = "Plack::Middleware which sets removes body for HTTP response if it's not required";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16763,7 +16763,7 @@ let
     propagatedBuildInputs = [ Plack ];
     meta = {
       description = "Supports app to run as a reverse proxy backend";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16778,7 +16778,7 @@ let
      buildInputs = [ HTTPCookies LWP ModuleBuildTiny TestFatal TestRequires TestSharedFork TestTCP ];
      meta = {
        description = "Middleware for session management";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/plack/Plack-Middleware-Session";
      };
   };
@@ -16795,7 +16795,7 @@ let
     meta = {
       homepage = "https://github.com/perl-catalyst/Plack-Test-ExternalServer";
       description = "Run HTTP tests on external live servers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16813,9 +16813,9 @@ let
     # not present (see below).
     propagatedBuildInputs = [ pkgs.cacert IOPipely IOTty POETestLoops ];
     meta = {
-      maintainers = [ maintainers.limeytexan ];
+      maintainers = teams.deshaw.members;
       description = "Portable multitasking and networking framework for any event loop";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
     preCheck = ''
       set -x
@@ -16843,9 +16843,9 @@ let
       sha256 = "0yx4wsljfmdzsiv0ni98x6lw975cm82ahngbwqvzv60wx5pwkl5y";
     };
     meta = {
-      maintainers = [ maintainers.limeytexan ];
+      maintainers = teams.deshaw.members;
       description = "Reusable tests for POE::Loop authors";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -16866,7 +16866,7 @@ let
     meta = {
       homepage = "https://github.com/adamkennedy/PPI";
       description = "Parse, Analyze and Manipulate Perl (without perl)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16880,7 +16880,7 @@ let
     propagatedBuildInputs = [ PPI Readonly ];
     meta = {
       description = "Parse Perl string literals and string-literal-like things.";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16894,7 +16894,7 @@ let
     propagatedBuildInputs = [ PPI ];
     meta = {
       description = "Parse regular expressions";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16909,7 +16909,7 @@ let
     propagatedBuildInputs = [ ExceptionClass PPI Readonly ];
     meta = {
       description = "Extensions to L<PPI|PPI>";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16933,7 +16933,7 @@ let
     };
     meta = {
       description = "Perl extension to access the unix process table";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16947,7 +16947,7 @@ let
     propagatedBuildInputs = [ ProcProcessTable ];
     meta = {
       description = "Find processes by name, PID, or some other attributes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16968,7 +16968,7 @@ let
       sha256 = "4c8f0a924b19ad78a13da73fe0fb306d32a7b9d10a332c523087fc83a209a8c4";
     };
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -16981,7 +16981,7 @@ let
     };
     meta = {
       description = "Perl extension for wait3 system call";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17005,7 +17005,7 @@ let
     meta = {
       homepage = "https://github.com/und3f/protocol-redis";
       description = "Redis protocol parser/encoder with asynchronous capabilities";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -17021,7 +17021,7 @@ let
     meta = {
       homepage = "https://github.com/Grinnz/Protocol-Redis-Faster";
       description = "Optimized pure-perl Redis protocol parser/encoder";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -17086,7 +17086,7 @@ let
     meta = {
       homepage = "https://github.com/neilbowers/Perl-MinimumVersion";
       description = "Find a minimum required version of perl for Perl code";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17101,7 +17101,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Perl-PrereqScanner";
       description = "A tool to scan your Perl code for its prerequisites";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17116,7 +17116,7 @@ let
     buildInputs = [ ExtUtilsMakeMakerCPANfile TestFailWarnings TestUseAllModules ];
     meta = {
       description = "a tool to scan your Perl code for its prerequisites";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17130,7 +17130,7 @@ let
     propagatedBuildInputs = [ FileSlurpTiny ];
     meta = {
       description = "Parse and manipulate Perl version strings";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17144,7 +17144,7 @@ let
     propagatedBuildInputs = [ IOString TaskWeaken PodParser ];
     meta = {
       description = "An abstract, tree-based interface to perl POD documents";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17178,7 +17178,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/pod-coverage-trustpod";
       description = "Allow a module's pod to contain Pod::Coverage hints";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17194,7 +17194,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Pod-Elemental";
       description = "Work with nestable Pod elements";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17210,7 +17210,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Pod-Elemental-PerlMunger";
       description = "A thing that takes a string of Perl and rewrites its documentation";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17224,7 +17224,7 @@ let
     propagatedBuildInputs = [ MixinLinewise ];
     meta = {
       description = "Read a POD document as a series of trivial events";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestDeep ];
   };
@@ -17238,7 +17238,7 @@ let
     };
     meta = {
       description = "Modules for parsing/translating POD format documents";
-      license = stdenv.lib.licenses.artistic1;
+      license = lib.licenses.artistic1;
     };
   };
 
@@ -17253,7 +17253,7 @@ let
     meta = {
       homepage = "https://github.com/neilb/Pod-POM";
       description = "POD Object Model";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17267,7 +17267,7 @@ let
     propagatedBuildInputs = [ PodPOM ];
     meta = {
       description = "Generate the TOC of a POD with Pod::POM";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17282,7 +17282,7 @@ let
     meta = {
       homepage = "https://github.com/ktat/Pod-Section";
       description = "Select specified section from Module's POD";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17297,7 +17297,7 @@ let
     meta = {
       homepage = "https://github.com/timj/perl-Pod-LaTeX/tree/master";
       description = "Convert Pod data to formatted Latex";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17310,7 +17310,7 @@ let
     };
     meta = {
       description = "Convert POD data to various other formats";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17325,7 +17325,7 @@ let
     meta = {
       homepage = "http://user42.tuxfamily.org/podlinkcheck/index.html";
       description = "Check POD L<> link references";
-      license = stdenv.lib.licenses.gpl3Plus;
+      license = lib.licenses.gpl3Plus;
     };
   };
 
@@ -17338,7 +17338,7 @@ let
     };
     meta = {
       description = "Optimized module loading for forking or non-forking processes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17351,7 +17351,7 @@ let
     };
     meta = {
       description = "Look up Perl documentation in Pod format";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17365,7 +17365,7 @@ let
     propagatedBuildInputs = [ PodParser ];
     meta = {
       description = "Perl extension for converting Pod to old-style Pod";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17380,7 +17380,7 @@ let
     meta = {
       homepage = "https://github.com/rwstauner/Pod-Markdown";
       description = "Convert POD to Markdown";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ URI ];
   };
@@ -17396,7 +17396,7 @@ let
      buildInputs = [ TestDifferences ];
      meta = {
        description = "Convert POD to Github's specific markdown";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -17429,7 +17429,7 @@ let
      };
      meta = {
        description = "Remove POD from Perl code";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -17444,7 +17444,7 @@ let
      buildInputs = [ TestCmd ];
      meta = {
        description = "a reformatting Pod Processor";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -17460,7 +17460,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Pod-Weaver";
       description = "Weave together a Pod document from an outline";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17473,7 +17473,7 @@ let
      };
      propagatedBuildInputs = [ PodParser ];
      meta = {
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -17498,7 +17498,7 @@ let
     meta = {
       homepage = "https://github.com/kazeburo/POSIX-strftime-Compiler";
       description = "GNU C library compatible strftime for loggers and servers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ ModuleBuildTiny ];
   };
@@ -17510,14 +17510,14 @@ let
       url = "mirror://cpan/authors/id/S/SY/SYP/App-rainbarf-1.4.tar.gz";
       sha256 = "4f139ad35faaf2de0623dc0bb1dd89fa5a431e548bfec87dee194cf0e25cc97d";
     };
-    nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin shortenPerlShebang;
-    postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    postInstall = lib.optionalString stdenv.isDarwin ''
       shortenPerlShebang $out/bin/rainbarf
     '';
     meta = {
       homepage = "https://github.com/creaktive/rainbarf";
       description = "CPU/RAM/battery stats chart bar for tmux (and GNU screen)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus  ];
+      license = with lib.licenses; [ artistic1 gpl1Plus  ];
     };
   };
 
@@ -17532,7 +17532,7 @@ let
     meta = {
       homepage = "http://razor.sourceforge.net/";
       description = "Collaborative, content-based spam filtering network agent";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -17548,7 +17548,7 @@ let
     meta = {
       homepage = "https://github.com/sanko/readonly";
       description = "Facility for creating read-only scalars, arrays, hashes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17574,7 +17574,7 @@ let
     meta = {
       homepage = "https://github.com/PerlRedis/perl-redis";
       description = "Perl binding for Redis database";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -17587,7 +17587,7 @@ let
     };
     meta = {
       description = "Utility functions for checking references";
-      license = with stdenv.lib.licenses; [ mit ];
+      license = with lib.licenses; [ mit ];
     };
   };
 
@@ -17607,7 +17607,7 @@ let
       url = "mirror://cpan/authors/id/A/AB/ABIGAIL/Regexp-Common-2017060201.tar.gz";
       sha256 = "ee07853aee06f310e040b6bf1a0199a18d81896d3219b9b35c9630d0eb69089b";
     };
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "Provide commonly requested regular expressions";
       license = licenses.mit;
     };
@@ -17622,7 +17622,7 @@ let
     };
     propagatedBuildInputs = [ RegexpCommon ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17635,7 +17635,7 @@ let
     };
     meta = {
       description = "Add grammatical parsing features to Perl 5.10 regexes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17658,7 +17658,7 @@ let
     meta = {
       homepage = "https://github.com/toddr/Regexp-Parser";
       description = "Base class for parsing regexes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17683,7 +17683,7 @@ let
     propagatedBuildInputs = [ LWPProtocolHttps ];
     meta = {
       description = "A simple client for interacting with RESTful http/https resources";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17698,7 +17698,7 @@ let
     meta = {
       homepage = "https://jaldhar.github.io/REST-Utils/";
       description = "Utility functions for REST applications";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17731,7 +17731,7 @@ let
     };
     meta = {
       description = "Just roles. Nothing else";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17745,7 +17745,7 @@ let
     propagatedBuildInputs = [ MooseXRoleParameterized StringErrf ];
     meta = {
       description = "A thing with a message method";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17759,7 +17759,7 @@ let
     propagatedBuildInputs = [ Moose ];
     meta = {
       description = "A thing with a list of tags";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17772,7 +17772,7 @@ let
     };
     meta = {
       description = "Roles. Like a nouvelle cuisine portion size slice of Moose";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17786,7 +17786,7 @@ let
     propagatedBuildInputs = [ AnyEvent DataSExpression ];
     meta = {
       description = "An Asynchronous Remote Procedure Stack";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17801,8 +17801,8 @@ let
     doCheck = false; # Tries to open /var/lib/rpm
     meta = {
       description = "Perl bindings for the RPM Package Manager API";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
-      platforms = stdenv.lib.platforms.linux;
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      platforms = lib.platforms.linux;
     };
   };
 
@@ -17827,7 +17827,7 @@ let
     buildInputs = [ CGI HTTPServerSimple TestException ];
     meta = {
       description = "Talk to RT installation using REST protocol";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ DateTimeFormatDateParse Error LWP ParamsValidate ];
   };
@@ -17841,7 +17841,7 @@ let
     };
     meta = {
       description = "Call isa, can, does and DOES safely on things that may not be objects";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17854,7 +17854,7 @@ let
     };
     meta = {
       description = "Common Scalar and List utility subroutines";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17886,7 +17886,7 @@ let
     };
     meta = {
       description = "Lexically-scoped resource management";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17899,7 +17899,7 @@ let
     };
     meta = {
       description = "Act on upper scopes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17916,7 +17916,7 @@ let
     propagatedBuildInputs = [ FileShareDir TieSimple ];
     meta = {
       description = "SDL bindings to Perl";
-      license = stdenv.lib.licenses.lgpl21Plus;
+      license = lib.licenses.lgpl21Plus;
     };
   };
 
@@ -17938,7 +17938,7 @@ let
     buildInputs = [ pkgs.xapian DevelLeak ];
     meta = {
       description = "Perl XS frontend to the Xapian C++ search library";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -17954,7 +17954,7 @@ let
     meta = {
       homepage = "https://github.com/Sereal/Sereal";
       description = "Fast, compact, powerful binary deserialization";
-      license = with stdenv.lib.licenses; [ artistic2 ];
+      license = with lib.licenses; [ artistic2 ];
       maintainers = [ maintainers.thoughtpolice ];
     };
   };
@@ -17970,7 +17970,7 @@ let
     meta = {
       homepage = "https://github.com/Sereal/Sereal";
       description = "Fast, compact, powerful binary deserialization";
-      license = with stdenv.lib.licenses; [ artistic2 ];
+      license = with lib.licenses; [ artistic2 ];
       maintainers = [ maintainers.thoughtpolice ];
     };
   };
@@ -17987,7 +17987,7 @@ let
     meta = {
       homepage = "https://github.com/Sereal/Sereal";
       description = "Fast, compact, powerful binary deserialization";
-      license = with stdenv.lib.licenses; [ artistic2 ];
+      license = with lib.licenses; [ artistic2 ];
       maintainers = [ maintainers.thoughtpolice ];
     };
   };
@@ -17999,7 +17999,7 @@ let
       url = "mirror://cpan/authors/id/C/CO/COOK/Device-SerialPort-1.04.tar.gz";
       sha256 = "1mz9a2qzkz6fbz76wcwmp48h6ckjxpcazb70q03acklvndy5d4nk";
     };
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "Linux/POSIX emulation of Win32::SerialPort functions.";
       license = with licenses; [ artistic1 gpl1Plus ];
     };
@@ -18016,7 +18016,7 @@ let
     meta = {
       homepage = "https://github.com/kazuho/p5-Server-Starter";
       description = "A superdaemon for hot-deploying server programs";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18030,7 +18030,7 @@ let
     meta = {
       homepage = "https://github.com/hoytech/Session-Token";
       description = "Secure, efficient, simple random session token generation";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -18069,7 +18069,7 @@ let
     };
     meta = {
       description = "Unordered collections (sets) of Perl Objects";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -18081,7 +18081,7 @@ let
       sha256 = "07aiqkyi1p22drpcyrrmv7f8qq6fhrxh007achy2vryxyck1bp53";
     };
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18095,7 +18095,7 @@ let
     meta = {
       homepage = "https://github.com/neilb/Smart-Comments";
       description = "Comments that do more than just sit there";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -18119,7 +18119,7 @@ let
     propagatedBuildInputs = [ IPCSignal ];
     meta = {
       description = "Signal masks made easy";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18132,7 +18132,7 @@ let
      };
      meta = {
        description = "Porters stemming algorithm for norwegian.";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -18145,7 +18145,7 @@ let
      };
      meta = {
        description = "Porters stemming algorithm for swedish.";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -18159,7 +18159,7 @@ let
     propagatedBuildInputs = [ ClassInspector IOSessionData LWPProtocolHttps TaskWeaken XMLParser ];
     meta = {
       description = "Perl's Web Services Toolkit";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestWarn XMLParserLite ];
   };
@@ -18176,7 +18176,7 @@ let
     patches = [ ../development/perl-modules/Socket6-sv_undef.patch ];
     meta = {
       description = "IPv6 related part of the C socket.h defines and structure manipulators";
-      license = stdenv.lib.licenses.bsd3;
+      license = lib.licenses.bsd3;
     };
   };
 
@@ -18192,7 +18192,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Software-License";
       description = "Packages that provide templated software licenses";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18207,7 +18207,7 @@ let
      buildInputs = [ TestCheckDeps ];
      meta = {
        description = "Software::License pack for Creative Commons' licenses";
-       license = with stdenv.lib.licenses; [ lgpl3Plus ];
+       license = with lib.licenses; [ lgpl3Plus ];
        homepage = "https://github.com/SineSwiper/Software-License-CCpack";
      };
   };
@@ -18221,7 +18221,7 @@ let
     };
     meta = {
       description = "Sort arrays by one or multiple calculated keys";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18245,7 +18245,7 @@ let
      buildInputs = [ TestFatal TestNeeds ];
      meta = {
        description = "Type constraints and coercions for Perl";
-       license = with stdenv.lib.licenses; [ artistic2 ];
+       license = with lib.licenses; [ artistic2 ];
      };
   };
 
@@ -18260,7 +18260,7 @@ let
      buildInputs = [ Filepushd TestFatal ];
      meta = {
        description = "Path::Tiny types and coercions for Specio";
-       license = with stdenv.lib.licenses; [ asl20 ];
+       license = with lib.licenses; [ asl20 ];
      };
   };
 
@@ -18284,7 +18284,7 @@ let
     meta = {
       homepage = "https://github.com/runrig/spreadsheet-parseexcel/";
       description = "Read information from an Excel file";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18298,7 +18298,7 @@ let
     propagatedBuildInputs = [ OLEStorage_Lite ParseRecDescent ];
     meta = {
       description = "Write to a cross platform Excel binary file";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18313,7 +18313,7 @@ let
     propagatedBuildInputs = [ HashMerge MROCompat Moo ];
     meta = {
       description = "Generate SQL from Perl data structures";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18370,7 +18370,7 @@ let
     propagatedBuildInputs = [ CarpClan DBI FileShareDir Moo PackageVariant ParseRecDescent TryTiny ];
     meta = {
       description = "SQL DDL transformations and more";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18385,7 +18385,7 @@ let
     propagatedBuildInputs = [ ImportInto strictures ];
     meta = {
       description = "Parameterizable packages";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18410,7 +18410,7 @@ let
     doCheck = !stdenv.isDarwin;
     meta = {
       description = "A simple, high-performance PSGI/Plack HTTP server";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18422,9 +18422,9 @@ let
       sha256 = "1y1kn4929k299fbf6sw9lxcsdlq9fvq777p6yrzk591rr9xhkx8h";
     };
     buildInputs = [ LWP ModuleBuildTiny TestRequires TestTCP ];
-    nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin shortenPerlShebang;
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
     propagatedBuildInputs = [ DataDump HTTPParserXS NetServer Plack NetServerSSPrefork ];
-    postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    postInstall = lib.optionalString stdenv.isDarwin ''
       shortenPerlShebang $out/bin/starman
     '';
 
@@ -18432,7 +18432,7 @@ let
     meta = {
       homepage = "https://github.com/miyagawa/Starman";
       description = "High-performance preforking PSGI/Plack web server";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18470,7 +18470,7 @@ let
     };
     meta = {
       description = "Implements the Chi Squared test, using pre-computed tables";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18484,7 +18484,7 @@ let
     meta = {
       #homepage = "http://web-cpan.berlios.de/modules/Statistics-Descriptive/"; # berlios shut down; I found no replacement
       description = "Module of basic descriptive statistical functions";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ ListMoreUtils ];
   };
@@ -18518,7 +18518,7 @@ let
     meta = {
       homepage = "https://plackperl.org";
       description = "Temporary buffer to save bytes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18532,7 +18532,7 @@ let
     meta = {
       homepage = "http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit/strictures.git";
       description = "Turn on strict and make all warnings fatal";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18581,7 +18581,7 @@ let
     meta = {
       homepage = "https://github.com/yappo/p5-String-Diff";
       description = "Simple diff to String";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -18597,7 +18597,7 @@ let
     propagatedBuildInputs = [ StringFormatter ];
     meta = {
       description = "A simple sprintf-like dialect";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18621,7 +18621,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/String-Flogger";
       description = "String munging for loggers";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18642,7 +18642,7 @@ let
       sha256 = "0mlwm0rirv46gj4h072q8gdync5zxxsxy8p028gdyrhczl942dc3";
     };
     propagatedBuildInputs = [ SubExporter ];
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "Build sprintf-like functions of your own";
       license = licenses.gpl2;
     };
@@ -18655,7 +18655,7 @@ let
       url = "mirror://cpan/authors/id/N/NE/NEILB/String-Interpolate-0.32.tar.gz";
       sha256 = "15fwbpz3jdpdgmz794iw9hz2caxrnrw9pdwprxxkanpm92cdhaf7";
     };
-    meta = with stdenv.lib; {
+    meta = with lib; {
       # https://metacpan.org/pod/String::Interpolate
       description = "String::Interpolate - Wrapper for builtin the Perl interpolation engine.";
       license = licenses.gpl1Plus;
@@ -18672,7 +18672,7 @@ let
     };
     meta = {
       description = "Interpolated named arguments in string";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18704,7 +18704,7 @@ let
     propagatedBuildInputs = [ SubExporter ];
     meta = {
       description = "Rewrite strings based on a set of known prefixes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18718,7 +18718,7 @@ let
     doCheck = !stdenv.isDarwin;
     meta = {
       # http://cpansearch.perl.org/src/ROSCH/String-ShellQuote-1.04/README
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18731,7 +18731,7 @@ let
     };
     doCheck = true;
     meta = {
-      license = with stdenv.lib.licenses; [ gpl2 ];
+      license = with lib.licenses; [ gpl2 ];
       description = "Calculate the similarity of two strings";
     };
   };
@@ -18765,7 +18765,7 @@ let
     propagatedBuildInputs = [ SubExporter ];
     meta = {
       description = "A module for when strings are too long to be displayed in";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18780,7 +18780,7 @@ let
     propagatedBuildInputs = [ PadWalker SubExporter TemplateToolkit ];
     meta = {
       description = "Use TT to interpolate lexical variables";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18793,7 +18793,7 @@ let
     };
     meta = {
       description = "String::Util -- String processing utilities";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
 
     buildInputs = [ ModuleBuildTiny ];
@@ -18811,7 +18811,7 @@ let
     buildInputs = [ TestFatal ];
     meta = {
       description = "make simple lightweight record-like structures";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18826,7 +18826,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/sub-exporter";
       description = "A sophisticated exporter for custom-built routines";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18842,7 +18842,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Sub-Exporter-ForMethods";
       description = "Helper routines for using Sub::Exporter to build methods";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18857,7 +18857,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/sub-exporter-globexporter";
       description = "Export shared globs with Sub::Exporter collectors";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18870,7 +18870,7 @@ let
     };
     meta = {
       description = "Only use Sub::Exporter if you need it";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18885,7 +18885,7 @@ let
     buildInputs = [ TestFatal TestRequires ];
     meta = {
       description = "alternative handles_via implementation";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18898,7 +18898,7 @@ let
     };
     meta = {
       description = "Retrieve names of code references";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18912,7 +18912,7 @@ let
     propagatedBuildInputs = [ Importer ];
     meta = {
       description = "Tool for inspecting subroutines";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18925,7 +18925,7 @@ let
     };
     meta = {
       description = "Install subroutines into packages easily";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18940,7 +18940,7 @@ let
     meta = {
       homepage = "https://github.com/p5sagit/Sub-Name";
       description = "(Re)name a sub";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18964,7 +18964,7 @@ let
     buildInputs = [ TestFatal ];
     meta = {
       description = "Efficient generation of subroutines via string eval";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -18978,7 +18978,7 @@ let
     meta = {
       homepage = "https://github.com/dagolden/sub-uplevel";
       description = "Apparently run a function in a higher stack frame";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19001,7 +19001,7 @@ let
     };
     meta = {
       description = "lib/Safe/Hole.pm";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       homepage = "https://github.com/toddr/Safe-Hole";
     };
   };
@@ -19017,7 +19017,7 @@ let
     meta = {
       homepage = "https://github.com/ingydotnet/swim-pm";
       description = "See What I Mean?!";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19042,7 +19042,7 @@ let
     propagatedBuildInputs = [ CallContext ];
     meta = {
       description = "Read Perl's symbol table programmatically";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -19056,7 +19056,7 @@ let
     };
     meta = {
       description = "Finds name and type of a global variable";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19080,7 +19080,7 @@ let
     meta = {
       homepage = "https://github.com/phaylon/syntax/wiki";
       description = "Activate syntax extensions";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19096,7 +19096,7 @@ let
     meta = {
       homepage = "https://github.com/frioux/Syntax-Keyword-Junction";
       description = "Perl6 style Junction operators in Perl5";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19107,7 +19107,7 @@ let
       url = "mirror://cpan/authors/id/T/TO/TODDR/Sys-Mmap-0.20.tar.gz";
       sha256 = "1kz22l7sh2mibliixyshc9958bqlkzsb13agcibp7azii4ncw80q";
     };
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "Use mmap to map in a file as a Perl variable";
       maintainers = with maintainers; [ peterhoeg ];
       license = with licenses; [ gpl2Plus ];
@@ -19124,7 +19124,7 @@ let
     meta = {
       description = "Memory informations";
       maintainers = [ maintainers.pSub ];
-      license = with stdenv.lib.licenses; [ gpl2Plus ];
+      license = with lib.licenses; [ gpl2Plus ];
     };
   };
 
@@ -19147,7 +19147,7 @@ let
         sha256 = "0z3wqfahc9av7y34aqp6biq3sf8v8q4yynx7bv290vds50dsjb4w";
       })
     ];
-    buildInputs = stdenv.lib.optional stdenv.isDarwin pkgs.darwin.apple_sdk.frameworks.Carbon;
+    buildInputs = lib.optional stdenv.isDarwin pkgs.darwin.apple_sdk.frameworks.Carbon;
     doCheck = !stdenv.isAarch64;
   };
 
@@ -19171,7 +19171,7 @@ let
     doCheck = !stdenv.isAarch64; # it hangs on Aarch64
     meta = {
       description = "Perl extension for Consistent Signal Handling";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19184,7 +19184,7 @@ let
     };
     meta = {
       description = "Perl interface to the UNIX syslog(3) calls";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19198,7 +19198,7 @@ let
     propagatedBuildInputs = [ IPCRun ];
     meta = {
       description = "Object for running system commands";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ PodCoverageTrustPod TestCPANMeta TestPod TestPodCoverage ];
   };
@@ -19212,7 +19212,7 @@ let
     };
     nativeBuildInputs = [ pkgs.pkgconfig ];
     buildInputs = [ pkgs.libvirt CPANChanges TestPod TestPodCoverage XMLXPath ];
-    perlPreHook = stdenv.lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
+    perlPreHook = lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
   };
 
   TAPParserSourceHandlerpgTAP = buildPerlModule {
@@ -19225,7 +19225,7 @@ let
     doCheck = !stdenv.isDarwin;
     meta = {
       description = "Stream TAP from pgTAP test scripts";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19239,7 +19239,7 @@ let
     propagatedBuildInputs = [ CatalystAuthenticationStoreDBIxClass CatalystControllerHTMLFormFu CatalystDevel CatalystManual CatalystPluginAuthorizationACL CatalystPluginAuthorizationRoles CatalystPluginSessionStateCookie CatalystPluginSessionStoreFastMmap CatalystPluginStackTrace CatalystViewTT ];
     meta = {
       description = "Everything you need to follow the Catalyst Tutorial";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     doCheck = false; /* fails with 'open3: exec of .. perl .. failed: Argument list too long at .../TAP/Parser/Iterator/Process.pm line 165.' */
   };
@@ -19255,7 +19255,7 @@ let
     propagatedBuildInputs = [ EnvPath FileWhich GamesSolitaireVerify InlineC ListMoreUtils MooX StringShellQuote TaskTestRunAllPlugins TemplateToolkit YAMLLibYAML ];
     meta = {
       description = "Install the CPAN dependencies of the Freecell Solver test suite";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -19281,7 +19281,7 @@ let
     meta = {
       homepage = "https://web-cpan.shlomifish.org/modules/Test-Run/";
       description = "Specifications for installing all the Test::Run";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -19294,7 +19294,7 @@ let
     };
     meta = {
       description = "Ensure that a platform has weaken support";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19309,7 +19309,7 @@ let
     meta = {
       homepage = "https://github.com/karpet/template-plugin-autoformat";
       description = "TT plugin for Text::Autoformat";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19334,7 +19334,7 @@ let
     meta = {
       maintainers = with maintainers; [ eelco ];
       description = "Perl Template Toolkit Plugin for IO::All";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19368,7 +19368,7 @@ let
     propagatedBuildInputs = [ TemplateToolkit ];
     meta = {
       description = "Rudimentary profiling for Template Toolkit";
-      license = with stdenv.lib.licenses; [ artistic2 gpl3 ];
+      license = with lib.licenses; [ artistic2 gpl3 ];
     };
   };
 
@@ -19381,7 +19381,7 @@ let
     };
     meta = {
       description = "Template Toolkit reimplemented in as little code as possible";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19395,7 +19395,7 @@ let
     doCheck = !stdenv.isDarwin;
     meta = {
       description = "Comprehensive template processing system";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ AppConfig ];
     buildInputs = [ CGI TestLeakTrace ];
@@ -19411,7 +19411,7 @@ let
     propagatedBuildInputs = [ GD TemplateToolkit ];
     meta = {
       description = "GD plugin(s) for the Template Toolkit";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19424,7 +19424,7 @@ let
     };
     meta = {
       description = "Detect encoding of the current terminal";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19439,7 +19439,7 @@ let
     propagatedBuildInputs = [ ClassMethodMaker TermReadKey ];
     meta = {
       description = "Provide a progress meter on a standard terminal";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19453,7 +19453,7 @@ let
     propagatedBuildInputs = [ IOInteractive TermProgressBar ];
     meta = {
       description = "";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestMockObject ];
   };
@@ -19480,7 +19480,7 @@ let
     };
 
     # use native libraries from the host when running build commands
-    postConfigure = stdenv.lib.optionalString cross (let
+    postConfigure = lib.optionalString cross (let
       host_perl = buildPerl;
       host_self = buildPerl.pkgs.TermReadKey;
       perl_lib = "${host_perl}/lib/perl5/${host_perl.version}";
@@ -19490,7 +19490,7 @@ let
     '');
 
     # TermReadKey uses itself in the build process
-    nativeBuildInputs = stdenv.lib.optionals cross [
+    nativeBuildInputs = lib.optionals cross [
       buildPerl.pkgs.TermReadKey
     ];
   };
@@ -19522,7 +19522,7 @@ let
     meta = {
       homepage = "https://sourceforge.net/projects/perl-trg/";
       description = "Perl extension for the GNU Readline/History Library";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19538,7 +19538,7 @@ let
 
     meta = {
       description = "a modified version of T::RL::Perl with several new nonstandard features specific to TTYtter";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19554,7 +19554,7 @@ let
 
     meta = {
       description = "This module lets you ask the user for a password in the traditional way, from the keyboard, without echoing";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19566,7 +19566,7 @@ let
       sha256 = "7a142361f22f2e5fae9d6e39353663e8bdfa6118d1aee82204bd9083ddb04154";
     };
     propagatedBuildInputs = [ TermReadKey TextAutoformat ];
-    meta = with stdenv.lib; {
+    meta = with lib; {
       homepage = "https://metacpan.org/release/Term-Shell";
       description = "A simple command-line shell framework";
       license = with licenses; [ artistic1 gpl1Plus ];
@@ -19592,7 +19592,7 @@ let
     propagatedBuildInputs = [ DevelHide TermSizePerl ];
     meta = {
       description = "Retrieve terminal size";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19605,7 +19605,7 @@ let
     };
     meta = {
       description = "Perl extension for retrieving terminal size (Perl version)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19619,7 +19619,7 @@ let
     propagatedBuildInputs = [ Importer ];
     meta = {
       description = "Format a header and rows into a table";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19632,7 +19632,7 @@ let
     };
     meta = {
       description = "Perl extension for displaying a progress indicator on a terminal.";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19646,7 +19646,7 @@ let
      propagatedBuildInputs = [ LogMessageSimple ];
      meta = {
        description = "User interfaces via Term::ReadLine made easy";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -19681,7 +19681,7 @@ let
     propagatedBuildInputs = [ Curses ];
     meta = {
       description = "ASCII sprite animation framework";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19695,7 +19695,7 @@ let
      buildInputs = [ IPCRun3 Test2Suite ];
      meta = {
        description = "Fail if tests warn";
-       license = with stdenv.lib.licenses; [ artistic2 ];
+       license = with lib.licenses; [ artistic2 ];
      };
     propagatedBuildInputs = [ TestSimple13 ];
   };
@@ -19710,7 +19710,7 @@ let
     propagatedBuildInputs = [ ModulePluggable ScopeGuard SubInfo TermTable TestSimple13 ];
     meta = {
       description = "Distribution with a rich set of tools built upon the Test2 framework";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19725,7 +19725,7 @@ let
      buildInputs = [ TestNeeds ];
      meta = {
        description = "subtests that you can die your way out of ... but survive";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/rjbs/Test-Abortable";
      };
   };
@@ -19761,7 +19761,7 @@ let
     buildInputs = [ TestMost TestNoWarnings TestTrap ];
     meta = {
       description = "Aggregate C<*.t> tests to make them run faster";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       broken = true; # This module only works with Test::More version < 1.3, but you have 1.302133
     };
   };
@@ -19789,7 +19789,7 @@ let
     buildInputs = [ TestFatal ];
     meta = {
       description = "Provides a bits_is() subroutine for testing binary data";
-      license = with stdenv.lib.licenses; [ artistic2 ];
+      license = with lib.licenses; [ artistic2 ];
     };
   };
 
@@ -19803,7 +19803,7 @@ let
     propagatedBuildInputs = [ CPANMetaCheck ];
     meta = {
       description = "Check for presence of dependencies";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19818,7 +19818,7 @@ let
     propagatedBuildInputs = [ MROCompat ModuleRuntime TryTiny ];
     meta = {
       description = "Easily create test classes in an xUnit/JUnit style";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19832,7 +19832,7 @@ let
      buildInputs = [ TestClass TestDeep TestDifferences TestException TestMost TestWarn ];
      meta = {
        description = "Test Classes the easy way";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -19848,7 +19848,7 @@ let
     meta = {
       homepage = "https://github.com/karenetheridge/Test-CleanNamespaces";
       description = "Check for uncleaned imports";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19862,7 +19862,7 @@ let
        doCheck = false; /* test fails */
      meta = {
        description = "Perl module for portable testing of commands and scripts";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/neilb/Test-Cmd";
      };
   };
@@ -19877,7 +19877,7 @@ let
     meta = {
       homepage = "https://github.com/danboo/perl-test-command";
       description = "Test routines for external commands ";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1 ];
+      license = with lib.licenses; [ artistic1 gpl1 ];
     };
   };
 
@@ -19891,7 +19891,7 @@ let
     propagatedBuildInputs = [ UNIVERSALrequire ];
     meta = {
       description = "Check whether Perl files compile correctly";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19904,7 +19904,7 @@ let
     };
     meta = {
       description = "Validate your CPAN META.yml files";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -19918,7 +19918,7 @@ let
      propagatedBuildInputs = [ JSON ];
      meta = {
        description = "Validate your CPAN META.json files";
-       license = with stdenv.lib.licenses; [ artistic2 ];
+       license = with lib.licenses; [ artistic2 ];
      };
   };
 
@@ -19933,7 +19933,7 @@ let
     propagatedBuildInputs = [ IOAll ListMoreUtils MooX MooXlate ];
     meta = {
       description = "Split data-driven tests into several test scripts";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -19957,7 +19957,7 @@ let
     };
     meta = {
       description = "Test directory attributes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19971,7 +19971,7 @@ let
     propagatedBuildInputs = [ CaptureTiny TextDiff ];
     meta = {
       description = "Test strings and data structures and show differences if not ok";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19986,7 +19986,7 @@ let
     propagatedBuildInputs = [ ModuleManifest ];
     meta = {
       description = "Author test that validates a package MANIFEST";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -19999,7 +19999,7 @@ let
     };
     meta = {
       description = "Check the correct line endings in your project";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20023,7 +20023,7 @@ let
     propagatedBuildInputs = [ ClassAccessorChained ExpectSimple ];
     meta = {
       description = "Automated driving and testing of terminal-based programs";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20037,7 +20037,7 @@ let
     buildInputs = [ CaptureTiny ];
     meta = {
       description = "Add test failures if warnings are caught";
-      license = stdenv.lib.licenses.asl20;
+      license = lib.licenses.asl20;
     };
   };
 
@@ -20052,7 +20052,7 @@ let
     buildInputs = [ LWP ModuleBuildTiny TestException TestSharedFork TestTCP TestUseAllModules ];
     meta = {
       description = "a fake HTTP server";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       homepage = "https://github.com/masaki/Test-Fake-HTTPD";
     };
   };
@@ -20068,7 +20068,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Test-Fatal";
       description = "Incredibly simple helpers for testing code with exceptions";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20082,7 +20082,7 @@ let
     buildInputs = [ Testutf8 ];
     meta = {
       description = "Check file attributes";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20096,7 +20096,7 @@ let
     propagatedBuildInputs = [ TextDiff ];
     meta = {
       description = "Test routines for examining the contents of files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20112,7 +20112,7 @@ let
     meta = {
       homepage = "https://github.com/kentfredric/Test-File-ShareDir";
       description = "Create a Fake ShareDir for your modules for testing";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20126,7 +20126,7 @@ let
     propagatedBuildInputs = [ PathTiny ];
     meta = {
       description = "Portable filename comparison";
-      license = with stdenv.lib.licenses; [ asl20 ];
+      license = with lib.licenses; [ asl20 ];
     };
   };
 
@@ -20139,7 +20139,7 @@ let
     };
     meta = {
       description = "test code which forks";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20152,7 +20152,7 @@ let
     };
     meta = {
       description = "Detailed analysis of test results";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20178,7 +20178,7 @@ let
      };
      meta = {
        description = "test binary strings with hex dump diagnostics";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -20191,7 +20191,7 @@ let
     };
     meta = {
       description = "assert the referential identity of a reference";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20230,7 +20230,7 @@ let
      buildInputs = [ CPANMetaCheck TestDeep TestWarnings ];
      meta = {
        description = "Test the Kwalitee of a distribution before you release it";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/karenetheridge/Test-Kwalitee";
      };
   };
@@ -20246,7 +20246,7 @@ let
     buildInputs = [ PathTiny Plack TestDeep TestFatal TestNeeds TestRequiresInternet TestWarnings ];
     meta = {
       description = "A LWP::UserAgent suitable for simulating and testing network calls";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       homepage = "https://github.com/karenetheridge/Test-LWP-UserAgent";
     };
   };
@@ -20260,7 +20260,7 @@ let
     };
     meta = {
       description = "Traces memory leaks";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20273,7 +20273,7 @@ let
     };
     meta = {
       description = "Easy, automatic, specification-based tests";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20287,7 +20287,7 @@ let
     propagatedBuildInputs = [ ListMoreUtils ModulePluggable ];
     meta = {
       description = "do use_ok for modules in search path";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20322,7 +20322,7 @@ let
     };
     meta = {
       description = "assert that code does not cause growth in memory usage";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20336,7 +20336,7 @@ let
     propagatedBuildInputs = [ MetricsAny ];
     meta = {
       description = "assert that code produces metrics via L<Metrics::Any>";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20349,7 +20349,7 @@ let
     };
     buildInputs = [ ClassInspector TestAssert TestUnitLite ];
     propagatedBuildInputs = [ FatalException Moose namespaceclean ];
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "Simulating other classes";
       license = licenses.lgpl2Plus;
     };
@@ -20366,7 +20366,7 @@ let
     meta = {
       homepage = "https://github.com/zigorou/p5-test-mock-guard";
       description = "Simple mock test library using RAII";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20391,7 +20391,7 @@ let
     propagatedBuildInputs = [ SubIdentify ];
     meta = {
       description = "Control superclass method dispatch";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20407,7 +20407,7 @@ let
     propagatedBuildInputs = [ UNIVERSALcan UNIVERSALisa ];
     meta = {
       description = "Perl extension for emulating troublesome interfaces";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20430,7 +20430,7 @@ let
      buildInputs = [ AnyEvent ModuleBuildTiny TestClass TestMockTime TestRequires ];
      meta = {
        description = "Replaces actual time with simulated high resolution time";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/tarao/perl5-Test-MockTime-HiRes";
      };
   };
@@ -20445,7 +20445,7 @@ let
     meta = {
       homepage = "https://github.com/creaktive/Test-Mojibake";
       description = "Check your source for encoding misbehavior";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20458,7 +20458,7 @@ let
      };
      meta = {
        description = "Enhancing Test::More for UTF8-based projects";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -20472,7 +20472,7 @@ let
     propagatedBuildInputs = [ ExceptionClass ];
     meta = {
       description = "Most commonly needed test functions and features";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestDeep TestDifferences TestException TestWarn ];
   };
@@ -20489,7 +20489,7 @@ let
     meta = {
       homepage = "https://github.com/kazuho/p5-test-mysqld";
       description = "Mysqld runner for tests";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -20503,7 +20503,7 @@ let
     };
     meta = {
       description = "Skip tests when modules not available";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20516,7 +20516,7 @@ let
     };
     meta = {
       description = "Check the presence of tabs in your project";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20529,7 +20529,7 @@ let
     };
     meta = {
       description = "Make sure you didn't emit any warnings while testing";
-      license = stdenv.lib.licenses.lgpl21;
+      license = lib.licenses.lgpl21;
     };
   };
 
@@ -20563,7 +20563,7 @@ let
      buildInputs = [ ExtUtilsMakeMakerCPANfile TestUseAllModules ];
      meta = {
        description = "tests module permissions in your distribution";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -20586,7 +20586,7 @@ let
     };
     propagatedBuildInputs = [ PathTiny PerlTidy TextDiff ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestPerlCritic ];
   };
@@ -20600,7 +20600,7 @@ let
     };
     meta = {
       description = "Check for POD errors in files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20625,7 +20625,7 @@ let
     propagatedBuildInputs = [ CaptureTiny Moose podlinkcheck ];
     meta = {
       description = "Tests POD for invalid links";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20639,7 +20639,7 @@ let
     propagatedBuildInputs = [ LWP URIFind ];
     meta = {
       description = "Checks POD for any http 404 links";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ ModuleBuildTiny TestPod ];
   };
@@ -20653,7 +20653,7 @@ let
     };
     meta = {
       description = "Check file names portability";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20666,7 +20666,7 @@ let
     };
     meta = {
       description = "assert reference counts on objects";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20679,7 +20679,7 @@ let
     };
     meta = {
       description = "Checks to see if the module can be loaded";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20693,7 +20693,7 @@ let
     propagatedBuildInputs = [ GitVersionCompare ];
     meta = {
       description = "Check your test requirements against the available version of Git";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20706,7 +20706,7 @@ let
      };
      meta = {
        description = "Easily test network connectivity";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -20734,7 +20734,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Test-Routine";
       description = "Composable units of assertion";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20750,7 +20750,7 @@ let
     meta = {
       homepage = "https://web-cpan.shlomifish.org/modules/Test-Run/";
       description = "Base class to run standard TAP scripts";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -20767,7 +20767,7 @@ let
     meta = {
       homepage = "http://web-cpan.berlios.de/modules/Test-Run/";
       description = "Analyze tests from the command line using Test::Run";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
    };
 
@@ -20783,7 +20783,7 @@ let
     meta = {
       homepage = "https://web-cpan.shlomifish.org/modules/Test-Run/";
       description = "Define different interpreters for different test scripts with Test::Run";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -20799,7 +20799,7 @@ let
     meta = {
       homepage = "https://web-cpan.shlomifish.org/modules/Test-Run/";
       description = "Stop processing the entire test suite";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -20817,7 +20817,7 @@ let
     meta = {
       homepage = "https://web-cpan.shlomifish.org/modules/Test-Run/";
       description = "Make the file verdict ('ok', 'NOT OK')";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -20834,7 +20834,7 @@ let
     meta = {
       homepage = "https://web-cpan.shlomifish.org/modules/Test-Run/";
       description = "A Test::Run plugin that";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -20850,7 +20850,7 @@ let
     meta = {
       homepage = "https://web-cpan.shlomifish.org/modules/Test-Run/";
       description = "Trim the first components";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -20865,7 +20865,7 @@ let
     propagatedBuildInputs = [ PathTiny ];
     meta = {
       description = "Tests that an external program is valgrind-clean";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -20892,7 +20892,7 @@ let
     propagatedBuildInputs = [ IPCRun3 TestException ];
     meta = {
       description = "Test scripts with run";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20907,7 +20907,7 @@ let
     meta = {
       homepage = "https://github.com/tokuhirom/Test-SharedFork";
       description = "Fork test";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20920,7 +20920,7 @@ let
     };
     meta = {
       description = "Basic utilities for writing tests";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20934,7 +20934,7 @@ let
     propagatedBuildInputs = [ DevelGlobalPhase PackageStash TieIxHash ];
     meta = {
       description = "Write tests in a declarative specification style";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestDeep TestTrap ];
   };
@@ -20958,7 +20958,7 @@ let
     };
     meta = {
       description = "Test your SYNOPSIS code";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20971,7 +20971,7 @@ let
     };
     meta = {
       description = "Write tests, not scripts that run them";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -20984,7 +20984,7 @@ let
     };
     meta = {
       description = "Temporary directories that stick around when tests fail";
-      license = with stdenv.lib.licenses; [ asl20 ];
+      license = with lib.licenses; [ asl20 ];
       homepage = "https://github.com/dagolden/Test-TempDir-Tiny";
     };
 
@@ -20999,7 +20999,7 @@ let
     };
     meta = {
       description = "Testing TCP program";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestSharedFork ];
   };
@@ -21013,7 +21013,7 @@ let
     };
     meta = {
       description = "Testing UNIX domain socket program";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ ModuleBuildTiny ];
     propagatedBuildInputs = [ TestSharedFork TestTCP ];
@@ -21028,7 +21028,7 @@ let
     };
     meta = {
       description = "Overrides the time() and sleep() core functions for testing";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21041,7 +21041,7 @@ let
      };
      meta = {
        description = "Test::Toolbox - tools for testing";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -21055,7 +21055,7 @@ let
     propagatedBuildInputs = [ FileFindObjectRule ];
     meta = {
       description = "Test for trailing space in source files";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -21068,7 +21068,7 @@ let
     };
     meta = {
       description = "Unit testing without external dependencies";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21082,7 +21082,7 @@ let
     propagatedBuildInputs = [ SubUplevel ];
     meta = {
       description = "Perl extension to test methods for warnings";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21097,7 +21097,7 @@ let
     meta = {
       homepage = "https://github.com/karenetheridge/Test-Warnings";
       description = "Test for warnings and the lack of them";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21110,7 +21110,7 @@ let
     };
     meta = {
       description = "Test fallback behaviour in absence of modules";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21126,7 +21126,7 @@ let
     meta = {
       homepage = "https://github.com/petdance/test-www-mechanize";
       description = "Testing-specific WWW::Mechanize subclass";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -21141,7 +21141,7 @@ let
     propagatedBuildInputs = [ CatalystRuntime WWWMechanize ];
     meta = {
       description = "Test::WWW::Mechanize for Catalyst";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ CatalystPluginSession CatalystPluginSessionStateCookie TestException TestWWWMechanize Testutf8 ];
   };
@@ -21168,7 +21168,7 @@ let
     propagatedBuildInputs = [ Plack ];
     meta = {
       description = "Test PSGI programs using WWW::Mechanize";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21228,7 +21228,7 @@ let
     meta = {
       homepage = "https://github.com/neilbowers/Text-Autoformat";
       description = "Automatic text wrapping and reformatting";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21241,7 +21241,7 @@ let
     };
     meta = {
       description = "Extract delimited text sequences from strings";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21254,7 +21254,7 @@ let
       sha256 = "0b7lmjvfmypps1nw6nsdikgaakm0n0g4186glaqazg5xd1p5h55h";
     };
     perlPreHook = "export LD=$CC";
-    perlPostHook = stdenv.lib.optionalString stdenv.isDarwin ''
+    perlPostHook = lib.optionalString stdenv.isDarwin ''
       oldPath="$(pwd)/btparse/src/libbtparse.dylib"
       newPath="$out/lib/libbtparse.dylib"
 
@@ -21266,7 +21266,7 @@ let
     '';
     meta = {
       description = "Interface to read and parse BibTeX files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21297,7 +21297,7 @@ let
     };
     meta = {
       description = "Comma-separated values manipulator (using XS or PurePerl)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21311,7 +21311,7 @@ let
     propagatedBuildInputs = [ TextCSV ];
     meta = {
       description = "Encoding aware Text::CSV";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21324,7 +21324,7 @@ let
     };
     meta = {
       description = "Comma-Separated Values manipulation routines";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21338,7 +21338,7 @@ let
     propagatedBuildInputs = [ AlgorithmDiff ];
     meta = {
       description = "Perform diffs on files and record sets";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21352,7 +21352,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/Text-Format";
       description = "Format text";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = with maintainers; [ bcdarwin ];
     };
   };
@@ -21367,7 +21367,7 @@ let
     propagatedBuildInputs = [ FileSlurp StringDiff ];
     meta = {
       description = "Generate a colorful HTML diff of strings/files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -21403,7 +21403,7 @@ let
     buildInputs = [ DataVisitor PathTiny TryTiny YAML ];
     meta = {
       description = "Text::Hogan - A mustache templating engine statement-for-statement cloned from hogan.js";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21426,7 +21426,7 @@ let
     meta = {
       homepage = "https://github.com/wchristian/Test-InDistDir";
       description = "Test environment setup for development with IDE";
-      license = stdenv.lib.licenses.wtfpl;
+      license = lib.licenses.wtfpl;
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -21440,7 +21440,7 @@ let
     };
     meta = {
       description = "Framework for more readable interactive test scripts";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ FileFindRule TestPod TestPodCoverage ];
   };
@@ -21455,7 +21455,7 @@ let
     buildInputs = [ PDFAPI2 ];
     meta = {
       description = "Pango style markup formatting";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21468,7 +21468,7 @@ let
     };
     meta = {
       description = "Generate random Latin looking text";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -21482,7 +21482,7 @@ let
     };
     meta = {
       description = "Interact with a t/test_manifest file";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21507,7 +21507,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Test-MinimumVersion";
       description = "Does your code require newer perl than you think?";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21520,7 +21520,7 @@ let
     };
     meta = {
       description = "Micro template engine with Perl5 language";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21535,7 +21535,7 @@ let
     propagatedBuildInputs = [ HTMLParser TextMarkdown ];
     meta = {
       description = "Convert MultiMarkdown syntax to (X)HTML";
-      license = stdenv.lib.licenses.bsd3;
+      license = lib.licenses.bsd3;
     };
   };
 
@@ -21561,7 +21561,7 @@ let
       sha256 = "c186a50256e0bedfafb17e7ce157e7c52f19503bb79e18ebf06255911f6ead1a";
     };
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21575,7 +21575,7 @@ let
     propagatedBuildInputs = [ TextDiff ];
     meta = {
       description = "Patches text with given patch";
-      license = stdenv.lib.licenses.gpl2;
+      license = lib.licenses.gpl2;
     };
   };
 
@@ -21598,7 +21598,7 @@ let
     propagatedBuildInputs = [ TextAutoformat ];
     meta = {
       description = "Extract the structure of a quoted mail message";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21627,7 +21627,7 @@ let
     };
     meta = {
       description = "Manual text wrapping and reformatting";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21640,7 +21640,7 @@ let
     };
     meta = {
       description = "Allows conversion between Roman and Arabic algarisms";
-      license = stdenv.lib.licenses.bsd3;
+      license = lib.licenses.bsd3;
     };
   };
 
@@ -21653,7 +21653,7 @@ let
     };
     meta = {
       description = "Simple eyecandy ASCII tables";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
     propagatedBuildInputs = [ UnicodeLineBreak ];
   };
@@ -21677,7 +21677,7 @@ let
     buildInputs = [ TestWarn ];
     meta = {
       description = "Sprintf-like function with named conversions";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -21692,7 +21692,7 @@ let
     meta = {
       homepage = "https://www.shlomifish.org/open-source/projects/docmake/";
       description = "Organize Data in Tables";
-      license = stdenv.lib.licenses.isc;
+      license = lib.licenses.isc;
     };
   };
 
@@ -21725,7 +21725,7 @@ let
     propagatedBuildInputs = [ DataDump ];
     meta = {
       description = "Trap exit codes, exceptions, output, etc";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21742,7 +21742,7 @@ let
     meta = {
       homepage = "https://github.com/gfx/p5-Test-Vars";
       description = "Detects unused variables";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21757,7 +21757,7 @@ let
     propagatedBuildInputs = [ FileFindRulePerl ];
     meta = {
       description = "Check to see that version's in modules are sane";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -21770,7 +21770,7 @@ let
     };
     meta = {
       description = "Remove leading and/or trailing whitespace from strings";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21804,7 +21804,7 @@ let
     meta = {
       homepage = "https://github.com/2shortplanks/Test-utf8";
       description = "Handy utf8 tests";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21817,7 +21817,7 @@ let
     };
     meta = {
       description = "Extract collocations and Ngrams from text";
-      license = stdenv.lib.licenses.free;
+      license = lib.licenses.free;
       maintainers = [ maintainers.bzizou ];
     };
   };
@@ -21832,7 +21832,7 @@ let
     propagatedBuildInputs = [ ClassAccessorChained ];
     meta = {
       description = "Parse vFile formatted files into data structures";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21859,7 +21859,7 @@ let
     '';
     meta = {
       description = "Line wrapping module with support for multibyte, fullwidth, and combining characters and languages without whitespaces between words";
-      license = with stdenv.lib.licenses; [ artistic1 gpl2 ];
+      license = with lib.licenses; [ artistic1 gpl2 ];
       # bogus use of glibc, pretty sure, think this is what we have glibcLocales for?
       broken = stdenv.hostPlatform.libc != "glibc";
     };
@@ -21874,7 +21874,7 @@ let
     };
     meta = {
       description = "Word wrap text by breaking long lines";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestDifferences ];
   };
@@ -21890,7 +21890,7 @@ let
     meta = {
       homepage = "https://github.com/rjbs/Throwable";
       description = "A role for classes that can be thrown";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21904,7 +21904,7 @@ let
     propagatedBuildInputs = [ ClassVirtual enum ];
     meta = {
       description = "A Least-Recently Used cache";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21917,7 +21917,7 @@ let
     };
     propagatedBuildInputs = [ TieCacheLRU ];
     meta = {
-      license = stdenv.lib.licenses.artistic1;
+      license = lib.licenses.artistic1;
     };
   };
 
@@ -21930,7 +21930,7 @@ let
     };
     meta = {
       description = "Cycle through a list of values via a scalar";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21944,7 +21944,7 @@ let
     propagatedBuildInputs = [ CryptBlowfish CryptCBC CryptDES ];
     meta = {
       description = "Hashes (and objects based on hashes) with encrypting fields";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -21970,7 +21970,7 @@ let
     };
     meta = {
       description = "Ordered associative arrays for Perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -21984,7 +21984,7 @@ let
     meta = {
       homepage = "https://github.com/dagolden/tie-handle-offset";
       description = "Tied handle that hides the beginning of a file";
-      license = stdenv.lib.licenses.asl20;
+      license = lib.licenses.asl20;
     };
   };
 
@@ -21997,7 +21997,7 @@ let
     };
     meta = {
       description = "Ordered hashes for Perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     doCheck = false; /* test fails on some machines */
   };
@@ -22019,7 +22019,7 @@ let
       sha256 = "0c207850e77efb16618e0aa015507926a3425b34aad5aa6e3e40d83989a085a3";
     };
     meta = {
-      license = stdenv.lib.licenses.artistic1;
+      license = lib.licenses.artistic1;
     };
   };
 
@@ -22032,7 +22032,7 @@ let
     };
     meta = {
       description = "Variable ties made much easier: much, much, much easier..";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22047,7 +22047,7 @@ let
      buildInputs = [ ModuleBuild TestDifferences TestException TestNoWarnings ];
      meta = {
        description = "Tie::Sub - Tying a subroutine, function or method to a hash";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -22078,7 +22078,7 @@ let
     };
     meta = {
       description = "Rounded or exact English expression of durations";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22093,7 +22093,7 @@ let
     propagatedBuildInputs = [ ExporterLite ];
     meta = {
       description = "Parse string that represents time duration";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22106,7 +22106,7 @@ let
     };
     meta = {
       description = "Efficiently compute time from local and GMT time";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22143,7 +22143,7 @@ let
     };
     meta = {
       description = "A Perl module to deal with time periods";
-      license = stdenv.lib.licenses.gpl1;
+      license = lib.licenses.gpl1;
       maintainers = [ maintainers.winpat ];
     };
   };
@@ -22158,7 +22158,7 @@ let
     meta = {
       description = "Object Oriented time objects";
       homepage = "https://metacpan.org/release/Time-Piece";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = with maintainers; [ sgo ];
     };
   };
@@ -22194,7 +22194,7 @@ let
       description = "Tools for running a map tile server";
       homepage = "https://github.com/openstreetmap/tirex";
       maintainers = with maintainers; [ jglukasik ];
-      license = with stdenv.lib.licenses; [ gpl2 ];
+      license = with lib.licenses; [ gpl2 ];
     };
   };
 
@@ -22209,7 +22209,7 @@ let
     buildInputs = [ pkgs.xorg.libX11 pkgs.libpng ];
     doCheck = false;            # Expects working X11.
     meta = {
-      license = stdenv.lib.licenses.tcltk;
+      license = lib.licenses.tcltk;
     };
   };
 
@@ -22222,7 +22222,7 @@ let
     };
     meta = {
       description = "An N-ary tree";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     propagatedBuildInputs = [ FileSlurpTiny ];
   };
@@ -22237,7 +22237,7 @@ let
     buildInputs = [ TestException ];
     meta = {
       description = "A simple tree object";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22262,7 +22262,7 @@ let
     buildInputs = [ CPANMetaCheck CaptureTiny ];
     meta = {
       description = "Minimal try/catch with proper preservation of $@";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -22275,7 +22275,7 @@ let
     };
     propagatedBuildInputs = [ DispatchClass TryTiny ];
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22290,7 +22290,7 @@ let
      buildInputs = [ TestRequires TestSharedFork TestTCP ];
      meta = {
        description = "AnyEvent HTTP server for PSGI (like Thin)";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/miyagawa/Twiggy";
      };
   };
@@ -22305,7 +22305,7 @@ let
     propagatedBuildInputs = [ ExporterTiny ];
     meta = {
       description = "Tiny, yet Moo(se)-compatible type constraint";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestMemoryCycle ];
   };
@@ -22332,7 +22332,7 @@ let
     meta = {
       homepage = "https://github.com/chromatic/UNIVERSAL-can";
       description = "Work around buggy code calling UNIVERSAL::can() as a function";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22346,7 +22346,7 @@ let
     meta = {
       homepage = "https://github.com/chromatic/UNIVERSAL-isa";
       description = "Attempt to recover from people calling UNIVERSAL::isa as a function";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22359,7 +22359,7 @@ let
     };
     meta = {
       description = "Require() modules from a variable";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22370,10 +22370,10 @@ let
       url = "mirror://cpan/authors/id/A/AR/ARODLAND/Unicode-CaseFold-1.01.tar.gz";
       sha256 = "418a212808f9d0b8bb330ac905096d2dd364976753d4c71534dab9836a63194d";
     };
-    perlPreHook = stdenv.lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
+    perlPreHook = lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
     meta = {
       description = "Unicode case-folding for case-insensitive lookups";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22396,7 +22396,7 @@ let
     propagatedBuildInputs = [ MIMECharset ];
     meta = {
       description = "UAX #14 Unicode Line Breaking Algorithm";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22419,7 +22419,7 @@ let
     buildInputs = [ TestNoWarnings ];
     meta = {
       description = "Preparation of Internationalized Strings (RFC 3454)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -22435,7 +22435,7 @@ let
     meta = {
       homepage = "https://github.com/chansen/p5-unicode-utf8";
       description = "Encoding and decoding of UTF-8 encoding form";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = with maintainers; [ sgo ];
     };
   };
@@ -22460,7 +22460,7 @@ let
     meta = {
       homepage = "https://github.com/libwww-perl/URI";
       description = "Uniform Resource Identifiers (absolute and relative)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22474,7 +22474,7 @@ let
     propagatedBuildInputs = [ URINested ];
     meta = {
       description = "Database URIs";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22488,7 +22488,7 @@ let
     propagatedBuildInputs = [ URI ];
     meta = {
       description = "Find URIs in arbitrary text";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22502,7 +22502,7 @@ let
     propagatedBuildInputs = [ ParamsValidate URI ];
     meta = {
       description = "Build a URI from a set of named parameters";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ TestFatal ];
   };
@@ -22526,7 +22526,7 @@ let
      };
      meta = {
        description = "Collect information about a user";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -22550,7 +22550,7 @@ let
     propagatedBuildInputs = [ URI ];
     meta = {
       description = "Nested URIs";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22565,7 +22565,7 @@ let
     buildInputs = [ TestFatal TestNoWarnings ];
     meta = {
       description = "Subclassable and hostless URIs";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22579,7 +22579,7 @@ let
     propagatedBuildInputs = [ URI ];
     meta = {
       description = "Object for handling URI templates (RFC 6570)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22593,7 +22593,7 @@ let
     propagatedBuildInputs = [ CPANDistnameInfo URI ];
     meta = {
       description = "URLs that refer to things on the CPAN";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       homepage = "https://github.com/rjbs/URI-cpan";
     };
   };
@@ -22609,7 +22609,7 @@ let
     meta = {
       homepage = "https://metacpan.org/release/URI-ws";
       description = "WebSocket support for URI package";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22622,7 +22622,7 @@ let
     };
     meta = {
       description = "Pure Perl UUID Support With Functional Interface";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22635,7 +22635,7 @@ let
     };
     meta = {
       description = "Associate user-defined magic to variables from Perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22648,7 +22648,7 @@ let
     };
     meta = {
       description = "Structured version objects";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22663,7 +22663,7 @@ let
     meta = {
       maintainers = [ maintainers.chreekat ];
       description = "Edit a directory in $EDITOR";
-      license = with stdenv.lib.licenses; [ gpl1 ];
+      license = with lib.licenses; [ gpl1 ];
     };
   };
 
@@ -22677,7 +22677,7 @@ let
     propagatedBuildInputs = [ AnyEventCacheDNS AnyEventHTTP JSON StringApprox XMLSimple ];
     meta = {
       description = "Perl interface to Amazon EC2, Virtual Private Cloud, Elastic Load Balancing, Autoscaling, and Relational Database services";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22691,7 +22691,7 @@ let
     propagatedBuildInputs = [ DateTimeFormatISO8601 VMEC2 ];
     meta = {
       description = "Cache credentials respecting expiration time for IAM roles";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22707,7 +22707,7 @@ let
     meta = {
       homepage = "https://validator.w3.org/checklink";
       description = "A tool to check links and anchors in Web pages or full Web sites";
-      license = stdenv.lib.licenses.w3c;
+      license = lib.licenses.w3c;
     };
   };
 
@@ -22725,7 +22725,7 @@ let
         name = "WWWCurl-curl-7.71.0.patch";
       })
     ];
-    NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.cc.isClang "-Wno-return-type";
+    NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-return-type";
     buildInputs = [ pkgs.curl ];
     doCheck = false; # performs network access
   };
@@ -22739,7 +22739,7 @@ let
      };
      meta = {
        description = "parser and builder for application/x-www-form-urlencoded";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
        homepage = "https://github.com/kazeburo/WWW-Form-UrlEncoded";
      };
   };
@@ -22756,7 +22756,7 @@ let
     meta = {
       homepage = "https://github.com/libwww-perl/WWW-Mechanize";
       description = "Handy web browsing in a Perl object";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
     buildInputs = [ CGI HTTPServerSimple PathTiny TestDeep TestFatal TestOutput TestWarnings ];
   };
@@ -22785,7 +22785,7 @@ let
     propagatedBuildInputs = [ URI ];
     meta = {
       description = "Database of robots.txt-derived permissions";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22800,7 +22800,7 @@ let
     propagatedBuildInputs = [ LWPProtocolhttps ];
     meta = {
       description = "Accessing Twilio's REST API with Perl";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22824,7 +22824,7 @@ let
     };
     meta = {
       description = "Quote argument lists for Win32";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22840,7 +22840,7 @@ let
     meta = {
       homepage = "https://github.com/jonasbn/perl-workflow";
       description = "Simple, flexible system to implement workflows";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22907,7 +22907,7 @@ let
     buildInputs = [ EncodeHanExtra ModuleUtil ];
     meta = {
       description = "Miscellaneous helpers for X11::Protocol connections.";
-      license = with stdenv.lib.licenses; [ gpl1Plus gpl3Plus ];
+      license = with lib.licenses; [ gpl1Plus gpl3Plus ];
       homepage = "http://user42.tuxfamily.org/x11-protocol-other/index.html";
     };
   };
@@ -22938,7 +22938,7 @@ let
     doCheck = false; # requires an X server
     meta = {
       description = "XCB bindings for X";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22952,7 +22952,7 @@ let
     buildInputs = [ pkgs.libxml2 ];
     meta = {
       description = "Perl extension for inclusive (1.0 and 1.1) and exclusive canonicalization of XML using libxml2";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.sgo ];
     };
   };
@@ -22968,7 +22968,7 @@ let
     propagatedBuildInputs = [ XMLTokeParser ];
     meta = {
       description = "Recursive descent XML parsing";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -22992,7 +22992,7 @@ let
     propagatedBuildInputs = [ XMLTreePP ];
     meta = {
       description = "Parse/write/merge/edit RSS/RDF/Atom syndication feeds";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -23023,12 +23023,12 @@ let
       url = "mirror://cpan/authors/id/G/GR/GRANTM/XML-Filter-Sort-1.01.tar.gz";
       sha256 = "sha256-UQWF85pJFszV+o1UXpYXnJHq9vx8l6QBp1aOhBFi+l8=";
     };
-    nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin shortenPerlShebang;
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
     propagatedBuildInputs = [
       XMLSAX
       XMLSAXWriter
     ];
-    postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    postInstall = lib.optionalString stdenv.isDarwin ''
       shortenPerlShebang $out/bin/xmlsort
     '';
   };
@@ -23085,7 +23085,7 @@ let
     propagatedBuildInputs = [ XMLLibXML ];
     meta = {
       description = "XML::LibXML based XML::Simple clone";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -23129,9 +23129,9 @@ let
       sha256 = "0pai3ik47q7rgnix9644c673fwydz52gqkxr9kxwq765j4j36cfk";
     };
     patches = [ ../development/perl-modules/xml-parser-0001-HACK-Assumes-Expat-paths-are-good.patch ];
-    postPatch = stdenv.lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
+    postPatch = lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
       substituteInPlace Expat/Makefile.PL --replace 'use English;' '#'
-    '' + stdenv.lib.optionalString stdenv.isCygwin ''
+    '' + lib.optionalString stdenv.isCygwin ''
       sed -i"" -e "s@my \$compiler = File::Spec->catfile(\$path, \$cc\[0\]) \. \$Config{_exe};@my \$compiler = File::Spec->catfile(\$path, \$cc\[0\]) \. (\$^O eq 'cygwin' ? \"\" : \$Config{_exe});@" inc/Devel/CheckLib.pm
     '';
     makeMakerFlags = "EXPATLIBPATH=${pkgs.expat.out}/lib EXPATINCPATH=${pkgs.expat.dev}/include";
@@ -23148,7 +23148,7 @@ let
     buildInputs = [ TestRequires ];
     meta = {
       description = "Lightweight pure-perl XML Parser (based on regexps)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -23163,7 +23163,7 @@ let
     propagatedBuildInputs = [ XMLParser ];
     meta = {
       description = "Modules for parsing and evaluating XPath statements";
-      license = stdenv.lib.licenses.artistic2;
+      license = lib.licenses.artistic2;
     };
   };
 
@@ -23199,7 +23199,7 @@ let
     # disable tests that require network
     preCheck = "rm t/{26-xmlrpc.t,37-mod_xmlrpc.t}";
     meta = {
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       description = "Client and server implementation of XML-RPC protocol";
     };
   };
@@ -23215,7 +23215,7 @@ let
     meta = {
       homepage = "http://perl-rss.sourceforge.net/";
       description = "Creates and updates RSS files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -23242,7 +23242,7 @@ let
     meta = {
       description = "Base class for SAX Drivers and Filters";
       homepage = "https://github.com/grantm/XML-SAX-Base";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -23258,7 +23258,7 @@ let
      installTargets = [ "pure_install" ];
      meta = {
        description = "SAX Driver for Expat";
-       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
      };
   };
 
@@ -23273,7 +23273,7 @@ let
     meta = {
       homepage = "https://github.com/perigrin/xml-sax-writer";
       description = "SAX2 XML Writer";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -23307,7 +23307,7 @@ let
     propagatedBuildInputs = [ XMLParser ];
     meta = {
       description = "Simplified interface to XML::Parser";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -23321,7 +23321,7 @@ let
     propagatedBuildInputs = [ LWP ];
     meta = {
       description = "Pure Perl implementation for parsing/writing XML documents";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -23372,7 +23372,7 @@ let
     buildInputs = [ ExtUtilsDepends TestFatal TestSimple13 ];
     meta = {
       description = "XS pointer backed objects using sv_magic";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -23384,10 +23384,10 @@ let
       sha256 = "99a1bdda3ffa67514adb6aa189c902fa78dca41d778a42ae7079f604a045ac43";
     };
     buildInputs = [ TestFatal ];
-    perlPreHook = stdenv.lib.optionalString stdenv.isDarwin "export LD=$CC";
+    perlPreHook = lib.optionalString stdenv.isDarwin "export LD=$CC";
     meta = {
       description = "XS functions to assist in parsing sub-like syntax";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = [ maintainers.zakame ];
     };
   };
@@ -23402,7 +23402,7 @@ let
     propagatedBuildInputs = [ YAMLPP ];
     meta = {
       description = "See Your Data in the Nude";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       homepage = "https://github.com/ingydotnet/xxx-pm";
     };
   };
@@ -23420,7 +23420,7 @@ let
     meta = {
       homepage = "https://github.com/ingydotnet/yaml-pm";
       description = "YAML Ain't Markup Language (tm)";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -23431,10 +23431,10 @@ let
       url = "mirror://cpan/authors/id/T/TO/TODDR/YAML-Syck-1.32.tar.gz";
       sha256 = "1fz9r9vvsmjkzvcbznxw65b319vkmwzd0ck09q9nwip00gn907fv";
     };
-    perlPreHook = stdenv.lib.optionalString stdenv.isDarwin "export LD=$CC";
+    perlPreHook = lib.optionalString stdenv.isDarwin "export LD=$CC";
     meta = {
       description = "Fast, lightweight YAML loader and dumper";
-      license = stdenv.lib.licenses.mit;
+      license = lib.licenses.mit;
     };
   };
 
@@ -23466,7 +23466,7 @@ let
     buildInputs = [ TestDeep TestWarn ];
     meta = {
       description = "YAML Framework";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -23482,11 +23482,11 @@ let
     meta = {
       homepage = "https://github.com/mikegrb/WebService-Linode";
       description = "Perl Interface to the Linode.com API";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
-} // stdenv.lib.optionalAttrs (config.allowAliases or true) {
+} // lib.optionalAttrs (config.allowAliases or true) {
   autodie = null; # part of Perl
   AutoLoader = null; # part of Perl 5.22
   constant = null; # part of Perl 5.22
diff --git a/pkgs/top-level/php-packages.nix b/pkgs/top-level/php-packages.nix
index cc8ba346ae56..02522a763072 100644
--- a/pkgs/top-level/php-packages.nix
+++ b/pkgs/top-level/php-packages.nix
@@ -80,6 +80,8 @@ lib.makeScope pkgs.newScope (self: with self; {
 
     oci8 = callPackage ../development/php-packages/oci8 { };
 
+    pdlib = callPackage ../development/php-packages/pdlib { };
+
     pcov = callPackage ../development/php-packages/pcov { };
 
     pcs = buildPecl {
@@ -388,10 +390,7 @@ lib.makeScope pkgs.newScope (self: with self; {
         buildInputs = [ pcre' ] ++ lib.optionals (lib.versionAtLeast php.version "8.0") [
           valgrind.dev
         ];
-        # HAVE_OPCACHE_FILE_CACHE is defined in config.h, which is
-        # included from ZendAccelerator.h, but ZendAccelerator.h is
-        # included after the ifdef...
-        patches = [] ++ lib.optional (lib.versionAtLeast php.version "8.0") [ ../development/interpreters/php/fix-opcache-configure.patch ] ++lib.optional (lib.versionOlder php.version "7.4") [
+        patches = [] ++ lib.optional (lib.versionOlder php.version "7.4") [
           (pkgs.writeText "zend_file_cache_config.patch" ''
             --- a/ext/opcache/zend_file_cache.c
             +++ b/ext/opcache/zend_file_cache.c
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index df2334e140cb..9dac5041b2aa 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -173,7 +173,9 @@ in {
 
   addic7ed-cli = callPackage ../development/python-modules/addic7ed-cli { };
 
-  adguardhome= callPackage ../development/python-modules/adguardhome { };
+  adguardhome = callPackage ../development/python-modules/adguardhome { };
+
+  advantage-air = callPackage ../development/python-modules/advantage-air { };
 
   aenum = callPackage ../development/python-modules/aenum { };
 
@@ -263,12 +265,16 @@ in {
 
   aiosqlite = callPackage ../development/python-modules/aiosqlite { };
 
+  aiostream = callPackage ../development/python-modules/aiostream { };
+
   aiounifi = callPackage ../development/python-modules/aiounifi { };
 
   aiounittest = callPackage ../development/python-modules/aiounittest { };
 
   aiozeroconf = callPackage ../development/python-modules/aiozeroconf { };
 
+  airly = callPackage ../development/python-modules/airly { };
+
   ajpy = callPackage ../development/python-modules/ajpy { };
 
   alabaster = callPackage ../development/python-modules/alabaster { };
@@ -371,6 +377,8 @@ in {
 
   arabic-reshaper = callPackage ../development/python-modules/arabic-reshaper { };
 
+  archinfo = callPackage ../development/python-modules/archinfo { };
+
   area = callPackage ../development/python-modules/area { };
 
   arelle = callPackage ../development/python-modules/arelle { gui = true; };
@@ -463,6 +471,8 @@ in {
 
   asyncwhois = callPackage ../development/python-modules/asyncwhois { };
 
+  asysocks = callPackage ../development/python-modules/asysocks { };
+
   atlassian-python-api = callPackage ../development/python-modules/atlassian-python-api { };
 
   atom = callPackage ../development/python-modules/atom { };
@@ -782,6 +792,8 @@ in {
 
   backports_csv = callPackage ../development/python-modules/backports_csv { };
 
+  backports-datetime-fromisoformat = callPackage ../development/python-modules/backports-datetime-fromisoformat { };
+
   backports_functools_lru_cache = callPackage ../development/python-modules/backports_functools_lru_cache { };
 
   backports_lzma = callPackage ../development/python-modules/backports_lzma { };
@@ -892,6 +904,8 @@ in {
 
   bitarray = callPackage ../development/python-modules/bitarray { };
 
+  bitbox02 = callPackage ../development/python-modules/bitbox02 { };
+
   bitbucket_api = callPackage ../development/python-modules/bitbucket-api { };
 
   bitbucket-cli = callPackage ../development/python-modules/bitbucket-cli { };
@@ -1884,6 +1898,8 @@ in {
 
   dropbox = callPackage ../development/python-modules/dropbox { };
 
+  ds-store = callPackage ../development/python-modules/ds-store { };
+
   ds4drv = callPackage ../development/python-modules/ds4drv { inherit (pkgs) fetchFromGitHub bluez; };
 
   dtopt = callPackage ../development/python-modules/dtopt { };
@@ -2069,6 +2085,8 @@ in {
 
   fastcache = callPackage ../development/python-modules/fastcache { };
 
+  fastdiff = callPackage ../development/python-modules/fastdiff { };
+
   fastdtw = callPackage ../development/python-modules/fastdtw { };
 
   fastecdsa = callPackage ../development/python-modules/fastecdsa { };
@@ -2151,6 +2169,8 @@ in {
 
   fitbit = callPackage ../development/python-modules/fitbit { };
 
+  fixerio = callPackage ../development/python-modules/fixerio { };
+
   fixtures = callPackage ../development/python-modules/fixtures { };
 
   flake8-blind-except = callPackage ../development/python-modules/flake8-blind-except { };
@@ -2502,7 +2522,7 @@ in {
 
   goocalendar = callPackage ../development/python-modules/goocalendar { };
 
-  google_api_core = callPackage ../development/python-modules/google_api_core { };
+  google-api-core = callPackage ../development/python-modules/google-api-core { };
 
   google_api_python_client =
     let google_api_python_client = callPackage ../development/python-modules/google-api-python-client { };
@@ -2519,9 +2539,9 @@ in {
 
   googleapis_common_protos = callPackage ../development/python-modules/googleapis_common_protos { };
 
-  google_apputils = callPackage ../development/python-modules/google_apputils { };
+  google-apputils = callPackage ../development/python-modules/google-apputils { };
 
-  google_auth = callPackage ../development/python-modules/google_auth { };
+  google-auth = callPackage ../development/python-modules/google-auth { };
 
   google-auth-httplib2 = callPackage ../development/python-modules/google-auth-httplib2 { };
 
@@ -2529,79 +2549,81 @@ in {
 
   google-cloud-access-context-manager = callPackage ../development/python-modules/google-cloud-access-context-manager { };
 
-  google_cloud_asset = callPackage ../development/python-modules/google_cloud_asset { };
+  google-cloud-asset = callPackage ../development/python-modules/google-cloud-asset { };
 
-  google_cloud_automl = callPackage ../development/python-modules/google_cloud_automl { };
+  google-cloud-automl = callPackage ../development/python-modules/google-cloud-automl { };
 
-  google_cloud_bigquery = callPackage ../development/python-modules/google_cloud_bigquery { };
+  google-cloud-bigquery = callPackage ../development/python-modules/google-cloud-bigquery { };
 
-  google_cloud_bigquery_datatransfer = callPackage ../development/python-modules/google_cloud_bigquery_datatransfer { };
+  google-cloud-bigquery-datatransfer = callPackage ../development/python-modules/google-cloud-bigquery-datatransfer { };
 
-  google_cloud_bigtable = callPackage ../development/python-modules/google_cloud_bigtable { };
+  google-cloud-bigtable = callPackage ../development/python-modules/google-cloud-bigtable { };
 
-  google_cloud_container = callPackage ../development/python-modules/google_cloud_container { };
+  google-cloud-container = callPackage ../development/python-modules/google-cloud-container { };
 
-  google_cloud_core = callPackage ../development/python-modules/google_cloud_core { };
+  google-cloud-core = callPackage ../development/python-modules/google-cloud-core { };
 
-  google_cloud_dataproc = callPackage ../development/python-modules/google_cloud_dataproc { };
+  google-cloud-dataproc = callPackage ../development/python-modules/google-cloud-dataproc { };
 
-  google_cloud_datastore = callPackage ../development/python-modules/google_cloud_datastore { };
+  google-cloud-datastore = callPackage ../development/python-modules/google-cloud-datastore { };
 
-  google_cloud_dlp = callPackage ../development/python-modules/google_cloud_dlp { };
+  google-cloud-dlp = callPackage ../development/python-modules/google-cloud-dlp { };
 
-  google_cloud_dns = callPackage ../development/python-modules/google_cloud_dns { };
+  google-cloud-dns = callPackage ../development/python-modules/google-cloud-dns { };
 
-  google_cloud_error_reporting = callPackage ../development/python-modules/google_cloud_error_reporting { };
+  google-cloud-error-reporting = callPackage ../development/python-modules/google-cloud-error-reporting { };
 
-  google_cloud_firestore = callPackage ../development/python-modules/google_cloud_firestore { };
+  google-cloud-firestore = callPackage ../development/python-modules/google-cloud-firestore { };
 
   google-cloud-iam = callPackage ../development/python-modules/google-cloud-iam { };
 
-  google_cloud_iot = callPackage ../development/python-modules/google_cloud_iot { };
+  google-cloud-iot = callPackage ../development/python-modules/google-cloud-iot { };
 
-  google_cloud_kms = callPackage ../development/python-modules/google_cloud_kms { };
+  google-cloud-kms = callPackage ../development/python-modules/google-cloud-kms { };
 
-  google_cloud_language = callPackage ../development/python-modules/google_cloud_language { };
+  google-cloud-language = callPackage ../development/python-modules/google-cloud-language { };
 
-  google_cloud_logging = callPackage ../development/python-modules/google_cloud_logging { };
+  google-cloud-logging = callPackage ../development/python-modules/google-cloud-logging { };
 
-  google_cloud_monitoring = callPackage ../development/python-modules/google_cloud_monitoring { };
+  google-cloud-monitoring = callPackage ../development/python-modules/google-cloud-monitoring { };
 
   google-cloud-org-policy = callPackage ../development/python-modules/google-cloud-org-policy { };
 
-  google_cloud_pubsub = callPackage ../development/python-modules/google_cloud_pubsub { };
+  google-cloud-os-config = callPackage ../development/python-modules/google-cloud-os-config { };
+
+  google-cloud-pubsub = callPackage ../development/python-modules/google-cloud-pubsub { };
 
-  google_cloud_redis = callPackage ../development/python-modules/google_cloud_redis { };
+  google-cloud-redis = callPackage ../development/python-modules/google-cloud-redis { };
 
-  google_cloud_resource_manager = callPackage ../development/python-modules/google_cloud_resource_manager { };
+  google-cloud-resource-manager = callPackage ../development/python-modules/google-cloud-resource-manager { };
 
-  google_cloud_runtimeconfig = callPackage ../development/python-modules/google_cloud_runtimeconfig { };
+  google-cloud-runtimeconfig = callPackage ../development/python-modules/google-cloud-runtimeconfig { };
 
-  google_cloud_secret_manager = callPackage ../development/python-modules/google_cloud_secret_manager { };
+  google-cloud-secret-manager = callPackage ../development/python-modules/google-cloud-secret-manager { };
 
-  google_cloud_securitycenter = callPackage ../development/python-modules/google_cloud_securitycenter { };
+  google-cloud-securitycenter = callPackage ../development/python-modules/google-cloud-securitycenter { };
 
-  google_cloud_spanner = callPackage ../development/python-modules/google_cloud_spanner { };
+  google-cloud-spanner = callPackage ../development/python-modules/google-cloud-spanner { };
 
-  google_cloud_speech = callPackage ../development/python-modules/google_cloud_speech { };
+  google-cloud-speech = callPackage ../development/python-modules/google-cloud-speech { };
 
-  google_cloud_storage = callPackage ../development/python-modules/google_cloud_storage { };
+  google-cloud-storage = callPackage ../development/python-modules/google-cloud-storage { };
 
-  google_cloud_tasks = callPackage ../development/python-modules/google_cloud_tasks { };
+  google-cloud-tasks = callPackage ../development/python-modules/google-cloud-tasks { };
 
-  google_cloud_testutils = callPackage ../development/python-modules/google_cloud_testutils { };
+  google-cloud-testutils = callPackage ../development/python-modules/google-cloud-testutils { };
 
-  google_cloud_texttospeech = callPackage ../development/python-modules/google_cloud_texttospeech { };
+  google-cloud-texttospeech = callPackage ../development/python-modules/google-cloud-texttospeech { };
 
-  google_cloud_trace = callPackage ../development/python-modules/google_cloud_trace { };
+  google-cloud-trace = callPackage ../development/python-modules/google-cloud-trace { };
 
-  google_cloud_translate = callPackage ../development/python-modules/google_cloud_translate { };
+  google-cloud-translate = callPackage ../development/python-modules/google-cloud-translate { };
 
-  google_cloud_videointelligence = callPackage ../development/python-modules/google_cloud_videointelligence { };
+  google-cloud-videointelligence = callPackage ../development/python-modules/google-cloud-videointelligence { };
 
-  google_cloud_vision = callPackage ../development/python-modules/google_cloud_vision { };
+  google-cloud-vision = callPackage ../development/python-modules/google-cloud-vision { };
 
-  google_cloud_websecurityscanner = callPackage ../development/python-modules/google_cloud_websecurityscanner { };
+  google-cloud-websecurityscanner = callPackage ../development/python-modules/google-cloud-websecurityscanner { };
 
   google-compute-engine = callPackage ../tools/virtualization/google-compute-engine { };
 
@@ -2621,7 +2643,7 @@ in {
 
   google-pasta = callPackage ../development/python-modules/google-pasta { };
 
-  google_resumable_media = callPackage ../development/python-modules/google_resumable_media { };
+  google-resumable-media = callPackage ../development/python-modules/google-resumable-media { };
 
   googletrans = callPackage ../development/python-modules/googletrans { };
 
@@ -2663,8 +2685,12 @@ in {
 
   graph_nets = callPackage ../development/python-modules/graph_nets { };
 
+  graphene = callPackage ../development/python-modules/graphene { };
+
   graphql-core = callPackage ../development/python-modules/graphql-core { };
 
+  graphql-relay = callPackage ../development/python-modules/graphql-relay { };
+
   graphql-server-core = callPackage ../development/python-modules/graphql-server-core { };
 
   graph-tool = callPackage ../development/python-modules/graph-tool/2.x.x.nix { inherit (pkgs) pkg-config; };
@@ -3636,7 +3662,9 @@ in {
     llvm = pkgs.llvm_9;
   }; # llvmlite always requires a specific version of llvm.
 
-  lmdb = callPackage ../development/python-modules/lmdb { };
+  lmdb = callPackage ../development/python-modules/lmdb {
+    inherit (pkgs) lmdb;
+  };
 
   lml = callPackage ../development/python-modules/lml { };
 
@@ -3887,6 +3915,10 @@ in {
 
   minidb = callPackage ../development/python-modules/minidb { };
 
+  minidump = callPackage ../development/python-modules/minidump { };
+
+  minikerberos = callPackage ../development/python-modules/minikerberos { };
+
   minimock = callPackage ../development/python-modules/minimock { };
 
   mininet-python = (toPythonModule (pkgs.mininet.override { inherit python; })).py;
@@ -4241,6 +4273,8 @@ in {
 
   noise = callPackage ../development/python-modules/noise { };
 
+  noiseprotocol = callPackage ../development/python-modules/noiseprotocol { };
+
   nose2 = callPackage ../development/python-modules/nose2 { };
 
   nose = callPackage ../development/python-modules/nose { };
@@ -5006,6 +5040,8 @@ in {
 
   pyannotate = callPackage ../development/python-modules/pyannotate { };
 
+  pyarlo = callPackage ../development/python-modules/pyarlo { };
+
   pyarrow = callPackage ../development/python-modules/pyarrow { inherit (pkgs) arrow-cpp cmake pkgconfig; };
 
   pyasn1 = callPackage ../development/python-modules/pyasn1 { };
@@ -5135,6 +5171,8 @@ in {
 
   pydenticon = callPackage ../development/python-modules/pydenticon { };
 
+  pydexcom = callPackage ../development/python-modules/pydexcom { };
+
   pydicom = callPackage ../development/python-modules/pydicom { };
 
   pydispatcher = callPackage ../development/python-modules/pydispatcher { };
@@ -5343,6 +5381,8 @@ in {
 
   pykwalify = callPackage ../development/python-modules/pykwalify { };
 
+  pylacrosse = callPackage ../development/python-modules/pylacrosse { };
+
   pylama = callPackage ../development/python-modules/pylama { };
 
   pylast = callPackage ../development/python-modules/pylast { };
@@ -5421,6 +5461,8 @@ in {
 
   pymetno = callPackage ../development/python-modules/pymetno { };
 
+  pymodbus = callPackage ../development/python-modules/pymodbus { };
+
   pymongo = callPackage ../development/python-modules/pymongo { };
 
   pympler = callPackage ../development/python-modules/pympler { };
@@ -5494,6 +5536,8 @@ in {
 
   pyopengl = callPackage ../development/python-modules/pyopengl { };
 
+  pyopengl-accelerate = callPackage ../development/python-modules/pyopengl-accelerate { };
+
   pyopenssl = callPackage ../development/python-modules/pyopenssl { };
 
   pyosf = callPackage ../development/python-modules/pyosf { };
@@ -5822,6 +5866,7 @@ in {
 
   pytest-black = callPackage ../development/python-modules/pytest-black { };
 
+  pytest-cache = self.pytestcache; # added 2021-01-04
   pytestcache = callPackage ../development/python-modules/pytestcache { };
 
   pytest-catchlog = callPackage ../development/python-modules/pytest-catchlog { };
@@ -5832,6 +5877,7 @@ in {
 
   pytest-click = callPackage ../development/python-modules/pytest-click { };
 
+  pytest-cov = self.pytestcov; # self 2021-01-04
   pytestcov = callPackage ../development/python-modules/pytest-cov { };
 
   pytest-cram = callPackage ../development/python-modules/pytest-cram { };
@@ -5868,8 +5914,6 @@ in {
 
   pytest-helpers-namespace = callPackage ../development/python-modules/pytest-helpers-namespace { };
 
-  pyopengl-accelerate = callPackage ../development/python-modules/pyopengl-accelerate { };
-
   pytest-html = callPackage ../development/python-modules/pytest-html { };
 
   pytest-httpbin = callPackage ../development/python-modules/pytest-httpbin { };
@@ -5897,6 +5941,7 @@ in {
 
   pytest-pep257 = callPackage ../development/python-modules/pytest-pep257 { };
 
+  pytest-pep8 = self.pytestpep8; # added 2021-01-04
   pytestpep8 = throw "pytestpep8 was removed because it is abandoned and no longer compatible with pytest v6.0"; # added 2020-12-10
 
   pytest-pylint = callPackage ../development/python-modules/pytest-pylint { };
@@ -5905,6 +5950,7 @@ in {
 
   pytest-qt = callPackage ../development/python-modules/pytest-qt { };
 
+  pytest-quickcheck = self.pytestquickcheck;
   pytestquickcheck = callPackage ../development/python-modules/pytest-quickcheck { };
 
   pytest-raisesregexp = callPackage ../development/python-modules/pytest-raisesregexp { };
@@ -5921,6 +5967,7 @@ in {
 
   pytest-rerunfailures = callPackage ../development/python-modules/pytest-rerunfailures { };
 
+  pytest-runner = self.pytestrunner; # added 2021-01-04
   pytestrunner = callPackage ../development/python-modules/pytestrunner { };
 
   pytest-sanic = callPackage ../development/python-modules/pytest-sanic { };
@@ -5929,6 +5976,8 @@ in {
 
   pytest-services = callPackage ../development/python-modules/pytest-services { };
 
+  pytest-snapshot = callPackage ../development/python-modules/pytest-snapshot { };
+
   pytest-shutil = callPackage ../development/python-modules/pytest-shutil { };
 
   pytest-socket = callPackage ../development/python-modules/pytest-socket { };
@@ -5957,6 +6006,7 @@ in {
 
   pytest-watch = callPackage ../development/python-modules/pytest-watch { };
 
+  pytest-xdist = self.pytest_xdist; # added 2021-01-04
   pytest_xdist = if isPy27 then
     callPackage ../development/python-modules/pytest-xdist/1.nix { }
   else
@@ -6182,6 +6232,8 @@ in {
 
   pyeverlights = callPackage ../development/python-modules/pyeverlights { };
 
+  pytile = callPackage ../development/python-modules/pytile { };
+
   pytimeparse = callPackage ../development/python-modules/pytimeparse { };
 
   pytmx = callPackage ../development/python-modules/pytmx { };
@@ -6825,6 +6877,7 @@ in {
 
   setuptools-rust = callPackage ../development/python-modules/setuptools-rust { };
 
+  setuptools-scm = self.setuptools_scm; # added 2021-01-04
   setuptools_scm = callPackage ../development/python-modules/setuptools_scm { };
 
   setuptools-scm-git-archive = callPackage ../development/python-modules/setuptools-scm-git-archive { };
@@ -6962,6 +7015,8 @@ in {
 
   snapperGUI = callPackage ../development/python-modules/snappergui { };
 
+  snapshottest = callPackage ../development/python-modules/snapshottest { };
+
   sniffio = callPackage ../development/python-modules/sniffio { };
 
   snitun = callPackage ../development/python-modules/snitun { };
@@ -7171,7 +7226,9 @@ in {
 
   stack-data = callPackage ../development/python-modules/stack-data { };
 
-  starlette = callPackage ../development/python-modules/starlette { };
+  starlette = callPackage ../development/python-modules/starlette {
+    inherit (pkgs.darwin.apple_sdk.frameworks) ApplicationServices;
+  };
 
   staticjinja = callPackage ../development/python-modules/staticjinja { };
 
@@ -7317,62 +7374,39 @@ in {
 
   tensorboardx = callPackage ../development/python-modules/tensorboardx { };
 
-  tensorflow-bin_1 = callPackage ../development/python-modules/tensorflow/1/bin.nix {
+  tensorflow-bin_2 = callPackage ../development/python-modules/tensorflow/bin.nix {
     cudaSupport = pkgs.config.cudaSupport or false;
     inherit (pkgs.linuxPackages) nvidia_x11;
-    cudatoolkit = pkgs.cudatoolkit_10;
-    cudnn = pkgs.cudnn_cudatoolkit_10;
+    cudatoolkit = pkgs.cudatoolkit_11_0;
+    cudnn = pkgs.cudnn_cudatoolkit_11_0;
   };
 
-  tensorflow-bin_2 = callPackage ../development/python-modules/tensorflow/2/bin.nix {
-    cudaSupport = pkgs.config.cudaSupport or false;
-    inherit (pkgs.linuxPackages) nvidia_x11;
-    cudatoolkit = pkgs.cudatoolkit_10;
-    cudnn = pkgs.cudnn_cudatoolkit_10;
-  };
+  tensorflow-bin = self.tensorflow-bin_2;
 
-  tensorflow-bin = self.tensorflow-bin_1;
-
-  tensorflow-build_1 = callPackage ../development/python-modules/tensorflow/1 {
+  tensorflow-build_2 = callPackage ../development/python-modules/tensorflow {
     cudaSupport = pkgs.config.cudaSupport or false;
-    inherit (pkgs.linuxPackages) nvidia_x11;
-    cudatoolkit = pkgs.cudatoolkit_10;
-    cudnn = pkgs.cudnn_cudatoolkit_10;
-    nccl = pkgs.nccl_cudatoolkit_10;
-    openssl = pkgs.openssl_1_1;
-    inherit (pkgs.darwin.apple_sdk.frameworks) Foundation Security;
-    inherit (pkgs) flatbuffers;
-  };
-
-  tensorflow-build_2 = callPackage ../development/python-modules/tensorflow/2 {
-    cudaSupport = pkgs.config.cudaSupport or false;
-    cudatoolkit = pkgs.cudatoolkit_11;
-    cudnn = pkgs.cudnn_cudatoolkit_11;
+    cudatoolkit = pkgs.cudatoolkit_11_0;
+    cudnn = pkgs.cudnn_cudatoolkit_11_0;
     nccl = pkgs.nccl_cudatoolkit_11;
     openssl = pkgs.openssl_1_1;
     inherit (pkgs.darwin.apple_sdk.frameworks) Foundation Security;
     inherit (pkgs) flatbuffers;
   };
 
-  tensorflow-build = self.tensorflow-build_1;
+  tensorflow-build = self.tensorflow-build_2;
 
-  tensorflow-estimator_1 = callPackage ../development/python-modules/tensorflow-estimator/1 { };
+  tensorflow-estimator_2 = callPackage ../development/python-modules/tensorflow-estimator { };
 
-  tensorflow-estimator_2 = callPackage ../development/python-modules/tensorflow-estimator/2 { };
-
-  tensorflow-estimator = self.tensorflow-estimator_1;
+  tensorflow-estimator = self.tensorflow-estimator_2;
 
   tensorflow-probability = callPackage ../development/python-modules/tensorflow-probability { };
 
-  tensorflow = self.tensorflow_1;
-  tensorflow_1 = self.tensorflow-build_1;
+  tensorflow = self.tensorflow_2;
   tensorflow_2 = self.tensorflow-build_2;
 
-  tensorflow-tensorboard_1 = callPackage ../development/python-modules/tensorflow-tensorboard/1 { };
-
-  tensorflow-tensorboard_2 = callPackage ../development/python-modules/tensorflow-tensorboard/2 { };
+  tensorflow-tensorboard_2 = callPackage ../development/python-modules/tensorflow-tensorboard { };
 
-  tensorflow-tensorboard = self.tensorflow-tensorboard_1;
+  tensorflow-tensorboard = self.tensorflow-tensorboard_2;
 
   tensorflowWithCuda = self.tensorflow.override { cudaSupport = true; };
 
@@ -7883,6 +7917,8 @@ in {
 
   wasabi = callPackage ../development/python-modules/wasabi { };
 
+  wasmer = callPackage ../development/python-modules/wasmer { };
+
   watchdog = callPackage ../development/python-modules/watchdog { };
 
   WazeRouteCalculator = callPackage ../development/python-modules/WazeRouteCalculator { };
@@ -7945,6 +7981,10 @@ in {
 
   willow = callPackage ../development/python-modules/willow { };
 
+  winacl = callPackage ../development/python-modules/winacl { };
+
+  winsspi = callPackage ../development/python-modules/winsspi { };
+
   wled = callPackage ../development/python-modules/wled { };
 
   word2vec = callPackage ../development/python-modules/word2vec { };