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--maintainers/maintainer-list.nix6
-rw-r--r--nixos/doc/manual/release-notes/rl-2009.xml8
-rw-r--r--nixos/doc/manual/release-notes/rl-2103.xml18
-rw-r--r--nixos/modules/hardware/opentabletdriver.nix2
-rw-r--r--nixos/modules/module-list.nix3
-rw-r--r--nixos/modules/services/audio/mpd.nix64
-rw-r--r--nixos/modules/services/audio/mpdscribble.nix202
-rw-r--r--nixos/modules/services/misc/gitea.nix2
-rw-r--r--nixos/modules/services/misc/nzbhydra2.nix78
-rw-r--r--nixos/modules/services/networking/iwd.nix5
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome3.nix6
-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/opustags/default.nix22
-rw-r--r--pkgs/applications/graphics/hello-wayland/default.nix33
-rw-r--r--pkgs/applications/graphics/monado/default.nix37
-rw-r--r--pkgs/applications/graphics/xrgears/default.nix48
-rw-r--r--pkgs/applications/misc/hugo/default.nix6
-rw-r--r--pkgs/applications/misc/osmium-tool/default.nix8
-rw-r--r--pkgs/applications/misc/zola/default.nix6
-rw-r--r--pkgs/applications/networking/browsers/chromium/upstream-info.json12
-rw-r--r--pkgs/applications/networking/cluster/sonobuoy/default.nix8
-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/science/chemistry/octopus/default.nix20
-rw-r--r--pkgs/applications/science/logic/coq/default.nix120
-rw-r--r--pkgs/applications/terminal-emulators/alacritty/default.nix6
-rw-r--r--pkgs/applications/version-management/git-repo/default.nix4
-rw-r--r--pkgs/applications/version-management/sparkleshare/default.nix2
-rw-r--r--pkgs/applications/video/mpv/default.nix10
-rw-r--r--pkgs/applications/virtualization/nvidia-docker/default.nix20
-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/rust/default-crate-overrides.nix65
-rw-r--r--pkgs/build-support/vm/deb/deb-closure.pl2
-rwxr-xr-xpkgs/common-updater/scripts/update-source-version2
-rw-r--r--pkgs/data/fonts/fira-code/default.nix5
-rw-r--r--pkgs/desktops/plasma-5/fetch.sh2
-rw-r--r--pkgs/desktops/plasma-5/srcs.nix392
-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/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.nix5
-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/libbladeRF/default.nix11
-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.nix14
-rw-r--r--pkgs/development/libraries/libplacebo/glsl-import.patch13
-rw-r--r--pkgs/development/libraries/libsurvive/default.nix2
-rw-r--r--pkgs/development/libraries/sentencepiece/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/elpi/default.nix24
-rw-r--r--pkgs/development/php-packages/pdlib/default.nix24
-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/awkward0/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.nix10
-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/flask-cors/default.nix4
-rw-r--r--pkgs/development/python-modules/folium/default.nix4
-rw-r--r--pkgs/development/python-modules/graphene/default.nix4
-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/ldappool/default.nix6
-rw-r--r--pkgs/development/python-modules/minikerberos/default.nix32
-rw-r--r--pkgs/development/python-modules/pychromecast/default.nix6
-rw-r--r--pkgs/development/python-modules/pyosmium/default.nix4
-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/slither-analyzer/default.nix4
-rw-r--r--pkgs/development/python-modules/uproot3/default.nix4
-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/tools/buildah/default.nix4
-rw-r--r--pkgs/development/tools/conftest/default.nix6
-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/terraform-ls/default.nix6
-rw-r--r--pkgs/development/tools/ocaml/camlp5/default.nix20
-rw-r--r--pkgs/games/quake3/ioquake/default.nix12
-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/emulators/oberon-risc-emu/default.nix27
-rw-r--r--pkgs/misc/vim-plugins/generated.nix206
-rw-r--r--pkgs/misc/vim-plugins/vim-plugin-names5
-rw-r--r--pkgs/misc/vscode-extensions/default.nix12
-rw-r--r--pkgs/os-specific/linux/busybox/default.nix7
-rw-r--r--pkgs/os-specific/linux/kernel/hardened/patches.json26
-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-rt-5.10.nix6
-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/servers/home-assistant/component-packages.nix4
-rw-r--r--pkgs/servers/monitoring/prometheus/wireguard-exporter.nix6
-rw-r--r--pkgs/servers/monitoring/telegraf/default.nix8
-rw-r--r--pkgs/servers/nzbhydra2/default.nix32
-rw-r--r--pkgs/servers/sql/postgresql/default.nix13
-rw-r--r--pkgs/shells/oksh/default.nix21
-rw-r--r--pkgs/tools/X11/opentabletdriver/default.nix5
-rw-r--r--pkgs/tools/admin/lxd/default.nix4
-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/backup/bupstash/default.nix33
-rw-r--r--pkgs/tools/inputmethods/evscript/default.nix24
-rw-r--r--pkgs/tools/misc/mmv-go/default.nix6
-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/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/system/inxi/default.nix4
-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.nix42
-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.nix2648
-rw-r--r--pkgs/top-level/php-packages.nix7
-rw-r--r--pkgs/top-level/python-packages.nix18
192 files changed, 4631 insertions, 4265 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/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index 10a0d0588c17..346f7b47db43 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -5911,6 +5911,12 @@
     githubId = 1387206;
     name = "Mike Sperber";
   };
+  milesbreslin = {
+    email = "milesbreslin@gmail.com";
+    github = "milesbreslin";
+    githubId = 38543128;
+    name = "Miles Breslin";
+  };
   millerjason = {
     email = "mailings-github@millerjason.com";
     github = "millerjason";
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..e0857e7731ee 100644
--- a/nixos/doc/manual/release-notes/rl-2103.xml
+++ b/nixos/doc/manual/release-notes/rl-2103.xml
@@ -108,6 +108,15 @@
     </para>
    </listitem>
    <listitem>
+    <para>
+     The <varname>networking.wireless.iwd</varname> module now installs
+     the upstream-provided 80-iwd.link file, which sets the NamePolicy=
+     for all wlan devices to "keep kernel", to avoid race conditions
+     between iwd and networkd. If you don't want this, you can set
+     <literal>systemd.network.links."80-iwd" = lib.mkForce {}</literal>.
+    </para>
+   </listitem>
+   <listitem>
      <para>
        <literal>rubyMinimal</literal> was removed due to being unused and
        unusable. The default ruby interpreter includes JIT support, which makes
@@ -321,8 +330,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 +513,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/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..8a088d0f8ca4 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -101,6 +101,7 @@
   ./misc/version.nix
   ./misc/nixops-autoluks.nix
   ./programs/adb.nix
+  ./programs/appgate-sdp.nix
   ./programs/atop.nix
   ./programs/autojump.nix
   ./programs/bandwhich.nix
@@ -226,6 +227,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 +494,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/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/misc/gitea.nix b/nixos/modules/services/misc/gitea.nix
index af80e99746be..ac702a05ee8b 100644
--- a/nixos/modules/services/misc/gitea.nix
+++ b/nixos/modules/services/misc/gitea.nix
@@ -605,5 +605,5 @@ in
       timerConfig.OnCalendar = cfg.dump.interval;
     };
   };
-  meta.maintainers = with lib.maintainers; [ srhb ];
+  meta.maintainers = with lib.maintainers; [ srhb ma27 ];
 }
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/networking/iwd.nix b/nixos/modules/services/networking/iwd.nix
index 6be67a8b96f4..99e5e78badd2 100644
--- a/nixos/modules/services/networking/iwd.nix
+++ b/nixos/modules/services/networking/iwd.nix
@@ -22,6 +22,11 @@ in {
 
     systemd.packages = [ pkgs.iwd ];
 
+    systemd.network.links."80-iwd" = {
+      matchConfig.Type = "wlan";
+      linkConfig.NamePolicy = "keep kernel";
+    };
+
     systemd.services.iwd.wantedBy = [ "multi-user.target" ];
   };
 
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/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/opustags/default.nix b/pkgs/applications/audio/opustags/default.nix
index 4e26c9b77523..83cf44853a5a 100644
--- a/pkgs/applications/audio/opustags/default.nix
+++ b/pkgs/applications/audio/opustags/default.nix
@@ -1,32 +1,20 @@
-{ stdenv, fetchFromGitHub, fetchpatch, cmake, pkg-config, libiconv, libogg
+{ stdenv, lib, fetchFromGitHub, cmake, pkg-config, libiconv, libogg
 , ffmpeg, glibcLocales, perl, perlPackages }:
 
 stdenv.mkDerivation rec {
   pname = "opustags";
-  version = "1.5.1";
+  version = "1.6.0";
 
   src = fetchFromGitHub {
     owner = "fmang";
     repo = "opustags";
     rev = version;
-    sha256 = "1dicv4s395b9gb4jpr0rnxdq9azr45pid62q3x08lb7cvyq3yxbh";
+    sha256 = "1wsfw713rhi2gg5xc04cx5i31hlw0l3wdflj3r1y8w45bdk6ag1z";
   };
 
-  patches = [
-    # Fix building on darwin
-    (fetchpatch {
-      url = "https://github.com/fmang/opustags/commit/64fc6f8f6d20e034892e89abff0236c85cae98dc.patch";
-      sha256 = "1djifzqhf1w51gbpqbndsh3gnl9iizp6hppxx8x2a92i9ns22zpg";
-    })
-    (fetchpatch {
-      url = "https://github.com/fmang/opustags/commit/f98208c1a1d10c15f98b127bbfdf88a7b15b08dc.patch";
-      sha256 = "1h3v0r336fca0y8zq1vl2wr8gaqs3vvrrckx7pvji4k1jpiqvp38";
-    })
-  ];
-
   buildInputs = [ libogg ];
 
-  nativeBuildInputs = [ cmake pkg-config ] ++ stdenv.lib.optional stdenv.isDarwin libiconv;
+  nativeBuildInputs = [ cmake pkg-config ] ++ lib.optionals stdenv.isDarwin [ libiconv ];
 
   doCheck = true;
 
@@ -38,7 +26,7 @@ stdenv.mkDerivation rec {
     make check
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/fmang/opustags";
     description = "Ogg Opus tags editor";
     platforms = platforms.all;
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/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/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/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/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/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/browsers/chromium/upstream-info.json b/pkgs/applications/networking/browsers/chromium/upstream-info.json
index 660682e17a7f..8baa7cc7b4fb 100644
--- a/pkgs/applications/networking/browsers/chromium/upstream-info.json
+++ b/pkgs/applications/networking/browsers/chromium/upstream-info.json
@@ -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/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/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/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/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/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/version-management/git-repo/default.nix b/pkgs/applications/version-management/git-repo/default.nix
index 56e4f30d9279..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.11";
+  version = "2.11.1";
 
   src = fetchFromGitHub {
     owner = "android";
     repo = "tools_repo";
     rev = "v${version}";
-    sha256 = "sha256-eb35yNsE0F+xPA1j7Czag1aOZO4cr6OeRsBlCrQwCRk=";
+    sha256 = "sha256-6XsjxTYmjr/3smwwS7c+Mq1sqfgKAhWzHOY8TWlIKHU=";
   };
 
   patches = [ ./import-ssl-module.patch ];
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/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/virtualization/nvidia-docker/default.nix b/pkgs/applications/virtualization/nvidia-docker/default.nix
index 3f75e36ccae6..0df2efebd820 100644
--- a/pkgs/applications/virtualization/nvidia-docker/default.nix
+++ b/pkgs/applications/virtualization/nvidia-docker/default.nix
@@ -6,15 +6,23 @@
 , makeWrapper
 , buildGoModule
 , buildGoPackage
-, git
 , 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 = buildGoPackage rec {
-    pname = "nvidia-container-toolkit";
+    pname = "nvidia-container-runtime";
     version = "3.4.0";
     src = fetchFromGitHub {
       owner = "NVIDIA";
@@ -74,10 +82,18 @@ stdenv.mkDerivation rec {
   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 = {
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/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/build-support/vm/deb/deb-closure.pl b/pkgs/build-support/vm/deb/deb-closure.pl
index bed397d6f07e..fe23025df1d8 100644
--- a/pkgs/build-support/vm/deb/deb-closure.pl
+++ b/pkgs/build-support/vm/deb/deb-closure.pl
@@ -50,7 +50,7 @@ sub getDeps {
 # virtual dependencies.
 my %provides;
 
-foreach my $cdata (values %packages) {
+foreach my $cdata (sort {$a->{Package} cmp $b->{Package}} (values %packages)) {
     if (defined $cdata->{Provides}) {
         my @provides = getDeps(Dpkg::Deps::deps_parse($cdata->{Provides}));
         foreach my $name (@provides) {
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/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/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/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 e4327e354b05..8fc6aee0aa1e 100644
--- a/pkgs/development/haskell-modules/configuration-common.nix
+++ b/pkgs/development/haskell-modules/configuration-common.nix
@@ -1503,6 +1503,11 @@ 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;
 
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/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/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 7d120f604d8d..956b34fd93dd 100644
--- a/pkgs/development/libraries/libplacebo/default.nix
+++ b/pkgs/development/libraries/libplacebo/default.nix
@@ -11,14 +11,20 @@
 , glslang
 , lcms2
 , epoxy
+, libGL
+, xorg
 }:
 
 stdenv.mkDerivation rec {
   pname = "libplacebo";
-  version = "2.72.2";
+  version = "3.104.0";
 
   patches = [
-    ./glsl-import.patch
+    (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 {
@@ -26,7 +32,7 @@ stdenv.mkDerivation rec {
     owner = "videolan";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1ijqpx1pagc6qg63ynqrinvckwc8aaw1i0lx48gg5szwk8afib4i";
+    sha256 = "0p5mx8ch7cp7b54yrkl4fs8bcvqma1h461gx6ps4kagn4dsx8asb";
   };
 
   nativeBuildInputs = [
@@ -43,6 +49,8 @@ stdenv.mkDerivation rec {
     glslang
     lcms2
     epoxy
+    libGL
+    xorg.libX11
   ];
 
   mesonFlags = [
diff --git a/pkgs/development/libraries/libplacebo/glsl-import.patch b/pkgs/development/libraries/libplacebo/glsl-import.patch
deleted file mode 100644
index f2ef362c65b1..000000000000
--- a/pkgs/development/libraries/libplacebo/glsl-import.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/src/glsl/glslang.cc b/src/glsl/glslang.cc
-index f701acc..c64cbf5 100644
---- a/src/glsl/glslang.cc
-+++ b/src/glsl/glslang.cc
-@@ -26,7 +26,7 @@ extern "C" {
- 
- #include <glslang/Include/ResourceLimits.h>
- #include <glslang/Public/ShaderLang.h>
--#include <SPIRV/GlslangToSpv.h>
-+#include <glslang/SPIRV/GlslangToSpv.h>
- 
- #include "glslang.h"
- 
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/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/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/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/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/awkward0/default.nix b/pkgs/development/python-modules/awkward0/default.nix
index 4441d131e637..c248c81da751 100644
--- a/pkgs/development/python-modules/awkward0/default.nix
+++ b/pkgs/development/python-modules/awkward0/default.nix
@@ -9,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "awkward0";
-  version = "0.15.1";
+  version = "0.15.2";
 
   src = fetchFromGitHub {
     owner = "scikit-hep";
     repo = "awkward-0.x";
     rev = version;
-    sha256 = "17zrw25h6g5m4ik1c5piqb7q2bxrshfm4hm3lzfz4s8gi0xjm5gz";
+    sha256 = "sha256-C6/byIGcabGjws5QI9sh5BO2M4Lhqkooh4mSjUEKCKU=";
   };
 
   nativeBuildInputs = [ pytestrunner ];
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 9cd39c34ea04..aee130f789e5 100644
--- a/pkgs/development/python-modules/demjson/default.nix
+++ b/pkgs/development/python-modules/demjson/default.nix
@@ -1,17 +1,19 @@
-{ 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";
   };
 
-  doCheck = false;
-  pythonImportsCheck = [ "demjson" ];
+  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)";
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/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/graphene/default.nix b/pkgs/development/python-modules/graphene/default.nix
index 860bb504cf1a..301ffca03477 100644
--- a/pkgs/development/python-modules/graphene/default.nix
+++ b/pkgs/development/python-modules/graphene/default.nix
@@ -15,13 +15,13 @@
 
 buildPythonPackage rec {
   pname = "graphene";
-  version = "3.0.0b6";
+  version = "3.0.0b7";
 
   src = fetchFromGitHub {
     owner = "graphql-python";
     repo = "graphene";
     rev = "v${version}";
-    sha256 = "1q6qmyc4jbi9cws4d98x7bgi7gppd09dmzijkb19fwbh4giy938r";
+    sha256 = "sha256-bVCCLPnV5F8PqLMg3GwcpwpGldrxsU+WryL6gj6y338=";
   };
 
   propagatedBuildInputs = [
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/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/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/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/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/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/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/uproot3/default.nix b/pkgs/development/python-modules/uproot3/default.nix
index 0d0c2365b637..1150c76d2b48 100644
--- a/pkgs/development/python-modules/uproot3/default.nix
+++ b/pkgs/development/python-modules/uproot3/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "uproot3";
-  version = "3.14.1";
+  version = "3.14.2";
 
   src = fetchFromGitHub {
     owner = "scikit-hep";
     repo = "uproot3";
     rev = version;
-    sha256 = "1npwh4l96wg3m24jhfc8i84nfwfc18flrmymf80fx101wmpi2qz8";
+    sha256 = "sha256-6/e+qMgwyFUo8MRRTAaGp9WLPxE2fqMEK4paq26Epzc=";
   };
 
   nativeBuildInputs = [ pytestrunner ];
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/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/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/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/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/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/games/quake3/ioquake/default.nix b/pkgs/games/quake3/ioquake/default.nix
index 285fb7e68840..133e679b460c 100644
--- a/pkgs/games/quake3/ioquake/default.nix
+++ b/pkgs/games/quake3/ioquake/default.nix
@@ -1,19 +1,19 @@
-{ stdenv, fetchFromGitHub, which, pkgconfig, SDL2, libGL, openalSoft
+{ stdenv, fetchFromGitHub, which, pkg-config, SDL2, libGL, openalSoft
 , curl, speex, opusfile, libogg, libvorbis, libopus, libjpeg, mumble, freetype
 }:
 
 stdenv.mkDerivation {
   pname = "ioquake3-git";
-  version = "2019-05-29";
+  version = "2020-12-26";
 
   src = fetchFromGitHub {
     owner = "ioquake";
     repo = "ioq3";
-    rev = "350b8f9c7c88c002dccea4f0350f1919b86d3b4e";
-    sha256 = "17qkqi22f2fyh6bnfcf1zz2lycgv08d6aw52sf0hqw7r3qq86d08";
+    rev = "05180e32dcfb9a4552e1b9652b56127248a9950c";
+    sha256 = "0hcxxa1ambpdwhg7nb5hvb32g49rl5p9dcflpzcv5cax9drn166i";
   };
 
-  nativeBuildInputs = [ which pkgconfig ];
+  nativeBuildInputs = [ which pkg-config ];
   buildInputs = [
     SDL2 libGL openalSoft curl speex opusfile libogg libvorbis libopus libjpeg
     freetype mumble
@@ -34,7 +34,7 @@ stdenv.mkDerivation {
   meta = with stdenv.lib; {
     homepage = "https://ioquake3.org/";
     description = "First person shooter engine based on the Quake 3: Arena and Quake 3: Team Arena";
-    license = licenses.gpl2;
+    license = licenses.gpl2Only;
     platforms = platforms.linux;
     maintainers = with maintainers; [ rvolosatovs eelco abbradar ];
   };
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/emulators/oberon-risc-emu/default.nix b/pkgs/misc/emulators/oberon-risc-emu/default.nix
new file mode 100644
index 000000000000..14c213fcc0ae
--- /dev/null
+++ b/pkgs/misc/emulators/oberon-risc-emu/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, SDL2 }:
+
+stdenv.mkDerivation {
+  pname = "oberon-risc-emu";
+  version = "unstable-2020-08-18";
+
+  src = fetchFromGitHub {
+    owner = "pdewacht";
+    repo = "oberon-risc-emu";
+    rev = "26c8ac5737c71811803c87ad51f1f0d6e62e71fe";
+    sha256 = "1iriix3cfcpbkjb5xjb4ysh592xppgprwzp3b6qhwcx44g7kdvxq";
+  };
+
+  buildInputs = [ SDL2 ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mv risc $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    homepage    = "https://github.com/pdewacht/oberon-risc-emu/";
+    description = "Emulator for the Oberon RISC machine";
+    license     = licenses.isc;
+    maintainers = with maintainers; [ siraben ];
+  };
+}
diff --git a/pkgs/misc/vim-plugins/generated.nix b/pkgs/misc/vim-plugins/generated.nix
index e16a42f95eb1..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-06";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "dense-analysis";
       repo = "ale";
-      rev = "4c454c96a9d142475b155a94cc24fad34eca26b2";
-      sha256 = "0xjacj8pw25qrzasgiwpisrc2fbh4k7ljpn1pq07z2h756cn54lf";
+      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";
@@ -293,12 +305,12 @@ let
 
   brainfuck-vim = buildVimPluginFrom2Nix {
     pname = "brainfuck-vim";
-    version = "2021-01-07";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "fruit-in";
       repo = "brainfuck-vim";
-      rev = "ada4fce239ab5386aee51a9453cb0fafc7c2626d";
-      sha256 = "1mm82m7p3khykd1fkag4ppvf2xgnqj8jbhdq7gq06ys1wxzw9rhj";
+      rev = "4e5344436f480d65d99c89d623e5564d71cdd0f7";
+      sha256 = "1p5kyy6z2nrnxdvwnpcvbd1xk9r0pqr3hayz3p7c2zi30rj0fdx5";
     };
     meta.homepage = "https://github.com/fruit-in/brainfuck-vim/";
   };
@@ -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/";
   };
@@ -810,12 +822,12 @@ let
 
   defx-nvim = buildVimPluginFrom2Nix {
     pname = "defx-nvim";
-    version = "2021-01-06";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "defx.nvim";
-      rev = "6bf297376aa9ad76500778081ed2ff92fef72301";
-      sha256 = "0k0iyvyg1cbalml1sv8vvs47k4af8vvz0gk6vba6yzjf72v6vj2d";
+      rev = "a9259687391457c71fa8bcbf609ca83742b6d277";
+      sha256 = "0smlfvxdily3vz9i3vr0b5r3410zp5asf13cbjxxv219fqa3z22a";
     };
     meta.homepage = "https://github.com/Shougo/defx.nvim/";
   };
@@ -858,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/";
   };
@@ -1100,12 +1112,12 @@ let
 
   deoplete-nvim = buildVimPluginFrom2Nix {
     pname = "deoplete-nvim";
-    version = "2021-01-07";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "deoplete.nvim";
-      rev = "028ebd60d5ad963bf8f77e13c2a85e9edb190f48";
-      sha256 = "0qy6knv5c4v568lvz3fh3ca2lcaym19hi0ywwvj6xyrllil2kk4b";
+      rev = "0901b1886208a32880b92f22bf8f38a17e95045a";
+      sha256 = "0r66sjkgbbhgdalqnfyzy3ym3jiikyd10pi5236aqga75vysvk0s";
     };
     meta.homepage = "https://github.com/Shougo/deoplete.nvim/";
   };
@@ -1306,12 +1318,12 @@ let
 
   fern-vim = buildVimPluginFrom2Nix {
     pname = "fern-vim";
-    version = "2021-01-06";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "lambdalisue";
       repo = "fern.vim";
-      rev = "591e2001fe0546ba28cc7dd614c40f5d92050f92";
-      sha256 = "0cwzsqfyj4bk8f3y9aw9rmfx99gg760apkj7ppww14drc6lzfq09";
+      rev = "100764195f8cea2edf8a8c6a69a3cb707e35cf6d";
+      sha256 = "099mk22287zjgc0sy0v9vsw8l9ssa2rr56jasxpd6yswppafdrs7";
     };
     meta.homepage = "https://github.com/lambdalisue/fern.vim/";
   };
@@ -1413,6 +1425,18 @@ 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 = "2021-01-07";
@@ -2098,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";
@@ -2110,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";
@@ -2748,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/";
   };
@@ -2784,36 +2832,36 @@ let
 
   nvim-lspconfig = buildVimPluginFrom2Nix {
     pname = "nvim-lspconfig";
-    version = "2021-01-07";
+    version = "2021-01-09";
     src = fetchFromGitHub {
       owner = "neovim";
       repo = "nvim-lspconfig";
-      rev = "fa2ccc10d5a7b390c1d808ddf74dce5158debca4";
-      sha256 = "1mdnk4vvxk9qzcinzw64fck87a3dg5f21jm8203zhgj94ylc851y";
+      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 = "99e153bb534f5ec5e24ef6d35366d9b29f409ee3";
-      sha256 = "1p0an1j7qw1rl5hkv6mvqvdzihxanf0vxf2ryih2cnmmys3cw9v1";
+      rev = "426fc6549aff1d5a1b84127dd80807a4f134d4ab";
+      sha256 = "0yadrawg9q49fiizn4k8ng9hsp9vi2l0bw73s6ib0szg641k1w42";
     };
     meta.homepage = "https://github.com/dstein64/nvim-scrollview/";
   };
@@ -2844,12 +2892,12 @@ let
 
   nvim-treesitter = buildVimPluginFrom2Nix {
     pname = "nvim-treesitter";
-    version = "2021-01-07";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "nvim-treesitter";
       repo = "nvim-treesitter";
-      rev = "2e8621ff1afa2284de3df316ecd0baf8e9195927";
-      sha256 = "0yb5lf29j3ddi9ia7lld8ps662r7kw2znxhp2pyyjlgnd76m08nr";
+      rev = "00ea65199e316aec5934cc2666ec9738e410b711";
+      sha256 = "1q37hd8cggx863d91ld9r4s51wld73pqgq93zwlg22i7qyl2v423";
     };
     meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter/";
   };
@@ -3782,12 +3830,12 @@ let
 
   telescope-nvim = buildVimPluginFrom2Nix {
     pname = "telescope-nvim";
-    version = "2021-01-06";
+    version = "2021-01-09";
     src = fetchFromGitHub {
       owner = "nvim-telescope";
       repo = "telescope.nvim";
-      rev = "1d6195ff643ed153eb0f233b32f1becc68c79ee6";
-      sha256 = "1ma2m0jx50kdkvdibagqlqqap0phkjnascimfiandpzcsl3r6939";
+      rev = "de80a9837cd1d207981c1f6dbf504436f8bfee13";
+      sha256 = "1zasdfn982akcgyyxvwwyp9vvh4p7kyi1gfkc57rj6jqkygwicsm";
     };
     meta.homepage = "https://github.com/nvim-telescope/telescope.nvim/";
   };
@@ -3963,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/";
   };
@@ -4275,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/";
   };
@@ -4467,7 +4515,7 @@ let
 
   vim-capslock = buildVimPluginFrom2Nix {
     pname = "vim-capslock";
-    version = "2021-01-07";
+    version = "2019-11-13";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-capslock";
@@ -4515,12 +4563,12 @@ let
 
   vim-clap = buildVimPluginFrom2Nix {
     pname = "vim-clap";
-    version = "2021-01-05";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "liuchengxu";
       repo = "vim-clap";
-      rev = "83cac4972caef144d0e947025ff43af6fd2becac";
-      sha256 = "18cackh5rrkyg7ffhwp4vca6srr1hlj3gximjdwc6krcgq0v0r0s";
+      rev = "284ef9a0b7776ab34d387fb403d500371a65cbda";
+      sha256 = "06jc831kcbpdh4k3890sh2srisbgljr0azx8g1g9fq0328qqnpbs";
     };
     meta.homepage = "https://github.com/liuchengxu/vim-clap/";
   };
@@ -4947,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/";
   };
@@ -5091,12 +5139,12 @@ let
 
   vim-floaterm = buildVimPluginFrom2Nix {
     pname = "vim-floaterm";
-    version = "2021-01-07";
+    version = "2021-01-09";
     src = fetchFromGitHub {
       owner = "voldikss";
       repo = "vim-floaterm";
-      rev = "5e218d8387b7ca1ade1c625a1b81d45996cc21ae";
-      sha256 = "1sgdyjwq5h0m6d40aapz9n2z59jc92vpgj04d5ciisifwh54aaga";
+      rev = "428a59e4ec5061cae34dacd865bd831ddee7a446";
+      sha256 = "0jfdbaxjizb127s8rhx2ilhz48cg5xahv77rhm9sa4v9lky8zgrr";
     };
     meta.homepage = "https://github.com/voldikss/vim-floaterm/";
   };
@@ -5185,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";
@@ -5247,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/";
   };
@@ -5885,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/";
   };
@@ -6594,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/";
   };
@@ -6918,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/";
   };
@@ -7759,12 +7819,12 @@ let
 
   vimspector = buildVimPluginFrom2Nix {
     pname = "vimspector";
-    version = "2021-01-07";
+    version = "2021-01-09";
     src = fetchFromGitHub {
       owner = "puremourning";
       repo = "vimspector";
-      rev = "07ea3880acf5977075831c64536e683ddb2fed89";
-      sha256 = "1gkvagird3xa47gicpc739s4c5p5358yvp16fxx2l98jzzi7wvcj";
+      rev = "5303de81954b854161dffb76da37f8508c9c1476";
+      sha256 = "0xkgirbb2rw4b0h4qdv8f2lsvadqcyqrclxd8a3i8r2dc4xdgp3p";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/puremourning/vimspector/";
@@ -7772,12 +7832,12 @@ let
 
   vimtex = buildVimPluginFrom2Nix {
     pname = "vimtex";
-    version = "2021-01-07";
+    version = "2021-01-08";
     src = fetchFromGitHub {
       owner = "lervag";
       repo = "vimtex";
-      rev = "d219436e224960b8e4c11db8a1e482ef52f8d63b";
-      sha256 = "00brsffbs6550k876bbgxl7v8d4dqs9vca3ghncm3wcjpjs2qhar";
+      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 63dee14b4692..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
@@ -393,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
@@ -405,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
@@ -560,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 137fc4265e19..42983053c1ac 100644
--- a/pkgs/misc/vscode-extensions/default.nix
+++ b/pkgs/misc/vscode-extensions/default.nix
@@ -309,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";
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 72849c58db80..91a6b42ac415 100644
--- a/pkgs/os-specific/linux/kernel/hardened/patches.json
+++ b/pkgs/os-specific/linux/kernel/hardened/patches.json
@@ -1,27 +1,27 @@
 {
     "4.14": {
-        "extra": "",
-        "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": {
         "extra": ".a",
-        "name": "linux-hardened-4.19.165.a.patch",
-        "sha256": "06v34jaj4jg6f3v05wbkkfnr69ahxqyyq0gam4ma3wgm74x6cf3s",
-        "url": "https://github.com/anthraxx/linux-hardened/releases/download/4.19.165.a/linux-hardened-4.19.165.a.patch"
+        "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": {
         "extra": ".a",
-        "name": "linux-hardened-5.10.5.a.patch",
-        "sha256": "1fq2n60brhi6wjazkdgj2aqc4maskvlymbznl03hvj0x5kahjxvx",
-        "url": "https://github.com/anthraxx/linux-hardened/releases/download/5.10.5.a/linux-hardened-5.10.5.a.patch"
+        "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": {
         "extra": ".a",
-        "name": "linux-hardened-5.4.87.a.patch",
-        "sha256": "01hpww6lm00iry8z4z86hh86x66h3xbmxknxhmmhh2zwz6ahkmfd",
-        "url": "https://github.com/anthraxx/linux-hardened/releases/download/5.4.87.a/linux-hardened-5.4.87.a.patch"
+        "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": "",
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-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/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/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix
index 5429fa79925d..c961ffe538c6 100644
--- a/pkgs/servers/home-assistant/component-packages.nix
+++ b/pkgs/servers/home-assistant/component-packages.nix
@@ -15,7 +15,7 @@
     "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; [ ];
@@ -838,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/monitoring/prometheus/wireguard-exporter.nix b/pkgs/servers/monitoring/prometheus/wireguard-exporter.nix
index 0f303f669af9..0cbfc89bd5d4 100644
--- a/pkgs/servers/monitoring/prometheus/wireguard-exporter.nix
+++ b/pkgs/servers/monitoring/prometheus/wireguard-exporter.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "wireguard-exporter";
-  version = "3.3.0";
+  version = "3.4.2";
 
   src = fetchFromGitHub {
     owner = "MindFlavor";
     repo = "prometheus_wireguard_exporter";
     rev = version;
-    sha256 = "1c6zadqnn4b83yglcdn1hw54jj1c4makbdy6fli3cfb7sha1ynml";
+    sha256 = "sha256-nzY+pCkj0/m7cWPq5+xvQ1b1/PqdI6QuxNdTRT030tY=";
   };
 
-  cargoSha256 = "148982ypkxhab2kmijk9zwwi5l6nk4rcdwaz0r1j9fni47q49f35";
+  cargoSha256 = "sha256-L2ohowt5+F3XJSzoihtJ2prW2bzZiNMUL9vqHIZBy1M=";
 
   buildInputs = lib.optional stdenv.isDarwin Security;
 
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/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/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/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/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/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/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/backup/bupstash/default.nix b/pkgs/tools/backup/bupstash/default.nix
new file mode 100644
index 000000000000..9801d8ded9c4
--- /dev/null
+++ b/pkgs/tools/backup/bupstash/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, installShellFiles, rustPlatform, ronn, pkg-config, libsodium }:
+rustPlatform.buildRustPackage rec {
+  pname = "bupstash";
+  version = "0.6.4";
+
+  src = fetchFromGitHub {
+    owner = "andrewchambers";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "013k8pr4865f5rp66fjf3a8069kmd29brxv0l20z571gy2kxs5p9";
+  };
+
+  cargoSha256 = "17cdi93q71wsqqfkpz6mxcaqqhqclsbns0g1r9mni39nikw7amv1";
+
+  nativeBuildInputs = [ ronn pkg-config installShellFiles ];
+  buildInputs = [ libsodium ];
+
+  postBuild = ''
+    RUBYOPT="-KU -E utf-8:utf-8" ronn doc/man/*.md
+  '';
+
+  postInstall = ''
+    installManPage doc/man/*.[1-9]
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Easy and efficient encrypted backups";
+    homepage = "https://bupstash.io";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ andrewchambers ];
+  };
+}
diff --git a/pkgs/tools/inputmethods/evscript/default.nix b/pkgs/tools/inputmethods/evscript/default.nix
new file mode 100644
index 000000000000..95f322ed8c68
--- /dev/null
+++ b/pkgs/tools/inputmethods/evscript/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "evscript";
+  version = "git-${builtins.substring 0 7 src.rev}";
+
+  src = fetchFromGitHub {
+    owner = "myfreeweb";
+    repo = pname;
+    rev = "47f86f0d15add2af785ea1ff47f24d130026d1b4";
+    sha256 = "1xm8297k0d8d0aq7fxgmibr4qva4d02cb6gnnlzq77jcmnknxv14";
+  };
+
+  cargoSha256 = "1dcyhxfyq0nrjl05g1s9pjkg7vqw63wbdhlskrdcvxncmci3s7rp";
+  verifyCargoDeps = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/myfreeweb/${pname}";
+    description = "A tiny sandboxed Dyon scripting environment for evdev input devices";
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ milesbreslin ];
+    platforms = platforms.linux;
+  };
+}
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/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/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/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/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 620a4bbba432..42b6c9d60268 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1412,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;
@@ -1826,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 { };
@@ -2492,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 {};
 
@@ -2882,6 +2888,8 @@ in
 
   bup = callPackage ../tools/backup/bup { };
 
+  bupstash = callPackage ../tools/backup/bupstash { };
+
   burp = callPackage ../tools/backup/burp { };
 
   buku = callPackage ../applications/misc/buku { };
@@ -3084,6 +3092,8 @@ in
 
   evdevremapkeys = callPackage ../tools/inputmethods/evdevremapkeys { };
 
+  evscript = callPackage ../tools/inputmethods/evscript { };
+
   gebaar-libinput = callPackage ../tools/inputmethods/gebaar-libinput { };
 
   libpinyin = callPackage ../development/libraries/libpinyin { };
@@ -4969,9 +4979,7 @@ in
 
   ipfs = callPackage ../applications/networking/ipfs { };
   ipfs-migrator = callPackage ../applications/networking/ipfs-migrator { };
-  ipfs-cluster = callPackage ../applications/networking/ipfs-cluster {
-    buildGoModule = buildGo114Module;
-  };
+  ipfs-cluster = callPackage ../applications/networking/ipfs-cluster { };
 
   ipget = callPackage ../applications/networking/ipget { };
 
@@ -6293,6 +6301,8 @@ in
 
   nzbget = callPackage ../tools/networking/nzbget { };
 
+  nzbhydra2 = callPackage ../servers/nzbhydra2 { };
+
   oathToolkit = callPackage ../tools/security/oath-toolkit { };
 
   oatpp = callPackage ../development/libraries/oatpp { };
@@ -8895,6 +8905,8 @@ in
 
   oil = callPackage ../shells/oil { };
 
+  oksh = callPackage ../shells/oksh { };
+
   pash = callPackage ../shells/pash { };
 
   tcsh = callPackage ../shells/tcsh { };
@@ -10607,7 +10619,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 { };
 
@@ -14423,8 +14435,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 { };
@@ -22157,6 +22174,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 { };
@@ -23564,6 +23584,8 @@ in
     inherit (gnome2) libglade;
   };
 
+  oberon-risc-emu = callPackage ../misc/emulators/oberon-risc-emu { };
+
   obs-studio = libsForQt5.callPackage ../applications/video/obs-studio { };
 
   obs-wlrobs = callPackage ../applications/video/obs-studio/wlrobs.nix { };
@@ -25553,6 +25575,8 @@ in
 
   xrestop = callPackage ../tools/X11/xrestop { };
 
+  xrgears = callPackage ../applications/graphics/xrgears { };
+
   xsd = callPackage ../development/libraries/xsd { };
 
   xscope = callPackage ../applications/misc/xscope { };
@@ -27027,6 +27051,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 { };
@@ -27421,7 +27447,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
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 b88a6e37fbe8..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 teams;
+  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 ];
     };
   };
 
@@ -1397,7 +1397,7 @@ let
     meta = {
       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,7 +2795,7 @@ let
     };
     meta = {
       description = "Base class for hierarchally ordered objects";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      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,7 +3404,7 @@ let
     propagatedBuildInputs = [ IOStringy ];
     meta = {
       description = "A module for reading .ini-style configuration files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      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
     };
   };
 
@@ -7845,7 +7845,7 @@ let
     meta = {
       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
     };
   };
 
@@ -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,7 +8059,7 @@ let
     })];
     propagatedBuildInputs = [ ClassAccessor ];
     meta = {
-      license = stdenv.lib.licenses.free; # Same as Perl
+      license = lib.licenses.free; # Same as Perl
       description = "Pid File Manipulation";
       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,7 +8233,7 @@ let
     };
     meta = {
       description = "Perl extension for reading from continously updated files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
       maintainers = teams.deshaw.members;
     };
   };
@@ -8248,7 +8248,7 @@ 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 ];
+      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 ];
     };
   };
 
@@ -8632,7 +8632,7 @@ let
     meta = {
       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 ];
     };
   };
@@ -8943,7 +8943,7 @@ let
     meta = {
       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 ];
     };
   };
@@ -11155,7 +11155,7 @@ let
     meta = {
       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 ];
     };
   };
 
@@ -12049,7 +12049,7 @@ let
     meta = {
       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 = 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,7 +16038,7 @@ let
     '';
     meta = {
       description = "General function library for safer, more secure programming";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      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,7 +16133,7 @@ let
     propagatedBuildInputs = [ ClassEHierarchy Paranoid ];
     meta = {
       description = "Parser/Generator of human-readable conf files";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      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,7 +16542,7 @@ let
     meta = {
       homepage = "http://ldap.perl.org/";
       description = "LDAP client library";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      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,7 +16596,7 @@ let
     };
     meta = {
       description = "Pure-Perl Core-Only replacement for pkg-config";
-      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      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 ];
     };
   };
 
@@ -16815,7 +16815,7 @@ let
     meta = {
       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
@@ -16845,7 +16845,7 @@ let
     meta = {
       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 b9923d6998f1..95b6d96644d6 100644
--- a/pkgs/top-level/php-packages.nix
+++ b/pkgs/top-level/php-packages.nix
@@ -86,6 +86,8 @@ lib.makeScope pkgs.newScope (self: with self; {
       sha256 = "108ds92620dih5768z19hi0jxfa7wfg5hdvyyvpapir87c0ap914";
     });
 
+    pdlib = callPackage ../development/php-packages/pdlib { };
+
     pcov = callPackage ../development/php-packages/pcov { };
 
     pcs = buildPecl {
@@ -394,10 +396,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 16a5876bf878..9dac5041b2aa 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -265,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 { };
@@ -373,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; };
@@ -465,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 { };
@@ -1890,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 { };
@@ -3907,6 +3917,8 @@ in {
 
   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;
@@ -6220,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 { };
@@ -7967,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 { };